- def cycle_reload(self):
- debug("Reloading wallpaper", DEBUG_LEVEL_LOW)
- ret = self.randombg.cycleReload()
- if not ret:
- debug('Could not set wallpaper. Returned "%s"' % ret)
- debug('About to sleep for "%d" seconds' % self.cycle_time, DEBUG_LEVEL_LOW)
- self.callbackObj = self.socketHandler.addCallback(self.cycle_time, self.cycle_next)
- return ret
-
- def cycle_next(self):
- debug("Cycling wallpaper", DEBUG_LEVEL_LOW)
- ret = self.randombg.cycleNext()
- if not ret:
- debug('Could not set wallpaper. Returned "%s"' % ret)
- debug('About to sleep for "%d" seconds' % self.cycle_time, DEBUG_LEVEL_LOW)
- self.callbackObj = self.socketHandler.addCallback(self.cycle_time, self.cycle_next)
- self.filelist.doStoreCache(CACHE_LOCATION)
- return ret
-
- def cycle_prev(self):
- debug("Cycling wallpaper", DEBUG_LEVEL_LOW)
- ret = self.randombg.cyclePrev()
- if not ret:
- debug('Could not set wallpaper. Returned "%s"' % ret)
- debug('About to sleep for "%d" seconds' % self.cycle_time, DEBUG_LEVEL_LOW)
- # Yes this is ment to be cycle_next
- self.callbackObj = self.socketHandler.addCallback(self.cycle_time, self.cycle_next)
- self.filelist.doStoreCache(CACHE_LOCATION)
- return ret
-
- def _finished(self):
- self.filelist.doStoreCache(CACHE_LOCATION)
-
- def __call__(self):
- # Callback immediatly
- self.socketHandler.addCallback(0.0, self.cycle_reload)
- # Now go into the main loop
- self.socketHandler.mainLoop()
- # Clean up time
- self._finished()
-
- def _createIPCServer(self, domainSocketName):
- """Create the Server socket, and start listening for clients"""
-
- class Handler(object):
- def __init__(self, parent):
- self.parent = parent
- def _removeOldTimer(self):
- if self.parent.callbackObj:
- self.parent.socketHandler.removeCallback(self.parent.callbackObj)
- def _cmd_PAUSE(self):
- debug("Pausing randombg")
- self._removeOldTimer()
- def _cmd_NEXT(self):
- self._removeOldTimer()
- self.parent.cycle_next()
- def _cmd_PREVIOUS(self):
- self._removeOldTimer()
- self.parent.cycle_prev()
- def _cmd_RESCAN(self):
- self.parent.filelist.doScanPaths()
- self._cmd_NEXT()
- def _cmd_RELOAD(self):
- self._removeOldTimer()
- self.parent.cycle_reload()
- def _processLine(self, line):
- prefix, cmd = line.split(None, 1)
- if prefix != 'CMD':
- debug('Unknown command received "%s"' % line)
- return
- if hasattr(self, '_cmd_%s' % cmd):
- getattr(self, '_cmd_%s' % cmd)()
- else:
- debug('Unknown command received "%s"' % cmd)
- def __call__(self, lineReader):
- try:
- while lineReader.hasLine():
- self._processLine(lineReader.readline())
- except Exception, e:
- debug(str(e))
-
- def handleClient(sock):
- conn, address = sock.accept()
- async_handler.addLineBufferedSocket(conn, Handler(self) )
-
- async_handler = AsyncSocket.AsyncSocketOwner()
-
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- sock.bind(domainSocketName)
- sock.listen(2) # Backlog = 2
-
- async_handler.addSocket(sock, handleClient)
-
- return async_handler