18 # You should have received a copy of the GNU General Public License |
18 # You should have received a copy of the GNU General Public License |
19 # along with GNU Emacs; see the file COPYING. If not, write to the |
19 # along with GNU Emacs; see the file COPYING. If not, write to the |
20 # Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 # Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
21 # Boston, MA 02111-1307, USA. |
21 # Boston, MA 02111-1307, USA. |
22 |
22 |
23 _immsview_version = "$Id: immsview 1690 2004-02-02 06:54:09Z fabien $" |
23 _immsview_version = "$Id: immsview 1691 2004-02-02 15:42:43Z fabien $" |
24 |
24 |
25 # $Log$ |
25 # $Log$ |
|
26 # Revision 1.10 2004/02/02 15:42:43 fabien |
|
27 # OK, reset current after changing song manually... however, I most sleep for almost a second to be sure to catch it. |
|
28 # |
26 # Revision 1.9 2004/02/02 06:54:09 fabien |
29 # Revision 1.9 2004/02/02 06:54:09 fabien |
27 # Add cvs log since I don't maintain a changelog currently. |
30 # Add cvs log since I don't maintain a changelog currently. |
28 # |
31 # |
29 # Revision 1.8 2004/02/02 06:44:10 fabien |
32 # Revision 1.8 2004/02/02 06:44:10 fabien |
30 # All functions are now implemented (with a somewhat "cleaner" interface. |
33 # All functions are now implemented (with a somewhat "cleaner" interface. |
120 |
123 |
121 class IMMSDb: |
124 class IMMSDb: |
122 _dbname = os.environ['HOME'] + '/.imms/imms.db' |
125 _dbname = os.environ['HOME'] + '/.imms/imms.db' |
123 # _dbname = os.environ['HOME'] + '/.imms/imms.backup.db' |
126 # _dbname = os.environ['HOME'] + '/.imms/imms.backup.db' |
124 def __init__(self): |
127 def __init__(self): |
125 self.cx = sqlite.connect(IMMSDb._dbname, |
128 self.cx = sqlite.connect(IMMSDb._dbname, autocommit = 1, |
126 encoding = ('utf-8', 'replace')) |
129 timeout = 2, encoding = ('utf-8', 'replace')) |
127 def commit(self): |
130 def commit(self): |
128 self.cx.commit() |
131 # self.cx.commit() |
|
132 pass |
129 def _get_ratings(self, min = 0, max = 250): |
133 def _get_ratings(self, min = 0, max = 250): |
130 cu = self.cx.cursor() |
134 cu = self.cx.cursor() |
131 cu.execute('''SELECT Rating.uid, Rating.rating |
135 cu.execute('''SELECT Rating.uid, Rating.rating |
132 FROM Rating |
136 FROM Rating |
133 WHERE Rating.rating >= %d |
137 WHERE Rating.rating >= %d |
255 if giter: |
259 if giter: |
256 return model.get_value(giter, IMMSStore.COL_PATH) |
260 return model.get_value(giter, IMMSStore.COL_PATH) |
257 return None |
261 return None |
258 |
262 |
259 class IMMSToolbar(gtk.Toolbar): |
263 class IMMSToolbar(gtk.Toolbar): |
260 def __init__(self, iview, xmms): |
264 # _IMMSPLOT_COMMAND = 'immsplot &' |
261 gtk.Toolbar.__init__(self) |
265 _IMMSPLOT_COMMAND = '/home/fabien/bin/immsplot &' |
262 self.iview = iview |
266 _SLEEP_TIME = 1 |
263 self.xmms = xmms |
267 def __init__(self, iview, xmms): |
264 self.create_widgets() |
268 gtk.Toolbar.__init__(self) |
265 def create_widgets(self): |
269 self.iview = iview |
266 self.append_item(_('Refresh'), _('Refresh list'), |
270 self.xmms = xmms |
267 None, None, self.do_refresh) |
271 self.create_widgets() |
268 self.append_item(_('Plot'), _('Show graph of rates'), |
272 def create_widgets(self): |
269 None, None, self.plot) |
273 self.append_item(_('Refresh'), _('Refresh list'), |
270 self.append_item(_('Current'), _('Get current song'), |
274 None, None, self.do_refresh) |
271 None, None, self.do_get_current) |
275 self.append_item(_('Plot'), _('Show graph of rates'), |
272 self.append_item(_('Play'), _('Play selection'), |
276 None, None, self.plot) |
273 None, None, self.do_play) |
277 self.append_item(_('Current'), _('Get current song'), |
274 def plot(self, data): |
278 None, None, self.do_get_current) |
275 os.system('/home/fabien/bin/immsplot &') |
279 self.append_item(_('Previous'), _('Play previous song'), |
276 def do_refresh(self, data): |
280 None, None, self.do_play_prev) |
|
281 self.append_item(_('Play'), _('Play selection'), |
|
282 None, None, self.do_play) |
|
283 self.append_item(_('Next'), _('Play next song'), |
|
284 None, None, self.do_play_next) |
|
285 def plot(self, dummy): |
|
286 os.system(self._IMMSPLOT_COMMAND) |
|
287 def do_refresh(self, dummy): |
277 self.iview.get_model().refresh() |
288 self.iview.get_model().refresh() |
278 def do_get_current(self, data): |
289 def do_get_current(self, dummy): |
279 song = self.xmms.get_current_file() |
290 song = self.xmms.get_current_file() |
280 self.iview.set_current_song(song) |
291 self.iview.set_current_song(song) |
281 def do_play(self, data): |
292 def do_play(self, dummy): |
282 fn = self.iview.get_file_selected() |
293 fn = self.iview.get_file_selected() |
283 if fn: |
294 if fn: |
284 self.xmms.play_file(fn) |
295 self.xmms.play_file(fn) |
|
296 time.sleep(self._SLEEP_TIME) |
|
297 self.do_get_current(dummy) |
|
298 def do_play_prev(self, dummy): |
|
299 self.xmms.playlist_prev() |
|
300 time.sleep(self._SLEEP_TIME) |
|
301 self.do_get_current(dummy) |
|
302 def do_play_next(self, dummy): |
|
303 self.xmms.playlist_next() |
|
304 time.sleep(self._SLEEP_TIME) |
|
305 self.do_get_current(dummy) |
|
306 |
285 |
307 |
286 root = gtk.Window() |
308 root = gtk.Window() |
287 root.set_name(_("IMMSview")) |
309 root.set_title(_("IMMSView")) |
288 root.connect('destroy', gtk.mainquit) |
310 root.connect('destroy', gtk.mainquit) |
289 vbox = gtk.VBox(spacing = 3) |
311 vbox = gtk.VBox(spacing = 3) |
290 root.add(vbox) |
312 root.add(vbox) |
291 vbox.show() |
313 vbox.show() |
292 model = IMMSStore(IMMSDb()) |
314 model = IMMSStore(IMMSDb()) |