diff options
author | amartin <olpc@xo-00-CE-12.localdomain> | 2007-07-10 19:41:49 (GMT) |
---|---|---|
committer | amartin <olpc@xo-00-CE-12.localdomain> | 2007-07-10 19:41:49 (GMT) |
commit | af217434f84ba9d35bf83d6c14fe8ba9654f9e4f (patch) | |
tree | edfab35d0a96516c3260e3cace711f4df3929d3c | |
parent | 47e90f217c84a557a24767b6d091bb8ecbc46909 (diff) |
TuneInterface selection bug
-rw-r--r-- | Edit/MainWindow.py | 32 | ||||
-rw-r--r-- | Edit/TuneInterface.py | 14 |
2 files changed, 18 insertions, 28 deletions
diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py index fbd8c9b..6a8edbc 100644 --- a/Edit/MainWindow.py +++ b/Edit/MainWindow.py @@ -728,29 +728,21 @@ class MainWindow( SubActivity ): self._playPages( selectedIds, self.displayedPage, self.trackInterface.getPlayhead() ) def updatePagesPlaying( self ): + if not self.playing: + return - self.csnd.loopDeactivate() - - trackset = set( [ i for i in range(Config.NUMBER_OF_TRACKS) if self.trackActive[i] ] ) + curTick = self.csnd.loopGetTick() - notes = [] - if len(trackset) == 0 or len(trackset) == Config.NUMBER_OF_TRACKS: - for page in self.pages_playing: - notes += self.noteDB.getNotesByPage( page ) + pageTick = self.page_onset[self.displayedPage] + if curTick < pageTick: + pageTick = 0 + ind = 0 else: - for page in self.pages_playing: - for track in trackset: - notes += self.noteDB.getNotesByTrack( page, track ) - - numticks = 0 - self.page_onset = {} - for pid in self.pages_playing: - self.page_onset[pid] = numticks - numticks += self.noteDB.getPage(pid).ticks - - #print self.pages_playing - for n in notes: - self.csnd.loopUpdate(n, NoteDB.PARAMETER.DURATION, n.cs.duration , 1) + ind = self.pages_playing.index(self.displayedPage) + + localTick = curTick - pageTick + + self._playPages( self.tuneInterface.getSelectedIds(), ind, localTick ) def handleAudioRecord( self, widget, data=None ): if widget.get_active() == True: diff --git a/Edit/TuneInterface.py b/Edit/TuneInterface.py index 9934700..4dfbcbf 100644 --- a/Edit/TuneInterface.py +++ b/Edit/TuneInterface.py @@ -233,11 +233,11 @@ class TuneInterface( gtk.EventBox ): id = self.noteDB.getPageByIndex( ind ) if event.type == gtk.gdk._3BUTTON_PRESS: # triple click -> select all - self.selectAll() self.owner.displayPage( id ) + self.selectAll() elif event.type == gtk.gdk._2BUTTON_PRESS: # double click -> exclusive select - self.selectPage( id ) self.owner.displayPage( id ) + self.selectPage( id ) else: if Config.ModKeys.ctrlDown: if id in self.selectedIds: # ctrl click, selected page -> remove page from selection @@ -254,8 +254,8 @@ class TuneInterface( gtk.EventBox ): elif id in self.selectedIds: # click, selected page -> display this page but don't change the selection self.owner.displayPage( id ) else: # click, unselected page -> exclusive select - self.selectPage( id ) self.owner.displayPage( id ) + self.selectPage( id ) self.owner.setContext( CONTEXT.PAGE ) @@ -392,7 +392,7 @@ class TuneInterface( gtk.EventBox ): def selectPage( self, id, exclusive = True ): if exclusive: - self.clearSelection() + self._clearSelection() if id in self.selectedIds: return False # no change @@ -432,7 +432,7 @@ class TuneInterface( gtk.EventBox ): return True # page removed from the selection def selectPages( self, which ): - self.clearSelection() + self._clearSelection() self.selectedIds += which self.owner.updatePageSelection( self.selectedIds ) @@ -443,11 +443,9 @@ class TuneInterface( gtk.EventBox ): self.owner.updatePageSelection( self.selectedIds ) - def clearSelection( self ): + def _clearSelection( self ): self.selectedIds = [] self.invalidate_rect( self.visibleX, 0, self.baseWidth, self.height ) - - self.owner.updatePageSelection( self.selectedIds ) def getSelectedIds( self ): return self.selectedIds |