diff options
author | amartin <olpc@localhost.localdomain> | 2007-02-20 20:17:00 (GMT) |
---|---|---|
committer | amartin <olpc@localhost.localdomain> | 2007-02-20 20:17:00 (GMT) |
commit | 6c4c9d007155429051913b79c17ca0c1e5c20a9b (patch) | |
tree | 3e2e928e73d6d676e4d364522c4001ace310c666 /Edit/TuneInterface.py | |
parent | 16cc50c2a811234429fc00b139a537cb5281ae61 (diff) |
playback stuff and tuneInterface fixes
Diffstat (limited to 'Edit/TuneInterface.py')
-rw-r--r-- | Edit/TuneInterface.py | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/Edit/TuneInterface.py b/Edit/TuneInterface.py index 8d705a3..cc070b8 100644 --- a/Edit/TuneInterface.py +++ b/Edit/TuneInterface.py @@ -207,6 +207,7 @@ class TuneInterface( gtk.EventBox ): width = self.pageOffset + self.noteDB.getPageCount()*Config.PAGE_THUMBNAIL_WIDTH self.waitingForAlloc = True self.set_size_request( max( self.baseWidth, width), -1 ) + self.invalidate_rect( self.visibleX, 0, self.baseWidth, self.height ) def handleButtonPress( self, widget, event ): if event.button != 1: @@ -330,10 +331,11 @@ class TuneInterface( gtk.EventBox ): else: # hovering ind = int(event.x-self.pageOffset)//Config.PAGE_THUMBNAIL_WIDTH - if 0 <= ind < self.noteDB.getPageCount(): + if ind != self.lastPredrawInd and 0 <= ind < self.noteDB.getPageCount(): id = self.noteDB.getPageByIndex(ind) if id != self.displayedPage: self.owner.predrawPage( id ) + self.lastPredrawInd = ind def trackToggled( self, i ): @@ -342,6 +344,8 @@ class TuneInterface( gtk.EventBox ): def displayPage( self, id ): if self.displayedPage == id: return -1 + self.lastPredrawInd = -1 + if self.displayedPage != -1: ind = self.noteDB.getPageIndex( self.displayedPage ) self.invalidate_rect( self.pageOffset + ind*Config.PAGE_THUMBNAIL_WIDTH, 0, Config.PAGE_THUMBNAIL_WIDTH, self.height ) @@ -380,7 +384,8 @@ class TuneInterface( gtk.EventBox ): self.adjustment.set_value( scroll ) def selectPage( self, id, exclusive = True ): - if exclusive: self.selectedIds = [] + if exclusive: + self.clearSelection() if id in self.selectedIds: return False # no change @@ -397,7 +402,7 @@ class TuneInterface( gtk.EventBox ): return True # page added to selection - def deselectPage( self, id, force = False ): + def deselectPage( self, id, force = False, skip_redraw = False ): if not id in self.selectedIds: return False # page isn't selected if not force: @@ -409,11 +414,16 @@ class TuneInterface( gtk.EventBox ): else: self.owner.displayPage( self.selectedIds[i-1] ) self.selectedIds.remove( id ) - ind = self.noteDB.getPageIndex( id ) - self.invalidate_rect( self.pageOffset + ind*Config.PAGE_THUMBNAIL_WIDTH, 0, Config.PAGE_THUMBNAIL_WIDTH, self.height ) + if not skip_redraw: + ind = self.noteDB.getPageIndex( id ) + self.invalidate_rect( self.pageOffset + ind*Config.PAGE_THUMBNAIL_WIDTH, 0, Config.PAGE_THUMBNAIL_WIDTH, self.height ) return True # page removed from the selection + def selectPages( self, which ): + self.clearSelection() + self.selectedIds += which + def selectAll( self ): self.selectedIds = self.noteDB.getTune()[:] self.invalidate_rect( self.visibleX, 0, self.baseWidth, self.height ) @@ -425,6 +435,12 @@ class TuneInterface( gtk.EventBox ): def getSelectedIds( self ): return self.selectedIds + def getDisplayedIndex( self ): + return self.selectedIds.index( self.displayedPage ) + + def getFirstSelected( self ): + return self.selectedIds[0] + def getLastSelected( self ): return self.selectedIds[-1] @@ -441,20 +457,21 @@ class TuneInterface( gtk.EventBox ): def notifyPageDelete( self, which, safe ): for id in self.selectedIds: - if id in which: self.deselectPage( id, True ) + if id in which: + self.deselectPage( id, True, True ) for id in which: del self.thumbnail[id] del self.thumbnailDirtyRect[id] del self.thumbnailDirty[id] + if self.displayedPage in which: + self.displayedPage = -1 self.updateSize() def notifyPageDuplicate( self, new, at ): - self.clearSelection() for id in new: self.thumbnail[new[id]] = gtk.gdk.Pixmap( self.defaultwin, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT ) self.thumbnailDirtyRect[new[id]] = gtk.gdk.Rectangle( 0, 0, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT ) self.thumbnailDirty[new[id]] = True - self.selectPage( new[id], False ) self.updateSize() def notifyPageMove( self, which, low, high ): |