Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Util/NoteDB.py
diff options
context:
space:
mode:
authorJames <james@mackie.fourth>2007-03-20 04:32:11 (GMT)
committer James <james@mackie.fourth>2007-03-20 04:32:11 (GMT)
commitefee36c050875945565bb92becd321170b6694af (patch)
tree177c9ad22d76bd2367850b0f1bb62dfc94fbcf7e /Util/NoteDB.py
parent84d6431b1d98c16d93528723c9f14daf24c47ca9 (diff)
for a sneak preview of load and save, press the record button in edit
Diffstat (limited to 'Util/NoteDB.py')
-rw-r--r--Util/NoteDB.py63
1 files changed, 36 insertions, 27 deletions
diff --git a/Util/NoteDB.py b/Util/NoteDB.py
index c4399ec..0a6788c 100644
--- a/Util/NoteDB.py
+++ b/Util/NoteDB.py
@@ -75,6 +75,15 @@ class NoteDB:
self.clipboard = [] # stores copied cs notes
self.clipboardArea = [] # stores the limits and tracks for each page in the clipboard
+ def dumpToStream(self, ostream):
+ for pid in self.pages:
+ ostream.page_add(pid, self.pages[pid])
+ for pid in self.noteD:
+ for tid in xrange( len( self.noteD[pid])):
+ for nid in self.noteD[pid][tid]:
+ ostream.note_add(self.noteD[pid][tid][nid])
+ ostream.tune_set(self.tune)
+
#-- private --------------------------------------------
def _genId( self ):
self.nextId += 1
@@ -86,14 +95,14 @@ class NoteDB:
#=======================================================
# Page Functions
- def addPage( self, beats, after = False ):
- id = self._newPage( beats )
- at = self._insertPage( id, after )
+ def addPage( self, pid, page, after = False ):
+ pid = self._newPage( pid, page )
+ at = self._insertPage( pid, after )
for l in self.pageListeners:
- l.notifyPageAdd( id, at )
+ l.notifyPageAdd( pid, at )
- return id
+ return pid
def deletePages( self, which ):
beats = self.pages[self.tune[0]].beats
@@ -118,7 +127,7 @@ class NoteDB:
self.tune.pop(at)
if not len(self.tune):
- self.addPage( beats ) # always have at least one page
+ self.addPage( -1, Page(beats) ) # always have at least one page
safe = self.tune[0]
else:
safe = self.tune[max(ind-1,0)]
@@ -140,7 +149,7 @@ class NoteDB:
new = {}
for cp in sorted:
- id = self._newPage( self.pages[cp].beats )
+ id = self._newPage( -1, Page(self.pages[cp].beats) )
self._insertPage( id, after )
after = id
new[cp] = id
@@ -179,23 +188,23 @@ class NoteDB:
l.notifyPageMove( sorted, low, high )
#-- private --------------------------------------------
- def _newPage( self, beats ):
- id = self._genId()
- self.pages[id] = Page( beats )
- self.noteD[id] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
- self.noteS[id] = [ [] for i in range(Config.NUMBER_OF_TRACKS) ]
- self.parasiteD[id] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
- self.parasiteS[id] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
+ def _newPage( self, pid, page ):
+ if pid == -1 : pid = self._genId()
+ self.pages[pid] = page
+ self.noteD[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
+ self.noteS[pid] = [ [] for i in range(Config.NUMBER_OF_TRACKS) ]
+ self.parasiteD[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
+ self.parasiteS[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
for i in range(Config.NUMBER_OF_TRACKS):
for par in self.parasiteList.keys():
- self.parasiteD[id][i][par] = {}
- self.parasiteS[id][i][par] = []
- return id
+ self.parasiteD[pid][i][par] = {}
+ self.parasiteS[pid][i][par] = []
+ return pid
- def _insertPage( self, id, after ):
+ def _insertPage( self, pid, after ):
if not after: at = 0
else: at = self.tune.index(after)+1
- self.tune.insert( at, id )
+ self.tune.insert( at, pid )
return at
@@ -211,9 +220,9 @@ class NoteDB:
#=======================================================
# Note Functions
- def addNote( self, page, track, cs, hint = False ):
- id = self.pages[page].genId()
- n = self.noteD[page][track][id] = Note( page, track, id, cs )
+ def addNote( self, nid, page, track, cs, hint = False ):
+ if nid == -1: nid = self.pages[page].genId()
+ n = self.noteD[page][track][nid] = Note( page, track, nid, cs )
if not hint: at = 0
else: at = hint[0]
@@ -235,15 +244,15 @@ class NoteDB:
for par in self.parasiteList.keys():
parasite = self.parasiteList[par]( self, par, n )
- self.parasiteD[page][track][par][id] = parasite.attach() # give parasites the option of return something other than themselves
+ self.parasiteD[page][track][par][nid] = parasite.attach() # give parasites the option of return something other than themselves
self.parasiteS[page][track][par].insert( at, parasite.attach() )
if hint: hint[0] = at + 1 # assume the next note will fall after this one
for l in self.noteListeners:
- l.notifyNoteAdd( page, track, id )
+ l.notifyNoteAdd( page, track, nid )
- return id
+ return nid
# stream format:
# page id
@@ -263,7 +272,7 @@ class NoteDB:
N = self._readstream(stream,i)
hint = [0]
for j in range(N):
- new[p][t].append( self.addNote( p, t, self._readstream(stream,i), hint ) )
+ new[p][t].append( self.addNote( -1, p, t, self._readstream(stream,i), hint ) )
p = self._readstream(stream,i)
return new
@@ -316,7 +325,7 @@ class NoteDB:
if cs.onset + cs.duration > ticks:
cs.duration = ticks - cs.onset
- return self.addNote( toPage, toTrack, cs )
+ return self.addNote( -1, toPage, toTrack, cs )
# stream format:
# page id