Exemple #1
0
 def on_dupplicate_instrument(self, event = None):
   if isinstance(self.selected_partition, introsp.ObjectPack):
     partitions = self.selected_partition.objects
   else: partitions = [self.selected_partition]
   
   insert_at = max([self.song.partitions.index(partition) for partition in partitions])
   
   xml = StringIO()
   xml.write(u"<song>\n")
   context = model._XMLContext()
   for partition in partitions: partition.__xml__(xml, context)
   xml.write(u"</song>")
   
   import songwrite2.stemml as stemml
   xml.seek(0)
   song = stemml.parse(xml)
   
   def do_it(song = song):
     for partition in song.partitions:
       self.song.insert_partition(insert_at, partition)
       partition.song = self.song
   def undo_it(song = song):
     for partition in song.partitions:
       self.song.remove_partition(partition)
   undoredo.UndoableOperation(do_it, undo_it, _(u"dupplicate instrument"), self.undo_stack)
Exemple #2
0
 def import_from_string(self, data):
   import songwrite2.stemml as stemml
   return stemml.parse(StringIO(data))