All pastes #911422 Raw Edit

Mine

public text v1 · immutable
·published 2008-02-20 18:15 UTC
rendered paste body
Index: /home/michal/soft/elisa/elisa/elisa-plugins/elisa/plugins/slideshow/slideshow_controller.py
===================================================================
--- /home/michal/soft/elisa/elisa/elisa-plugins/elisa/plugins/slideshow/slideshow_controller.py	(wersja 5045)
+++ /home/michal/soft/elisa/elisa/elisa-plugins/elisa/plugins/slideshow/slideshow_controller.py	(kopia robocza)
@@ -37,6 +37,7 @@
     supported_models = ('base:list_model',)
 
     duration = 5.0
+    backwards = False
     _call_later = None
     _playing = False
 
@@ -64,7 +65,7 @@
             return True
          
         elif input_event.action == EventAction.PAUSE:
-            self.playing = False
+            self._cancel_last_call_later()
             return True
         
         elif input_event.action == EventAction.STOP:
@@ -76,19 +77,26 @@
 
     def playing__set(self, playing):
         self._playing = playing
-        if playing:
+        if playing and not self.backwards:
             self.next_image()
             self._call_later = reactor.callLater(self.duration,
                                                  self.next_image)
+        elif playing:
+            self.previous_image()
+            self._call_later = reactor.callLater(self.duration,
+                                                 self.previous_image)
         else:
             self._cancel_last_call_later()
+            self.backwards = False
 
     def playing__get(self):
         return self._playing
 
     def focused_changed(self, old_focused, new_focused):
         if new_focused == False and self.playing == True:
-            self.playing = False
+            self._cancel_last_call_later()
+        elif new_focused == True and self.playing == True:
+            self.playing = True  
 
     def next_image(self):
         self._cancel_last_call_later()
@@ -98,10 +106,12 @@
             self.info("Loading image at index %r", index)
             self.current_index = index
             if self.playing == True:
+                self.backwards = False
                 self._call_later = reactor.callLater(self.duration,
                                                      self.next_image)
             return True
         else:
+            self.playing = False
             self.info("Reached end of slideshow")
             return False
 
@@ -113,10 +123,12 @@
             self.info("Loading image at index %r", index)
             self.current_index = index
             if self.playing == True:
+                self.backwards = True
                 self._call_later = reactor.callLater(self.duration,
                                                      self.previous_image)
             return True
         else:
+            self.playing = False
             self.info("Reached beginning of slideshow")
             return False