Add hooke.playlist.Playlists for better playlist serialization.
[hooke.git] / hooke / playlist.py
index fdebc4042fa01b8b502ebea4053a94d687639b70..473e7362c7b4e722ece4a4788d987e22fd764e44 100644 (file)
@@ -98,8 +98,9 @@ class NoteIndexList (list):
         return state
 
     def _assert_clean_state(self, owner, state):
         return state
 
     def _assert_clean_state(self, owner, state):
-        return
         for k,v in state.items():
         for k,v in state.items():
+            if k == 'drivers':  # HACK.  Need better driver serialization.
+                continue
             try:
                 yaml.safe_dump((k,v))
             except RepresenterError, e:
             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)
             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