diff options
Diffstat (limited to 'ui.py')
-rw-r--r-- | ui.py | 112 |
1 files changed, 57 insertions, 55 deletions
@@ -50,6 +50,7 @@ from p5_button import P5Button from p5_button import Polygon from p5_button import Button from glive import LiveVideoWindow +from glivex import SlowLiveVideoWindow from gplay import PlayVideoWindow from recorded import Recorded from button import RecdButton @@ -92,7 +93,13 @@ class UI: self.piph = self.__class__.dim_PIPH #ui modes + + # True when we're in full-screen mode, False otherwise self.FULLSCREEN = False + + # True when we're showing live video feed in the primary screen + # area, False otherwise (even when we are still showing live video + # in a p-i-p) self.LIVEMODE = True self.LAST_MODE = -1 @@ -103,7 +110,11 @@ class UI: self.LAST_TRANSCODING = False self.TRANSCODING = False self.MESHING = False + + # RECD_INFO_ON is True when the 'info' for a recording is being + # display on-screen (who recorded it, tags, etc), and False otherwise. self.RECD_INFO_ON = False + self.UPDATE_DURATION_ID = 0 self.UPDATE_TIMER_ID = 0 self.COUNTINGDOWN = False @@ -367,6 +378,16 @@ class UI: self.livePhotoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.livePhotoWindow.connect("visibility-notify-event", self._visibleNotifyCb) + #video playback windows + self.playOggWindow = PlayVideoWindow(Constants.colorBlack.gColor) + self.addToWindowStack( self.playOggWindow, self.windowStack[len(self.windowStack)-1] ) + #self.playOggWindow.set_gplay(self.ca.gplay) + self.ca.gplay.window = self.playOggWindow + self.playOggWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) + self.playOggWindow.connect("button_release_event", self._mediaClickedForPlayback) + self.playOggWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) + self.playOggWindow.connect("visibility-notify-event", self._visibleNotifyCb) + #border behind self.pipBgdWindow = gtk.Window() self.pipBgdWindow.modify_bg( gtk.STATE_NORMAL, Constants.colorWhite.gColor ) @@ -381,28 +402,13 @@ class UI: self.liveVideoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.liveVideoWindow.connect("visibility-notify-event", self._visibleNotifyCb) - #video playback windows - self.playOggWindow = PlayVideoWindow(Constants.colorBlack.gColor) - self.addToWindowStack( self.playOggWindow, self.windowStack[len(self.windowStack)-1] ) - #self.playOggWindow.set_gplay(self.ca.gplay) - self.ca.gplay.window = self.playOggWindow - self.playOggWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) - self.playOggWindow.connect("button_release_event", self._mediaClickedForPlayback) - self.playOggWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) - self.playOggWindow.connect("visibility-notify-event", self._visibleNotifyCb) - - #border behind - self.pipBgdWindow2 = gtk.Window() - self.pipBgdWindow2.modify_bg( gtk.STATE_NORMAL, Constants.colorWhite.gColor ) - self.pipBgdWindow2.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorWhite.gColor ) - self.addToWindowStack( self.pipBgdWindow2, self.windowStack[len(self.windowStack)-1] ) - - self.playLiveWindow = LiveVideoWindow(Constants.colorBlack.gColor) - self.addToWindowStack( self.playLiveWindow, self.windowStack[len(self.windowStack)-1] ) - self.playLiveWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) - self.playLiveWindow.connect("button_release_event", self._playLiveButtonReleaseCb) - self.playLiveWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) - self.playLiveWindow.connect("visibility-notify-event", self._visibleNotifyCb) + self.slowLiveVideoWindow = SlowLiveVideoWindow(Constants.colorBlack.gColor) + self.addToWindowStack( self.slowLiveVideoWindow, self.windowStack[len(self.windowStack)-1] ) + self.slowLiveVideoWindow.set_glivex(self.ca.glivex) + self.slowLiveVideoWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) + self.slowLiveVideoWindow.connect("button_release_event", self._returnButtonReleaseCb) + self.slowLiveVideoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) + self.slowLiveVideoWindow.connect("visibility-notify-event", self._visibleNotifyCb) self.recordWindow = RecordWindow(self) self.addToWindowStack( self.recordWindow, self.windowStack[len(self.windowStack)-1] ) @@ -458,7 +464,7 @@ class UI: if (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE and widget == self.playOggWindow): temp_ACTIVE = False - if ( self.LIVEMODE and widget == self.playLiveWindow): + if ( self.LIVEMODE and widget == self.liveVideoWindow): temp_ACTIVE = False @@ -482,8 +488,6 @@ class UI: self.pipBgdWindow.resize( pgdDim[0], pgdDim[1] ) self.liveVideoWindow.resize( imgDim[0], imgDim[1] ) self.playOggWindow.resize( imgDim[0], imgDim[1] ) - self.playLiveWindow.resize( imgDim[0], imgDim[1] ) - self.pipBgdWindow2.resize( pgdDim[0], pgdDim[1] ) self.recordWindow.resize( eyeDim[0], eyeDim[1] ) self.maxWindow.resize( maxDim[0], maxDim[1] ) self.progressWindow.resize( prgDim[0], prgDim[1] ) @@ -541,8 +545,8 @@ class UI: def hideWidgets( self ): self.moveWinOffscreen( self.maxWindow ) self.moveWinOffscreen( self.pipBgdWindow ) - self.moveWinOffscreen( self.pipBgdWindow2 ) self.moveWinOffscreen( self.infWindow ) + self.moveWinOffscreen( self.slowLiveVideoWindow ) if (self.FULLSCREEN): self.moveWinOffscreen( self.recordWindow ) @@ -554,7 +558,7 @@ class UI: self.moveWinOffscreen( self.liveVideoWindow ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE): - self.moveWinOffscreen( self.playLiveWindow ) + self.moveWinOffscreen( self.liveVideoWindow ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): if (not self.LIVEMODE): self.moveWinOffscreen( self.liveVideoWindow ) @@ -830,6 +834,13 @@ class UI: self.resumeLiveVideo() + def _returnButtonReleaseCb(self, widget, event): + self.ca.gplay.stop() + self.ca.glivex.stop() + self.ca.glive.play() + self.resumeLiveVideo() + + def resumeLiveVideo( self ): self.livePhotoCanvas.setImage( None ) @@ -862,7 +873,7 @@ class UI: self.showLiveVideoTags() self.LIVEMODE = True - self.startLiveVideo( self.playLiveWindow, self.ca.glive.PIPETYPE_XV_VIDEO_DISPLAY_RECORD, False ) + self.startLiveVideo( False ) self.updateVideoComponents() @@ -926,12 +937,7 @@ class UI: #set up the x & xv x-ition (if need be) self.ca.gplay.stop() - if (self.ca.m.MODE == Constants.MODE_PHOTO): - self.startLiveVideo( self.liveVideoWindow, self.ca.glive.PIPETYPE_XV_VIDEO_DISPLAY_RECORD, True ) - elif (self.ca.m.MODE == Constants.MODE_VIDEO): - self.startLiveVideo( self.playLiveWindow, self.ca.glive.PIPETYPE_XV_VIDEO_DISPLAY_RECORD, True ) - elif (self.ca.m.MODE == Constants.MODE_AUDIO): - self.startLiveVideo( self.liveVideoWindow, self.ca.glive.PIPETYPE_AUDIO_RECORD, True ) + self.startLiveVideo( True ) bottomKid = self.bottomCenter.get_child() if (bottomKid != None): @@ -944,19 +950,16 @@ class UI: self.resetWidgetFadeTimer() - def startLiveVideo(self, window, pipetype, force): + def startLiveVideo(self, force): #We need to know which window and which pipe here #if returning from another activity, active won't be false and needs to be to get started - if (self.ca.glive.getPipeType() == pipetype - and self.ca.glive.window == window + if (self.ca.glive.window == self.liveVideoWindow and self.ca.props.active and not force): return - self.ca.glive.setPipeType( pipetype ) - window.set_glive(self.ca.glive) - self.ca.glive.stop() + self.liveVideoWindow.set_glive(self.ca.glive) self.ca.glive.play() @@ -1326,8 +1329,8 @@ class UI: pos.append({"position":"inb", "window":self.livePhotoWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): - pos.append({"position":"pgd", "window":self.pipBgdWindow2} ) - pos.append({"position":"pip", "window":self.playLiveWindow} ) + pos.append({"position":"pgd", "window":self.pipBgdWindow} ) + pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) pos.append({"position":"inb", "window":self.playOggWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): @@ -1352,14 +1355,14 @@ class UI: pos.append({"position":"tmr", "window":self.progressWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (self.LIVEMODE): - pos.append({"position":"img", "window":self.playLiveWindow} ) + pos.append({"position":"img", "window":self.liveVideoWindow} ) pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) pos.append({"position":"prg", "window":self.progressWindow} ) else: pos.append({"position":"img", "window":self.playOggWindow} ) - pos.append({"position":"pgd", "window":self.pipBgdWindow2} ) - pos.append({"position":"pip", "window":self.playLiveWindow} ) + pos.append({"position":"pgd", "window":self.pipBgdWindow} ) + pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"scr", "window":self.scrubWindow} ) @@ -1419,8 +1422,8 @@ class UI: pos.append({"position":"eye", "window":self.recordWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE): - pos.append({"position":"pgd", "window":self.pipBgdWindow2} ) - pos.append({"position":"pip", "window":self.playLiveWindow} ) + pos.append({"position":"pgd", "window":self.pipBgdWindow} ) + pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"scr", "window":self.scrubWindow} ) @@ -1617,11 +1620,6 @@ class UI: def showVideo( self, recd ): - if (self.LIVEMODE): - if (self.ca.glive.isXv()): - self.ca.glive.setPipeType( self.ca.glive.PIPETYPE_X_VIDEO_DISPLAY ) - self.ca.glive.stop() - self.ca.glive.play() downloading = self.ca.requestMeshDownload(recd) if (not downloading): @@ -1641,12 +1639,17 @@ class UI: if (not downloading): mediaFilepath = recd.getMediaFilepath() if (mediaFilepath != None): + self.ca.glive.stop() + self.ca.glivex.play() videoUrl = "file://" + str( mediaFilepath ) self.ca.gplay.setLocation(videoUrl) self.scrubWindow.doPlay() ableToShowVideo = True if (not ableToShowVideo): + # FIXME is this correct? + self.ca.glive.stop() + self.ca.glivex.play() thumbFilepath = recd.getThumbFilepath( ) thumbUrl = "file://" + str( thumbFilepath ) self.ca.gplay.setLocation(thumbUrl) @@ -1664,7 +1667,7 @@ class UI: self.livePhotoCanvas.setImage( None ) elif (recd.type == Constants.TYPE_VIDEO): self.ca.gplay.stop() - self.startLiveVideo( self.playLiveWindow, self.ca.glive.PIPETYPE_XV_VIDEO_DISPLAY_RECORD, False ) + self.startLiveVideo( False ) elif (recd.type == Constants.TYPE_AUDIO): self.livePhotoCanvas.setImage( None ) self.startLiveAudio() @@ -1679,7 +1682,6 @@ class UI: self.ca.m.setUpdating(True) self.ca.gplay.stop() - self.ca.glive.setPipeType( self.ca.glive.PIPETYPE_AUDIO_RECORD ) self.liveVideoWindow.set_glive(self.ca.glive) self.showLiveVideoTags() @@ -2358,4 +2360,4 @@ class AudioToolbar(gtk.Toolbar): def getDuration(self): - return 60 * Constants.DURATIONS[self.durCb.combo.get_active()]
\ No newline at end of file + return 60 * Constants.DURATIONS[self.durCb.combo.get_active()] |