X-Git-Url: http://git.tremily.us/?p=hooke.git;a=blobdiff_plain;f=hooke%2Fplaylist.py;h=473e7362c7b4e722ece4a4788d987e22fd764e44;hp=fdebc4042fa01b8b502ebea4053a94d687639b70;hb=300551c499d4f608433001477fe87936fbe8a4ba;hpb=b861781370bce2c4f3e70a3caddff36a863f5e58 diff --git a/hooke/playlist.py b/hooke/playlist.py index fdebc40..473e736 100644 --- a/hooke/playlist.py +++ b/hooke/playlist.py @@ -98,8 +98,9 @@ class NoteIndexList (list): return state def _assert_clean_state(self, owner, state): - return for k,v in state.items(): + if k == 'drivers': # HACK. Need better driver serialization. + continue try: yaml.safe_dump((k,v)) except RepresenterError, e: @@ -520,3 +521,19 @@ class FilePlaylist (Playlist): curve.set_hooke(hooke) if identify == True: curve.identify(self.drivers) + + +class Playlists (NoteIndexList): + """A :class:`NoteIndexList` of :class:`FilePlaylist`\s. + """ + def __init__(self, *arg, **kwargs): + super(Playlists, self).__init__(*arg, **kwargs) + + def _item_getstate(self, item): + assert isinstance(item, FilePlaylist), type(item) + return item.__getstate__() + + def _item_setstate(self, state): + item = FilePlaylist(drivers=[]) + item.__setstate__(state) + return item