]> code.delx.au - bg-scripts/blobdiff - lib/WallChanger.py
RandomBG: More major cleanups.
[bg-scripts] / lib / WallChanger.py
index b7a81ab18fea42e341466fe084f4e5979f9fb682..efebd501281b4113fafff807a626c6673306c4a5 100644 (file)
@@ -2,7 +2,6 @@
 
 import commands, sys, os, os.path, subprocess, time
 from GregDebug import debug, setDebugLevel, DEBUG_LEVEL_DEBUG, DEBUG_LEVEL_LOW, DEBUG_LEVEL_MEDIUM, DEBUG_LEVEL_HIGH, DEBUG_INCREMENT
-import FileLists
 
 import python24_adapter # NB: Must be imported before collections
 import collections
@@ -58,35 +57,17 @@ def RandomBG(*args, **kwargs):
                return ret
 
 class __BaseChanger(object):
-       def __init__(self, filelist, backgroundColour='black', permanent=False):
+       def __init__(self, backgroundColour='black', permanent=False):
                debug('Determined the window manager is "%s"' % self.__class__.__name__, DEBUG_LEVEL_MEDIUM)
                self.backgroundColour = backgroundColour
                self.permanent = permanent
-               self.filelist = filelist
                # Used to 'chain' background changers
                self.nextChanger = None
-
-       def callChained(self, filename):
-               if self.nextChanger is None:
-                       return True
-               else:
-                       return self.nextChanger.changeTo(filename)
-
-       def cycleNext(self):
-               file = self.filelist.getNextRandomImage()
-               return self.changeTo(file) and self.callChained(file)
-       
-       def cyclePrev(self):
-               file = self.filelist.getPrevRandomImage()
-               return self.changeTo(file) and self.callChained(file)
        
-       def cycleReload(self):
-               try:
-                       file = self.filelist.getCurrentImage()
-                       return self.changeTo(file) and self.callChained(file)
-               except FileLists.FileListNotImplemented:
-                       return self.cycleNext()
-
+       def setImage(self, filename):
+               self._setImage(filename)
+               if self.nextChanger is not None:
+                       self.nextChange.changeTo(filename)
 
 class __WMakerChanger(__BaseChanger):
        _ConvertedWallpaperLocation = '/tmp/wallpapers_wmaker/'
@@ -107,7 +88,8 @@ class __WMakerChanger(__BaseChanger):
                cmd = ["convert", '-resize', '1280', '-gravity', 'Center', '-crop', '1280x800+0+0', file, output_name]
                debug("""Convert command: '"%s"'""" % '" "'.join(cmd), DEBUG_LEVEL_DEBUG)
                return output_name, subprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr, stdin=None).wait()
-       def changeTo(self, file):
+
+       def _setImage(self, file):
                file, convert_status = self._convertImageFormat(file)
                if convert_status:
                        debug('Convert failed')
@@ -170,7 +152,7 @@ class __OSXChanger(__BaseChanger):
                except ImportError:
                        debug('Could not import the Foundation module, you may have problems with dual screens', DEBUG_LEVEL_MEDIUM)
 
-       def changeTo(self, file):
+       def _setImage(self, file):
                output_name, ret = self._convertImageFormat(file)
                if not ret:
                        debug("Convert failed")
@@ -181,13 +163,13 @@ class __OSXChanger(__BaseChanger):
                return not commands.getstatusoutput(cmd)[0]
 
 class __GnomeChanger(__BaseChanger):
-       def changeTo(self, file):
+       def _setImage(self, file):
                cmd = ['gconftool-2', '--type', 'string', '--set', '/desktop/gnome/background/picture_filename', file]
                debug(cmd, DEBUG_LEVEL_DEBUG)
                return subprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr, stdin=None).wait()
 
 class __KDEChanger(__BaseChanger):
-       def changeTo(self, file):
+       def _setImage(self, file):
                cmds = []
                for group in ('Desktop0', 'Desktop0Screen0'):
                        base = ['kwriteconfig', '--file', 'kdesktoprc', '--group', group, '--key']