Add CurveCommand, BlockCommand, ColumnAccessCommand, and ColumnAddingCommand.
[hooke.git] / hooke / playlist.py
index 8444c9aac883f151e274a9810e7ef7ee4976326f..8d889a3da3cd91c9eebb54eba745cc7dc198ea16 100644 (file)
@@ -45,7 +45,13 @@ class NoteIndexList (list):
         self._index = 0
 
     def __str__(self):
-        return '<%s %s>' % (self.__class__.__name__, self.name)
+        return str(self.__unicode__())
+
+    def __unicode__(self):
+        return u'<%s %s>' % (self.__class__.__name__, self.name)
+
+    def __repr__(self):
+        return self.__str__()
 
     def _setup_item(self, item):
         """Perform any required initialization before returning an item.
@@ -113,8 +119,6 @@ class Playlist (NoteIndexList):
         self._max_loaded = 100 # curves to hold in memory simultaneously.
 
     def append_curve_by_path(self, path, info=None, identify=True):
-        if self.path != None:
-            path = os.path.join(os.path.dirname(self.path), path)
         path = os.path.normpath(path)
         c = curve.Curve(path, info=info)
         if identify == True:
@@ -140,6 +144,7 @@ class FilePlaylist (Playlist):
 
     def __init__(self, drivers, name=None, path=None):
         super(FilePlaylist, self).__init__(drivers, name)
+        self.path = None
         self.set_path(path)
         self._digest = None
         self._ignored_keys = [
@@ -154,6 +159,11 @@ class FilePlaylist (Playlist):
             if self.name == None:
                 self.name = os.path.basename(path)
 
+    def append_curve_by_path(self, path, *args, **kwargs):
+        if self.path != None:
+            path = os.path.join(os.path.dirname(self.path), path)
+        super(FilePlaylist, self).append_curve_by_path(path, *args, **kwargs)
+
     def is_saved(self):
         return self.digest() == self._digest
 
@@ -338,6 +348,6 @@ class FilePlaylist (Playlist):
         """Saves the playlist in a XML file.
         """
         self.set_path(path)
-        f = file(self.path, 'w')
-        f.write(self.flatten())
-        f.close()
+        with open(self.path, 'w') as f:
+            f.write(self.flatten())
+            self._digest = self.digest()