Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranishmangal2002 <anishmangal2002@gmail.com>2010-07-24 18:10:42 (GMT)
committer anishmangal2002 <anishmangal2002@gmail.com>2010-07-24 18:10:42 (GMT)
commit4863eb5e637cb145077ebfd750c047bced8b90b2 (patch)
tree6efd5fc275b8bd9856126ea6c2db4594dd6cfee2
parenta90809dc03d2f1a21e5ef99f3909a04f6720e724 (diff)
Fixes to the Record UIHEADmaster
How the existing UI works: The record UI consists of many windows/widgets. In a particular mode or view, it displays and resizes the widgets appropriate for that view and tries to hide the other windows by moving them off-screen. Now, on sugar-0.88 (and probably on versions 0.86>), while trying to move the widgets off-screen, they actually get dumped at the bottom-right corner. Hence, if a user runs the existing Record activity on 0.88, he will observe that the bottom right quadrant of the screen is 'corrupted'. Fix description: The patch works by hiding or resizing (to size 1px by 1px) the widgets not required in a particular view/mode. The updateVideoComponents method has been modified to hide the widgets not required in a particular view. Widgets that can't be hidden are resized to 1 x 1 pixel. Additionally, this patch also fixes the naming of some variables (s/butt/button/g). Tested successfully on sugar-emulator-0.88, soas-mirabelle and xo1-f11-0.88.
-rw-r--r--button.py10
-rw-r--r--model.py2
-rw-r--r--p5_button.py30
-rw-r--r--ui.py196
4 files changed, 127 insertions, 111 deletions
diff --git a/button.py b/button.py
index 14b9700..2b0e85c 100644
--- a/button.py
+++ b/button.py
@@ -62,12 +62,12 @@ class RecdButton(TrayButton, gobject.GObject):
return img
- def setButtClickedId( self, id ):
- self.BUTT_CLICKED_ID = id
+ def setButtonClickedId( self, id ):
+ self.BUTTON_CLICKED_ID = id
- def getButtClickedId( self ):
- return self.BUTT_CLICKED_ID
+ def getButtonClickedId( self ):
+ return self.BUTTON_CLICKED_ID
def setup_rollover_options( self, info ):
@@ -105,4 +105,4 @@ class RecdButton(TrayButton, gobject.GObject):
def _itemCopyToClipboardCb(self, widget):
- self.ui.copyToClipboard( self.recd ) \ No newline at end of file
+ self.ui.copyToClipboard( self.recd )
diff --git a/model.py b/model.py
index 9d397b2..5b77e75 100644
--- a/model.py
+++ b/model.py
@@ -323,6 +323,8 @@ class Model:
def startTakingPhoto( self ):
self.setUpdating( True )
self.ca.glive.takePhoto()
+ self.ca.ui.FULLSCREEN = False
+ self.ca.ui.updateVideoComponents()
def savePhoto( self, pixbuf ):
diff --git a/p5_button.py b/p5_button.py
index cf76a34..a8e10c5 100644
--- a/p5_button.py
+++ b/p5_button.py
@@ -25,7 +25,7 @@ class P5Button(P5):
def __init__(self):
P5.__init__(self)
self.noloop()
- self._butts = []
+ self._buttons = []
self._buttonPressed = False
@@ -34,10 +34,10 @@ class P5Button(P5):
#iterate through the buttons to see if you've pressed any down
bp = False
- for i in range ( 0, len(self._butts) ):
- if (self._butts[i]._enabled):
- contains = self._butts[i].contains(event.x, event.y)
- self._butts[i]._pressed = contains
+ for i in range ( 0, len(self._buttons) ):
+ if (self._buttons[i]._enabled):
+ contains = self._buttons[i].contains(event.x, event.y)
+ self._buttons[i]._pressed = contains
if (contains):
bp = True
@@ -51,16 +51,16 @@ class P5Button(P5):
pressed = []
#iterate through the buttons to see if you've released on any
- for i in range ( 0, len(self._butts) ):
- if (self._butts[i]._enabled):
- if (self._butts[i]._pressed):
- if (self._butts[i].contains(event.x, event.y)):
- pressed.append( self._butts[i] )
-
- if (self._butts[i]._toggle):
- self._butts[i]._pressed = not self._butts[i]._pressed
+ for i in range ( 0, len(self._buttons) ):
+ if (self._buttons[i]._enabled):
+ if (self._buttons[i]._pressed):
+ if (self._buttons[i].contains(event.x, event.y)):
+ pressed.append( self._buttons[i] )
+
+ if (self._buttons[i]._toggle):
+ self._buttons[i]._pressed = not self._buttons[i]._pressed
else:
- self._butts[i]._pressed = False
+ self._buttons[i]._pressed = False
for i in range( 0, len(pressed) ):
pressed[i].doPressed()
@@ -170,4 +170,4 @@ class Button:
def isImg( self ):
- return self._img != None \ No newline at end of file
+ return self._img != None
diff --git a/ui.py b/ui.py
index 21e27be..2bacd05 100644
--- a/ui.py
+++ b/ui.py
@@ -93,7 +93,7 @@ class UI:
self.maxw = 49
self.maxh = 49
self.controlBarHt = 60
- self.recordButtWd = 55
+ self.recordButtonWd = 55
self.pipw = self.__class__.dim_PIPW
self.piph = self.__class__.dim_PIPH
@@ -336,7 +336,7 @@ class UI:
self.tagsBuffer = gtk.TextBuffer()
self.tagsBuffer.connect('changed', self._tagsBufferEditedCb)
self.tagsField = gtk.TextView(self.tagsBuffer)
- self.tagsField.set_size_request( 100, 100 )
+ self.tagsField.set_size_request( 50, 50 )
self.tagsPanel.pack_start(self.tagsField, expand=True)
self.infoBoxTopLeft.pack_start(self.tagsPanel, expand=True)
@@ -370,7 +370,6 @@ class UI:
self.centered = True
self.setUp()
-
def _mapEventCb( self, widget, event ):
#when your parent window is ready, turn on the feed of live video
self.liveVideoWindow.disconnect(self.MAP_EVENT_ID)
@@ -462,9 +461,11 @@ class UI:
self.slowLiveVideoWindow.connect("visibility-notify-event", self._visibleNotifyCb)
self.recordWindow = RecordWindow(self)
+ self.recordWindow.set_geometry_hints(min_width=1, min_height=1)
self.addToWindowStack( self.recordWindow, self.windowStack[len(self.windowStack)-1] )
self.progressWindow = ProgressWindow(self)
+ self.progressWindow.set_geometry_hints(min_width=1, min_height=1)
self.addToWindowStack( self.progressWindow, self.windowStack[len(self.windowStack)-1] )
self.maxWindow = gtk.Window()
@@ -472,9 +473,11 @@ class UI:
self.maxWindow.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor )
maxButton = MaxButton(self)
self.maxWindow.add( maxButton )
+ self.maxWindow.set_geometry_hints(min_width=1, min_height=1)
self.addToWindowStack( self.maxWindow, self.windowStack[len(self.windowStack)-1] )
self.scrubWindow = ScrubberWindow(self)
+ self.scrubWindow.set_geometry_hints(min_width=1, min_height=1)
self.addToWindowStack( self.scrubWindow, self.windowStack[len(self.windowStack)-1] )
self.infWindow = gtk.Window()
@@ -493,6 +496,7 @@ class UI:
def _visibleNotifyCb( self, widget, event ):
+ logging.debug("_visibleNotifyCb")
if (self.LAUNCHING):
return
@@ -526,6 +530,31 @@ class UI:
else:
self.ca.stopPipes()
+ def resizeWindows( self ):
+ if self.ca.m.MODE == Constants.MODE_AUDIO:
+ self.maxWindow.resize( 1, 1 )
+ else:
+ maxDim = self.getMaxDim( self.FULLSCREEN )
+ self.maxWindow.resize( maxDim[0], maxDim[1] )
+
+ if self.LIVEMODE:
+ self.pipBgdWindow.resize( 1, 1 )
+ self.playOggWindow.resize( 1, 1 )
+ self.livePhotoWindow.resize( 1, 1 )
+ self.slowLiveVideoWindow.resize( 1, 1 )
+ self.infWindow.resize( 1, 1 )
+ if self.ca.m.MODE == Constants.MODE_PHOTO:
+ self.progressWindow.resize( 1, 1 )
+ else:
+ pgdDim = self.getPgdDim( self.FULLSCREEN )
+ self.pipBgdWindow.resize( pgdDim[0], pgdDim[1] )
+ self.progressWindow.resize( 1, 1 )
+ self.recordWindow.resize( 1, 1 )
+ if self.ca.m.MODE == Constants.MODE_PHOTO:
+ self.playOggWindow.resize( 1, 1 )
+ self.scrubWindow.resize( 1, 1 )
+ elif self.ca.m.MODE == Constants.MODE_VIDEO:
+ self.liveVideoWindow.resize( 1, 1 )
def setUpWindowsSizes( self ):
pipDim = self.getPipDim(False)
@@ -598,30 +627,6 @@ class UI:
if (self.HIDE_WIDGET_TIMEOUT_ID != 0):
gobject.source_remove( self.HIDE_WIDGET_TIMEOUT_ID )
-
- def hideWidgets( self ):
- self.moveWinOffscreen( self.maxWindow )
- self.moveWinOffscreen( self.pipBgdWindow )
- self.moveWinOffscreen( self.infWindow )
- self.moveWinOffscreen( self.slowLiveVideoWindow )
-
- if (self.FULLSCREEN):
- self.moveWinOffscreen( self.recordWindow )
- self.moveWinOffscreen( self.progressWindow )
- self.moveWinOffscreen( self.scrubWindow )
-
- if (self.ca.m.MODE == Constants.MODE_PHOTO):
- if (not self.LIVEMODE):
- self.moveWinOffscreen( self.liveVideoWindow )
- elif (self.ca.m.MODE == Constants.MODE_VIDEO):
- if (not self.LIVEMODE):
- self.moveWinOffscreen( self.liveVideoWindow )
- elif (self.ca.m.MODE == Constants.MODE_AUDIO):
- if (not self.LIVEMODE):
- self.moveWinOffscreen( self.liveVideoWindow )
- self.LAST_MODE = -1
-
-
def _mouseMightaMovedCb( self ):
x, y = self.ca.get_pointer()
passedTime = 0
@@ -638,18 +643,6 @@ class UI:
self.hideWidgetsTimer = time.time()
passedTime = 0
- if (passedTime >= 3):
- if (not self.hiddenWidgets):
- if (self.mouseInWidget(x,y)):
- self.hideWidgetsTimer = time.time()
- elif (self.RECD_INFO_ON):
- self.hideWidgetsTimer = time.time()
- elif (self.UPDATE_TIMER_ID != 0):
- self.hideWidgetsTimer = time.time()
- else:
- self.hideWidgets()
- self.hiddenWidgets = True
-
self.mx = x
self.my = y
return True
@@ -681,6 +674,7 @@ class UI:
def _mediaClickedForPlayback(self, widget, event):
+ logging.debug("_mediaClickedForPlayback")
if (not self.LIVEMODE):
if (self.shownRecd != None):
if (self.ca.m.MODE != Constants.MODE_PHOTO):
@@ -876,18 +870,18 @@ class UI:
kids = self.thumbTray.get_children()
for i in range (0, len(kids)):
if (self.ca.m.UPDATING or self.ca.m.RECORDING):
- if (kids[i].getButtClickedId() != 0):
- kids[i].disconnect( kids[i].getButtClickedId() )
- kids[i].setButtClickedId(0)
+ if (kids[i].getButtonClickedId() != 0):
+ kids[i].disconnect( kids[i].getButtonClickedId() )
+ kids[i].setButtonClickedId(0)
else:
- if (kids[i].getButtClickedId() == 0):
- BUTT_CLICKED_ID = kids[i].connect( "clicked", self._thumbClicked, kids[i].recd )
- kids[i].setButtClickedId(BUTT_CLICKED_ID)
+ if (kids[i].getButtonClickedId() == 0):
+ BUTTON_CLICKED_ID = kids[i].connect( "clicked", self._thumbClicked, kids[i].recd )
+ kids[i].setButtonClickedId(BUTTON_CLICKED_ID)
def hideAllWindows( self ):
for i in range (0, len(self.windowStack)):
- self.moveWinOffscreen( self.windowStack[i] )
+ self.windowStack[i].hide_all()
def _liveButtonReleaseCb(self, widget, event):
@@ -1004,6 +998,7 @@ class UI:
self.doMouseListener( True )
self.showLiveVideoTags()
self.LAST_MODE = -1 #force an update
+
self.updateVideoComponents()
self.resetWidgetFadeTimer()
@@ -1017,14 +1012,6 @@ class UI:
self.FULLSCREEN = not self.FULLSCREEN
self.updateVideoComponents()
-
- def moveWinOffscreen( self, win ):
- #we move offscreen to resize or else we get flashes on screen, and setting hide() doesn't allow resize & moves
- offW = (gtk.gdk.screen_width() + 100)
- offH = (gtk.gdk.screen_height() + 100)
- self.smartMove(win, offW, offH)
-
-
def setImgLocDim( self, win ):
imgDim = self.getImgDim( self.FULLSCREEN )
self.smartResize( win, imgDim[0], imgDim[1] )
@@ -1167,12 +1154,12 @@ class UI:
if (self.ca.m.MODE == Constants.MODE_PHOTO):
return [self.vw, self.controlBarHt]
else:
- return [self.recordButtWd, self.controlBarHt]
+ return [self.recordButtonWd, self.controlBarHt]
else:
if (self.ca.m.MODE == Constants.MODE_PHOTO):
return [gtk.gdk.screen_width()-(self.inset*2), self.controlBarHt]
else:
- return [self.recordButtWd, self.controlBarHt]
+ return [self.recordButtonWd, self.controlBarHt]
def getInbLoc( self, full ):
@@ -1245,16 +1232,16 @@ class UI:
def getPrgDim( self, full ):
if (not full):
- return [self.vw-self.recordButtWd, self.controlBarHt]
+ return [self.vw-self.recordButtonWd, self.controlBarHt]
else:
- return [gtk.gdk.screen_width()-(self.inset+self.inset+self.recordButtWd), self.controlBarHt]
+ return [gtk.gdk.screen_width()-(self.inset+self.inset+self.recordButtonWd), self.controlBarHt]
def getPrgLoc( self, full ):
if (not full):
- return [self.centerBoxPos[0]+self.recordButtWd, self.centerBoxPos[1]+self.vh]
+ return [self.centerBoxPos[0]+self.recordButtonWd, self.centerBoxPos[1]+self.vh]
else:
- return [self.inset+self.recordButtWd, gtk.gdk.screen_height()-(self.inset+self.controlBarHt)]
+ return [self.inset+self.recordButtonWd, gtk.gdk.screen_height()-(self.inset+self.controlBarHt)]
def getLoc( self, pos, full ):
@@ -1308,6 +1295,7 @@ class UI:
else:
#or, if there is no countdown, it might be because we are recording
self.clickShutter()
+ self.progressWindow.updateProgress( 1, Constants.istrFinishedRecording )
else:
#we're timing down something, but interrupted by user click or the timer completing
@@ -1447,15 +1435,42 @@ class UI:
elif (self.TRANSCODING):
pos.append({"position":"tmr", "window":self.progressWindow} )
- for i in range (0, len(self.windowStack)):
- self.windowStack[i].hide_all()
-
self.hideAllWindows()
self.updatePos( pos )
+ self.resizeWindows()
for i in range (0, len(self.windowStack)):
self.windowStack[i].show_all()
+ if self.ca.m.MODE == Constants.MODE_PHOTO:
+ if not self.LIVEMODE:
+ if self.RECD_INFO_ON == True:
+ self.maxWindow.hide_all()
+ if self.FULLSCREEN:
+ self.infWindow.hide_all()
+ else :
+ self.infWindow.hide_all()
+ self.scrubWindow.hide_all()
+ elif self.ca.m.MODE == Constants.MODE_VIDEO:
+ if not self.LIVEMODE:
+ if self.RECD_INFO_ON == True:
+ self.scrubWindow.hide_all()
+ self.maxWindow.hide_all()
+ if self.FULLSCREEN:
+ self.infWindow.hide_all()
+ else :
+ self.infWindow.hide_all()
+ self.scrubWindow.hide_all()
+ elif self.ca.m.MODE == Constants.MODE_AUDIO:
+ if not self.LIVEMODE:
+ if self.RECD_INFO_ON == True:
+ self.scrubWindow.hide_all()
+ if self.FULLSCREEN:
+ self.infWindow.hide_all()
+ else:
+ self.infWindow.hide_all()
+ self.scrubWindow.hide_all()
+
self.LAST_MODE = self.ca.m.MODE
self.LAST_FULLSCREEN = self.FULLSCREEN
self.LAST_LIVE = self.LIVEMODE
@@ -1540,16 +1555,16 @@ class UI:
if (kids[i].recd == recd):
self.thumbTray.remove_item(kids[i])
kids[i].cleanUp()
- kids[i].disconnect( kids[i].getButtClickedId() )
- kids[i].setButtClickedId(0)
+ kids[i].disconnect( kids[i].getButtonClickedId() )
+ kids[i].setButtonClickedId(0)
def addThumb( self, recd, forceScroll ):
- butt = RecdButton( self, recd )
- BUTT_CLICKED_ID = butt.connect( "clicked", self._thumbClicked, recd )
- butt.setButtClickedId(BUTT_CLICKED_ID)
- self.thumbTray.add_item( butt, len(self.thumbTray.get_children()) )
- butt.show()
+ button = RecdButton( self, recd )
+ BUTTON_CLICKED_ID = button.connect( "clicked", self._thumbClicked, recd )
+ button.setButtonClickedId(BUTTON_CLICKED_ID)
+ self.thumbTray.add_item( button, len(self.thumbTray.get_children()) )
+ button.show()
if (forceScroll):
self.thumbTray.scroll_to_end()
@@ -1559,8 +1574,8 @@ class UI:
for i in range (0, len(kids)):
self.thumbTray.remove_item(kids[i])
kids[i].cleanUp()
- if (kids[i].getButtClickedId() != 0):
- kids[i].disconnect( kids[i].getButtClickedId() )
+ if (kids[i].getButtonClickedId() != 0):
+ kids[i].disconnect( kids[i].getButtonClickedId() )
def _thumbClicked( self, button, recd ):
@@ -1651,7 +1666,6 @@ class UI:
if (self.RECD_INFO_ON):
self.bottomCenter.add( self.namePanel )
self.bottomCenter.show_all()
-
self.resetWidgetFadeTimer()
@@ -1903,22 +1917,22 @@ class ScrubberWindow(gtk.Window):
self.add( self.hbox )
self.button = gtk.Button()
- buttBox = gtk.EventBox()
- buttBox.add(self.button)
- buttBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor )
+ buttonBox = gtk.EventBox()
+ buttonBox.add(self.button)
+ buttonBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor )
self.button.set_image( Constants.recPlayImg )
self.button.set_property('can-default', True)
self.button.set_relief(gtk.RELIEF_NONE)
- self.button.set_size_request( self.ui.recordButtWd, self.ui.recordButtWd )
- buttBox.set_size_request( self.ui.recordButtWd, self.ui.recordButtWd )
+ self.button.set_size_request( self.ui.recordButtonWd, self.ui.recordButtonWd )
+ buttonBox.set_size_request( self.ui.recordButtonWd, self.ui.recordButtonWd )
#self.button.set_border_width( UI.dim_INSET/2 )
self.button.show()
- buttBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor )
+ buttonBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor )
self.button.modify_bg( gtk.STATE_ACTIVE, Constants.colorBlack.gColor )
self.button.connect('clicked', self._buttonClickedCb)
- self.hbox.pack_start(buttBox, expand=False)
+ self.hbox.pack_start(buttonBox, expand=False)
self.adjustment = gtk.Adjustment(0.0, 0.00, 100.0, 0.1, 1.0, 1.0)
self.hscale = gtk.HScale(self.adjustment)
@@ -2057,11 +2071,11 @@ class MaxButton(P5Button):
xs.append(0)
ys.append(self.ui.maxh)
poly = Polygon( xs, ys )
- butt = Button( poly, 0, 0)
- butt.addActionListener( self )
+ button = Button( poly, 0, 0)
+ button.addActionListener( self )
self.maxS = "max"
- butt.setActionCommand( self.maxS )
- self._butts.append( butt )
+ button.setActionCommand( self.maxS )
+ self._buttons.append( button )
def draw(self, ctx, w, h):
@@ -2098,11 +2112,11 @@ class InfButton(P5Button):
xs.append(0)
ys.append(75)
poly = Polygon( xs, ys )
- butt = Button( poly, 0, 0)
- butt.addActionListener( self )
+ button = Button( poly, 0, 0)
+ button.addActionListener( self )
self.infS = "inf"
- butt.setActionCommand( self.infS )
- self._butts.append( butt )
+ button.setActionCommand( self.infS )
+ self._buttons.append( button )
def draw(self, ctx, w, h):
@@ -2160,7 +2174,7 @@ class RecordWindow(gtk.Window):
self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor )
self.shutterButton = RecordButton()
- self.shutterButton.set_size_request(self.ui.recordButtWd, self.ui.recordButtWd)
+ self.shutterButton.set_size_request(self.ui.recordButtonWd, self.ui.recordButtonWd)
self.shutterButton.set_relief(gtk.RELIEF_NONE)
self.shutterButton.set_image( Constants.recImg )
self.shutterButton.connect("clicked", self.ui._shutterClickCb)
@@ -2254,10 +2268,10 @@ class ProgressWindow(gtk.Window):
self.progBar.modify_bg( gtk.STATE_PRELIGHT, Constants.colorBlack.gColor )
self.progBar.modify_bg( gtk.STATE_SELECTED, Constants.colorBlack.gColor )
self.progBar.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor )
- vb.add( self.progBar )
+ vb.pack_start( self.progBar, True, True, 0 )
hbox = gtk.HBox()
- vb.add( hbox )
+ vb.pack_start( hbox, True, True, 0 )
self.infoLabel = gtk.Label()
self.infoLabel.set_alignment( 1, .5 )
self.infoLabel.set_text( "<b><span foreground='black'>SPACE</span></b>")