Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit
diff options
context:
space:
mode:
authoramartin <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)
commitaf217434f84ba9d35bf83d6c14fe8ba9654f9e4f (patch)
treeedfab35d0a96516c3260e3cace711f4df3929d3c /Edit
parent47e90f217c84a557a24767b6d091bb8ecbc46909 (diff)
TuneInterface selection bug
Diffstat (limited to 'Edit')
-rw-r--r--Edit/MainWindow.py32
-rw-r--r--Edit/TuneInterface.py14
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