--- a/immsview Sat Feb 07 00:30:40 2004 -0500
+++ b/immsview Sat Feb 07 10:58:54 2004 -0500
@@ -20,9 +20,12 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-_version_ = "$Id: immsview 1709 2004-02-07 05:30:40Z fabien $"
+_version_ = "$Id: immsview 1710 2004-02-07 15:58:54Z fabien $"
# $Log$
+# Revision 1.28 2004/02/07 15:58:54 fabien
+# Use Python-Gnuplot instead of immsplot.
+#
# Revision 1.27 2004/02/07 05:30:40 fabien
# Now three updating function. (see IMMSStore.__init__).
# Currently, I'm better to replace everything. But eh, YMMV.
@@ -143,6 +146,7 @@
import gettext
import xmms.control
import time
+import Gnuplot
gtk.glade.bindtextdomain('immsview', '/usr/share/immsview/LANG')
gtk.glade.textdomain('immsview')
@@ -285,6 +289,7 @@
COL_SELECT = 4
COL_UID = 5
COL_RATING_COLOR = 6
+ COL_PATHS_NUMBER = 7
def __init__(self, db):
gtk.ListStore.__init__(self,
gobject.TYPE_INT,
@@ -294,6 +299,7 @@
gobject.TYPE_BOOLEAN,
gobject.TYPE_INT,
gobject.TYPE_STRING,
+ gobject.TYPE_INT,
)
self.db = db
self.set_default_sort_func(self.default_sort)
@@ -325,6 +331,7 @@
IMMSStore.COL_LAST, tune['last'],
IMMSStore.COL_LAST_STR, strtime(self.curtime-tune['last']),
IMMSStore.COL_RATING_COLOR, rating_to_color(tune['rating']),
+ IMMSStore.COL_PATHS_NUMBER, len(tune['path']),
IMMSStore.COL_SELECT, gtk.FALSE)
return giter
def update(self):
@@ -414,6 +421,15 @@
else:
giter = self.update_giter(giter, song)
return giter
+ def get_ratings(self):
+ res = []
+ giter = self.get_iter_first()
+ while giter:
+ uid = self.get_value(giter, IMMSStore.COL_UID)
+ rating = self.get_value(giter, IMMSStore.COL_RATING)
+ res.append((uid, rating))
+ giter = self.iter_next(giter)
+ return res
def update_giter(self, giter, path = None):
uid = self.get_value(giter, IMMSStore.COL_UID)
tunes = self.db.get_ratings_and_info([uid,])
@@ -428,6 +444,21 @@
## else:
## return gtk.ListStore.get_value(self, giter, col)
+class IMMSPlot(Gnuplot.Gnuplot):
+ def __init__(self, db):
+ self.db = db;
+ Gnuplot.Gnuplot.__init__(self)
+ def plot_rate(self):
+ array = [0] * (150-75+1)
+ for uid, rating in self.db.get_ratings():
+ array[rating-75] += 1
+ d1 = Gnuplot.Data(range(75,150+1), array,
+ with='impulses')
+ d2 = Gnuplot.Data(range(75,150+1), array,
+ smooth = 'bezier')
+ self.plot(d1, d2, title='rate frequency')
+ self.gnuplot.flush()
+
class IMMSView(gtk.TreeView):
def __init__(self, model, xmms):
gtk.TreeView.__init__(self, model)
@@ -452,6 +483,10 @@
text = IMMSStore.COL_LAST_STR)
column.set_sort_column_id(IMMSStore.COL_LAST)
self.append_column(column)
+ column = gtk.TreeViewColumn(_("#"), renderer,
+ weight_set = IMMSStore.COL_SELECT,
+ text = IMMSStore.COL_PATHS_NUMBER)
+ self.append_column(column)
column = gtk.TreeViewColumn(_("File"), renderer,
weight_set = IMMSStore.COL_SELECT,
text = IMMSStore.COL_PATH)
@@ -493,19 +528,18 @@
class IMMSToolbar(gtk.Toolbar):
- # _IMMSPLOT_COMMAND = 'immsplot &'
- _IMMSPLOT_COMMAND = '/home/fabien/bin/immsplot &'
_SLEEP_TIME = 5
- def __init__(self, iview, xmms):
+ def __init__(self, iview, xmms, plotter):
gtk.Toolbar.__init__(self)
self.iview = iview
self.xmms = xmms
+ self.plot = plotter
self.create_widgets()
def create_widgets(self):
self.append_item(_('Refresh'), _('Refresh list'),
None, None, self.do_refresh)
self.append_item(_('Plot'), _('Show graph of rates'),
- None, None, self.plot)
+ None, None, self.do_plot)
self.append_item(_('Current'), _('Get current song'),
None, None, self.do_get_current)
self.append_item(_('Previous'), _('Play previous song'),
@@ -514,8 +548,8 @@
None, None, self.do_play)
self.append_item(_('Next'), _('Play next song'),
None, None, self.do_play_next)
- def plot(self, dummy):
- os.system(self._IMMSPLOT_COMMAND)
+ def do_plot(self, dummy):
+ self.plot.plot_rate()
def do_refresh(self, dummy):
self.iview.get_model().update()
def do_get_current(self, dummy):
@@ -563,7 +597,8 @@
vbox.pack_end(scroll)
iview.show()
scroll.show()
- toolbar = IMMSToolbar(iview, self.xmms)
+ plotter = IMMSPlot(self.model)
+ toolbar = IMMSToolbar(iview, self.xmms, plotter)
vbox.pack_start(toolbar, expand = gtk.FALSE)
toolbar.show()
root.show()