All pastes #912445 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-21 11:52 UTC
rendered paste body
Index: slideshow_view.py
===================================================================
--- slideshow_view.py	(wersja 5059)
+++ slideshow_view.py	(kopia robocza)
@@ -265,7 +265,11 @@
         if not self.controller.focused:
             return False
 
-        self.controller.playing = not self.controller.playing
+        if not self.controller.paused and not self.controller.playing:
+            self.controller.playing = True
+        else:
+            self.controller.paused = not self.controller.paused
+
         return True
 
     def playing__set(self, playing):
Index: slideshow_controller.py
===================================================================
--- slideshow_controller.py	(wersja 5059)
+++ slideshow_controller.py	(kopia robocza)
@@ -37,8 +37,10 @@
     supported_models = ('base:list_model',)
 
     duration = 5.0
+    backwards = False
     _call_later = None
     _playing = False
+    _paused = False
 
     def _cancel_last_call_later(self):
         if self._call_later != None and self._call_later.active():
@@ -64,7 +66,7 @@
             return True
          
         elif input_event.action == EventAction.PAUSE:
-            self.playing = False
+            self.paused = True
             return True
         
         elif input_event.action == EventAction.STOP:
@@ -76,19 +78,37 @@
 
     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 and self.backwards:
+            self.previous_image()
+            self._call_later = reactor.callLater(self.duration,
+                                                 self.previous_image)
         else:
+            if not self.paused:
+                    self.backwards = False
             self._cancel_last_call_later()
 
     def playing__get(self):
         return self._playing
 
+    def paused__set(self, paused):
+	self._paused = paused
+        if paused:
+             self.playing = False
+	else:
+             self.playing = True
+
+    def paused__get(self):
+        return self._paused
+
     def focused_changed(self, old_focused, new_focused):
         if new_focused == False and self.playing == True:
-            self.playing = False
+            self.paused = True
+	elif new_focused == True and self.paused == True:
+            self.paused = False
 
     def next_image(self):
         self._cancel_last_call_later()
@@ -98,10 +118,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 +135,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