Adjust playlist curve setup to load curves after YAML restore.
[hooke.git] / hooke / playlist.py
index 1543b9f63e617884e033ccfba5cc758148e28dce..41132a106c48bbc80774bb2d850cf8c742922108 100644 (file)
@@ -194,7 +194,7 @@ class Playlist (NoteIndexList):
                 self.append(curve)
             if curve.driver == None:
                 c.identify(self.drivers)
-            if curve.data == None:
+            if curve.data == None or max([d.size for d in curve.data]) == 0:
                 curve.load()
             self._loaded.append(curve)
             if len(self._loaded) > self._max_loaded:
@@ -463,8 +463,10 @@ class FilePlaylist (Playlist):
         self._relative_curve_paths = self.relative_curve_paths
         self.update_curve_paths()
         self._relative_curve_paths = rcp
-
+        digest = self._digest
+        self._digest = None  # don't save the digest (recursive file).
         yaml_string = yaml.dump(self, allow_unicode=True)
+        self._digest = digest
         self.update_curve_paths()
         return ('# Hooke playlist version %s\n' % self.version) + yaml_string
 
@@ -570,7 +572,7 @@ def from_string(string):
 def load(path=None, drivers=None, identify=True, hooke=None):
     """Load a playlist from a file.
     """
-    path = playlist_path(path)
+    path = os.path.expanduser(playlist_path(path))
     with open(path, 'r') as f:
         text = f.read()
     playlist = from_string(text)