projects
/
hooke.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set ._digest after saving in hooke.playlist.FilePlaylist.save()
[hooke.git]
/
hooke
/
playlist.py
diff --git
a/hooke/playlist.py
b/hooke/playlist.py
index ed05b35b85a1301368b0578295ee99fade21e20e..8d889a3da3cd91c9eebb54eba745cc7dc198ea16 100644
(file)
--- a/
hooke/playlist.py
+++ b/
hooke/playlist.py
@@
-45,15
+45,26
@@
class NoteIndexList (list):
self._index = 0
def __str__(self):
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.
"""
pass
def _setup_item(self, item):
"""Perform any required initialization before returning an item.
"""
pass
- def index(self):
- return self._index
+ def index(self, value=None, *args, **kwargs):
+ """Extend `list.index`, returning the current index if `value`
+ is `None`.
+ """
+ if value == None:
+ return self._index
+ return super(NoteIndexList, self).index(value, *args, **kwargs)
def current(self):
if len(self) == 0:
def current(self):
if len(self) == 0:
@@
-74,10
+85,20
@@
class NoteIndexList (list):
def previous(self):
self.jump(self._index - 1)
def previous(self):
self.jump(self._index - 1)
+ def items(self, reverse=False):
+ """Iterate through `self` calling `_setup_item` on each item
+ before yielding.
+ """
+ items = self
+ if reverse == True:
+ items = reversed(self)
+ for item in items:
+ self._setup_item(item)
+ yield item
+
def filter(self, keeper_fn=lambda item:True, *args, **kwargs):
c = copy.deepcopy(self)
def filter(self, keeper_fn=lambda item:True, *args, **kwargs):
c = copy.deepcopy(self)
- for item in reversed(c):
- c._setup_item(item)
+ for item in c.items(reverse=True):
if keeper_fn(item, *args, **kwargs) != True:
c.remove(item)
try: # attempt to maintain the same current item
if keeper_fn(item, *args, **kwargs) != True:
c.remove(item)
try: # attempt to maintain the same current item
@@
-98,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):
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:
path = os.path.normpath(path)
c = curve.Curve(path, info=info)
if identify == True:
@@
-125,6
+144,7
@@
class FilePlaylist (Playlist):
def __init__(self, drivers, name=None, path=None):
super(FilePlaylist, self).__init__(drivers, name)
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 = [
self.set_path(path)
self._digest = None
self._ignored_keys = [
@@
-139,6
+159,11
@@
class FilePlaylist (Playlist):
if self.name == None:
self.name = os.path.basename(path)
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
def is_saved(self):
return self.digest() == self._digest
@@
-323,6
+348,6
@@
class FilePlaylist (Playlist):
"""Saves the playlist in a XML file.
"""
self.set_path(path)
"""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
()