[svn] Add periodic timeout. immsview
authorfabien
Thu, 12 Feb 2004 09:38:06 -0500
branchimmsview
changeset 35 ab72cbd172b8
parent 34 5bef7600193c
child 36 e648d6852983
[svn] Add periodic timeout.
immsview
--- a/immsview	Wed Feb 11 10:39:27 2004 -0500
+++ b/immsview	Thu Feb 12 09:38:06 2004 -0500
@@ -20,9 +20,12 @@
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-_version_ = "$Id: immsview 1715 2004-02-10 04:29:08Z fabien $"
+_version_ = "$Id: immsview 1720 2004-02-12 14:38:06Z fabien $"
 
 # $Log$
+# Revision 1.31  2004/02/12 14:38:06  fabien
+# Add periodic timeout.
+#
 # Revision 1.30  2004/02/10 04:29:08  fabien
 # Many cleanup, both architecture (division of interface), encoding
 # behavior and also many bugs corrected.
@@ -413,6 +416,7 @@
         self.iview = iview
         self.xmms = xmms
         self.plot = plotter
+        self.current_song = ''
         self.create_widgets()
     def create_widgets(self):
         self.append_item(_('Refresh'), _('Refresh list'),
@@ -427,27 +431,30 @@
                          None, None, self.do_play)
         self.append_item(_('Next'), _('Play next song'),
                          None, None, self.do_play_next)
-    def do_plot(self, dummy):
+    def do_plot(self, dummy = None):
         self.plot.plot_rate()
-    def do_refresh(self, dummy):
-            self.iview.get_model().update()
-    def do_get_current(self, dummy):
+    def do_refresh(self, dummy = None):
+        self.iview.get_model().update()
+        self.current_song = ''
+    def do_get_current(self, dummy = None):
         song = self.xmms.get_current_file()
-        try:
-            self.iview.set_current_song(song)
-        except Exception, e:
-            print >> stderr, e
-    def do_play(self, dummy):
+        if song != self.current_song:
+            try:
+                self.iview.set_current_song(song)
+                self.current_song = song
+            except Exception, e:
+                print >> stderr, e
+    def do_play(self, dummy = None):
         fn = self.iview.get_file_selected()
         if fn:
             self.xmms.play_file(fn)
         self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
-    def do_play_prev(self, dummy):
+    def do_play_prev(self, dummy = None):
         self.xmms.playlist_prev()
         self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
-    def do_play_next(self, dummy):
+    def do_play_next(self, dummy = None):
         self.xmms.playlist_next()
         self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
@@ -458,7 +465,12 @@
 		if gtk.main_iteration_do(gtk.FALSE):
 			break;
 
+def _timeout_get_current(tb):
+    tb.do_get_current()
+    return gtk.TRUE
+
 class Application:
+    REFRESH_RATE = 5000
     def __init__(self):
         self.xmms = XMMSControl()
         self.db = IMMSDb()
@@ -485,7 +497,7 @@
         toolbar.show()
         root.show()
         toolbar.do_refresh(None)
-        toolbar.do_get_current(None)
+        gtk.timeout_add(self.REFRESH_RATE, _timeout_get_current, toolbar)
 
 if __name__ == '__main__':
     app = Application()