[svn] Add some colors related to the rating. immsview
authorfabien
Thu, 05 Feb 2004 02:07:38 -0500
branchimmsview
changeset 18 cce22ab553d1
parent 17 bef598558a5b
child 19 c01d2690b458
[svn] Add some colors related to the rating.
immsview
--- a/immsview	Wed Feb 04 17:21:47 2004 -0500
+++ b/immsview	Thu Feb 05 02:07:38 2004 -0500
@@ -20,9 +20,12 @@
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-_immsview_version = "$Id: immsview 1699 2004-02-04 22:21:47Z fabien $"
+_immsview_version = "$Id: immsview 1700 2004-02-05 07:07:38Z fabien $"
 
 # $Log$
+# Revision 1.19  2004/02/05 07:07:38  fabien
+# Add some colors related to the rating.
+#
 # Revision 1.18  2004/02/04 22:21:47  fabien
 # Try to update the Last string dynamically... doesn't seem to work.
 #
@@ -220,6 +223,17 @@
 	    tune = cu.fetchone()
         return results
 
+def rating_to_color(rate):
+    if rate < 85:
+        return "red"
+    if rate < 95:
+        return "orange"
+    if rate < 110:
+        return "yellow"
+    if rate < 130:
+        return "green"
+    return "cyan"
+
 class IMMSStore(gtk.ListStore):
     COL_RATING = 0
     COL_PATH = 1
@@ -227,6 +241,7 @@
     COL_LAST = 3
     COL_SELECT = 4
     COL_UID = 5
+    COL_RATING_COLOR = 6
     def __init__(self, db):
         gtk.ListStore.__init__(self,
                                gobject.TYPE_INT,
@@ -234,7 +249,9 @@
                                gobject.TYPE_STRING,
                                gobject.TYPE_INT,
                                gobject.TYPE_BOOLEAN,
-                               gobject.TYPE_INT)
+                               gobject.TYPE_INT,
+                               gobject.TYPE_STRING,
+                               )
         self.db = db
         self.set_default_sort_func(self.default_sort)
         self.set_sort_column_id(-1, 0)
@@ -249,6 +266,7 @@
                  IMMSStore.COL_PATH, tune['path'],
                  IMMSStore.COL_LAST, tune['last'],
                  IMMSStore.COL_LAST_STR, strtime(time.time()-tune['last']),
+                 IMMSStore.COL_RATING_COLOR, rating_to_color(tune['rating']),
                  IMMSStore.COL_SELECT, gtk.FALSE)
         return giter
     def refresh(self):
@@ -297,12 +315,12 @@
             return self.tune_to_giter(tunes[0], giter)
         return giter
 ##     def get_value(self, giter, col):
-##         # sniff!  doesn't seem to work! :(
+##         # sniff!  Can't override built-ins
 ##         if col == IMMSStore.COL_LAST_STR:
-##             print "translate"
-##             return strtime(time.time() - self.get_value(giter, IMMSStore.COL_LAST))
+##             return strtime(time.time() -
+##                            self.get_value(giter, IMMSStore.COL_LAST))
 ##         else:
-##             gtk.ListStore.get_value(self, giter, col)
+##             return gtk.ListStore.get_value(self, giter, col)
 
 class IMMSView(gtk.TreeView):
 	def __init__(self, model, xmms):
@@ -312,11 +330,17 @@
 	def create_widgets(self):
             renderer = gtk.CellRendererText()
             renderer.set_property('weight', 700)
+            renderer.set_property('background-set', gtk.TRUE)
             column = gtk.TreeViewColumn(_("Rating"), renderer,
                                         weight_set = IMMSStore.COL_SELECT,
+                                        background = IMMSStore.COL_RATING_COLOR,
                                         text = IMMSStore.COL_RATING)
             column.set_sort_column_id(IMMSStore.COL_RATING)
             self.append_column(column)
+            
+            renderer = gtk.CellRendererText()
+            renderer.set_property('weight', 700)            
+            # renderer.set_property('background-set', gtk.FALSE)
             column = gtk.TreeViewColumn(_("Last"), renderer,
                                         weight_set = IMMSStore.COL_SELECT,
                                         text = IMMSStore.COL_LAST_STR)
@@ -365,7 +389,7 @@
 class IMMSToolbar(gtk.Toolbar):
     # _IMMSPLOT_COMMAND = 'immsplot &'
     _IMMSPLOT_COMMAND = '/home/fabien/bin/immsplot &'
-    _SLEEP_TIME = 1
+    _SLEEP_TIME = 5
     def __init__(self, iview, xmms):
         gtk.Toolbar.__init__(self)
         self.iview = iview
@@ -395,16 +419,22 @@
         fn = self.iview.get_file_selected()
         if fn:
             self.xmms.play_file(fn)
-        time.sleep(self._SLEEP_TIME)
+        self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
     def do_play_prev(self, dummy):
         self.xmms.playlist_prev()
-        time.sleep(self._SLEEP_TIME)
+        self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
     def do_play_next(self, dummy):
         self.xmms.playlist_next()
-        time.sleep(self._SLEEP_TIME)
+        self.sleep(self._SLEEP_TIME)
         self.do_get_current(dummy)
+    def sleep(self, secs):
+	start = time.time()
+	while (time.time() - start) < secs:
+		time.sleep(0.2)
+		if gtk.main_iteration_do(gtk.FALSE):
+			break;
 
 root = gtk.Window()
 root.set_title(_("IMMSView"))