if tmp.__class__ != self.__class__:
raise ValueError("Using different file list type")
- self.paths.sort()
- if self.paths != getattr(tmp, "paths"):
- raise ValueError("Path list changed")
+ tmp.paths.sort()
+ if self.paths != tmp.paths:
+ raise ValueError, "Path list changed"
+ # Overwrite this object with the other
for attr, value in tmp.__dict__.items():
setattr(self, attr, value)
except Exception, e:
logging.warning("Storing cache", exc_info=1)
- def load_cache(self, filename, rescanPaths = False):
- logging.debug('Attempting to load cache from "%s"' % filename)
- self.paths.sort()
- try:
- fd = open(filename, 'rb')
- tmp = pickle.load(fd)
- if self.paths == tmp.paths:
- logging.debug("Path lists match, copying properties")
- # Overwrite this object with the other
- for attr in ('list', 'imagePointer', 'favourites'):
- setattr(self, attr, getattr(tmp, attr))
- else:
- logging.debug("Ignoring cache, path lists do not match")
- except Exception, e:
- logging.warning("Loading cache", exc_info=1)
- else:
- return True
-
def get_current_image(self):
return self.list[self.imagePointer]
def is_empty(self):
return len(self.list) == 0
+
class FolderRandomFileList(BaseFileList):
"""A file list that will pick a file randomly within a directory. Each
directory has the same chance of being chosen."""
class Cycler(object):
- def init(self, options, paths):
+ def init(self, options, paths, oneshot=False):
self.cycle_time = options.cycle_time
self.history_filename = options.history_filename
sys.exit(1)
self.task = None
- self.cmd_reload()
+ if oneshot:
+ self.cmd_next()
+ else:
+ self.cmd_reload()
def finish(self):
self.filelist.store_cache(self.history_filename)
logging.debug('Unknown command received "%s"' % cmd)
-
class Listener(asyncore.dispatcher):
def __init__(self, socket_filename, cycler):
asyncore.dispatcher.__init__(self)
def do_oneshot(options, paths):
cycler = Cycler()
- cycler.init(options, paths)
+ cycler.init(options, paths, oneshot=True)
def build_parser():
parser = OptionParser(version="%prog " + VERSION,
if options.oneshot:
do_oneshot(options, args)
-
- if os.path.exists(options.socket_filename):
- do_client(options, args)
else:
- do_server(options, args)
+ if os.path.exists(options.socket_filename):
+ do_client(options, args)
+ else:
+ do_server(options, args)
if __name__ == "__main__":
main()
-