Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit/TuneInterface.py
diff options
context:
space:
mode:
authoramartin <olpc@localhost.localdomain>2007-02-20 20:17:00 (GMT)
committer amartin <olpc@localhost.localdomain>2007-02-20 20:17:00 (GMT)
commit6c4c9d007155429051913b79c17ca0c1e5c20a9b (patch)
tree3e2e928e73d6d676e4d364522c4001ace310c666 /Edit/TuneInterface.py
parent16cc50c2a811234429fc00b139a537cb5281ae61 (diff)
playback stuff and tuneInterface fixes
Diffstat (limited to 'Edit/TuneInterface.py')
-rw-r--r--Edit/TuneInterface.py33
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 ):