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)
def import_from_string(self, data): import songwrite2.stemml as stemml return stemml.parse(StringIO(data))