add pause/next/prev to pictureviewer (based on code by aladin25)
authorMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Sat, 27 Dec 2008 16:22:50 +0000 (16:22 +0000)
committerMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Sat, 27 Dec 2008 16:22:50 +0000 (16:22 +0000)
webcamviewer/src/PictureScreen.py
webcamviewer/src/plugin.py

index 1360afb..8b33538 100755 (executable)
@@ -124,11 +124,16 @@ class PictureScreen(Screen):
                self.picload.setPara((size_w, size_h, sc[0], sc[1], False, 1, '#ff000000'))
                self["pixmap"] = Pixmap()
 
+               self.paused = False
+
                self["actions"] = ActionMap(["WizardActions", "DirectionActions","ChannelSelectBaseActions","ShortcutActions"],
                        {
                         "ok": self.do,
                         "back": self.exit,
-                        "green":self.AutoReloaderSwitch,
+                        "green": self.AutoReloaderSwitch,
+                        "yellow": self.pause,
+                        "red": self.prev,
+                        "blue": self.next,
                         }, -1)
 
                self.onLayoutFinish.append(self.do)
@@ -141,6 +146,11 @@ class PictureScreen(Screen):
                        else:
                                self.autoreload = False
 
+               if self.paused:
+                       self.paused = False
+                       self.slideshowcallback()
+                       self.closetimer.start(int(config.plugins.pictureviewer.slideshowtime.value))
+
        def do(self):
                if self.processing:
                        pass
@@ -177,7 +187,10 @@ class PictureScreen(Screen):
                self.setPicture(self.sourcefile)
 
        def setPicture(self, string):
-               self.setTitle(self.filename.split("/")[-1])
+               if not self.paused:
+                       self.setTitle(self.filename.split("/")[-1])
+               else:
+                       self.setTitle(_("pause") + ":" + self.filename.split("/")[-1])
                self.picload.startDecode(string)
 
        def setPictureCB(self, picInfo = None):
@@ -193,5 +206,37 @@ class PictureScreen(Screen):
                                self.closetimer = eTimer()
                                self.closetimer.timeout.get().append(self.slideshowcallback)
                                print "waiting", config.plugins.pictureviewer.slideshowtime.value, "seconds for next picture"
-                               self.closetimer.start(int(config.plugins.pictureviewer.slideshowtime.value))
+                               if not self.paused:
+                                       self.closetimer.start(int(config.plugins.pictureviewer.slideshowtime.value))
+
+       def pause(self):
+               if not self.slideshowcallback:
+                       return
+               if not self.paused:
+                       self.closetimer.stop()
+                       self.paused = True
+
+                       self.setTitle(_("pause") + ":" + self.filename.split("/")[-1])
+               else:
+                       self.paused = False
+
+                       self.setTitle(self.filename.split("/")[-1])
+                       self.slideshowcallback()
+                       self.closetimer.start(int(config.plugins.pictureviewer.slideshowtime.value))
+
+       def prev(self):
+               if not self.slideshowcallback:
+                       return
+               if not self.paused:
+                       self.closetimer.stop()
+                       self.paused = True
+               self.slideshowcallback(prev = True)
+
+       def next(self):
+               if not self.slideshowcallback:
+                       return
+               if not self.paused:
+                       self.closetimer.stop()
+                       self.paused = True
+               self.slideshowcallback()
 
index 204cf83..81a6acf 100755 (executable)
@@ -122,10 +122,15 @@ class Slideshow:
                        self.currentslideshowitem = -1
                        self.nextSlideshowItem()
 
-       def nextSlideshowItem(self):
-               if self.currentslideshowitem is not (len(self.filelist) - 1):
-                       self.currentslideshowitem = self.currentslideshowitem + 1
-                       filetoshow = self.filelist[self.currentslideshowitem][1]
+       def nextSlideshowItem(self, prev = False):
+               currentslideshowitem = self.currentslideshowitem
+               if prev:
+                       currentslideshowitem -= 2
+               if currentslideshowitem < 0:
+                       currentslideshowitem = -1
+               if currentslideshowitem is not (len(self.filelist) - 1):
+                       currentslideshowitem += 1
+                       filetoshow = self.filelist[currentslideshowitem][1]
                        if not self.wbviewer:
                                self.wbviewer = self.session.openWithCallback(
                                                                        self.cb,
@@ -137,7 +142,8 @@ class Slideshow:
                        else:
                                self.wbviewer.filename = filetoshow
                                self.wbviewer.do()
-               elif self.currentslideshowitem is (len(self.filelist) - 1) and int(config.plugins.pictureviewer.slideshowmode.value) is SLIDESHOWMODE_REPEAT:
+                       self.currentslideshowitem = currentslideshowitem
+               elif int(config.plugins.pictureviewer.slideshowmode.value) is SLIDESHOWMODE_REPEAT:
                        print "["+myname+"] restarting slideshow"
                        self.start()
                else: