# HG changeset patch # User fabien # Date 1075845028 18000 # Node ID 02c10487e5a0bb213a7d94ec29a1bd0ae69194e6 # Parent d275de5d2be21a2ad3c7e159250fbf91eefd1c59 [svn] Update also on double click. diff -r d275de5d2be2 -r 02c10487e5a0 immsview --- a/immsview Tue Feb 03 15:55:27 2004 -0500 +++ b/immsview Tue Feb 03 16:50:28 2004 -0500 @@ -20,9 +20,12 @@ # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. -_immsview_version = "$Id: immsview 1694 2004-02-03 20:55:27Z fabien $" +_immsview_version = "$Id: immsview 1695 2004-02-03 21:50:28Z fabien $" # $Log$ +# Revision 1.14 2004/02/03 21:50:28 fabien +# Update also on double click. +# # Revision 1.13 2004/02/03 20:55:27 fabien # Play selected: check if the file exist, elsewhere try to # update it through the Db. @@ -163,12 +166,12 @@ FROM Library WHERE Library.uid = %d;''' % (uid,)) return cu.fetchone() - def _get_library_by_path(self, path): + def get_uid_by_path(self, path): cu = self.cx.cursor() - cu.execute('''SELECT Library.uid, Library.sid + cu.execute('''SELECT Library.uid FROM Library WHERE Library.path = '%s';''' % (path)) - return cu.fetchone() + return cu.fetchall() def get_ratings_and_info(self, uids = None): print time.ctime(time.time()) + ": querying" cu = self.cx.cursor() @@ -232,6 +235,7 @@ IMMSStore.COL_LAST_STR, strtime(curtime-tune['last']), IMMSStore.COL_LAST, tune['last'], IMMSStore.COL_SELECT, gtk.FALSE) + return giter def refresh(self): curtime = time.time() col, order = self.get_sort_column_id() @@ -247,25 +251,36 @@ self.tune_to_giter(tune, curtime = curtime) print time.ctime(time.time()) + ": end insert" self.set_sort_column_id(col, order) - def find_selection(self): + def find_selected_giter(self): + giter = self.get_iter_first() + while giter: + if self.get_value(giter, IMMSStore.COL_SELECT): + break + giter = self.iter_next(giter) + return giter + def find_giter_from_uid(self, uid): giter = self.get_iter_first() while giter: - if self.get_value(giter, 4): - return self.get_path(giter) + if self.get_value(giter, IMMSStore.COL_UID) == uid: + break giter = self.iter_next(giter) - return None - def find_song_path(self, song): - giter = self.get_iter_first() - while giter: - if self.get_value(giter, 1) == song: - return self.get_path(giter) - giter = self.iter_next(giter) - return None + return giter + def find_giter_from_path(self, song): + uids = self.db.get_uid_by_path(song) + if len(uids) == 0: + return None + uid = uids[0] + giter = self.find_giter_from_uid(uid[0]) + if not giter: + tunes = self.db.get_ratings_and_info(uids) + if len(tunes) > 0: + giter = self.tune_to_giter(tunes[0]) + return giter def update_iter(self, giter): uid = self.get_value(giter, IMMSStore.COL_UID) tunes = self.db.get_ratings_and_info([uid,]) - for tune in tunes: - self.tune_to_giter(tune, giter) + if len(tunes) > 0: + return self.tune_to_giter(tunes[0], giter) return giter class IMMSView(gtk.TreeView): @@ -297,29 +312,21 @@ self.connect('row-activated', self.on_row_activated) def set_current_song(self, song): model = self.get_model() - gpath = model.find_selection() - if gpath: - giter = model.get_iter(gpath) + giter = model.find_selected_giter() + if giter: model.set_value(giter, IMMSStore.COL_SELECT, gtk.FALSE) - gpath = model.find_song_path(song) - if gpath: - giter = model.get_iter(gpath) + giter = model.find_giter_from_path(song) + if giter: model.set_value(giter, IMMSStore.COL_SELECT, gtk.TRUE) - self.set_cursor(gpath) + self.set_cursor(model.get_path(giter)) def get_filename(self, giter): - update = 0 - fn = model.get_value(giter, IMMSStore.COL_PATH) + model = self.get_model() + fn = model.get_value(model.update_iter(giter), IMMSStore.COL_PATH) try: os.stat(fn) except OSError: - update = 1 - if update: - model.update_iter(giter) - fn = model.get_value(giter, IMMSStore.COL_PATH) - try: - os.stat(fn) - except OSError: - return None + return None + return fn def get_file_selected(self): model, giter = self.get_selection().get_selected() if giter: @@ -328,7 +335,9 @@ def on_row_activated(self, tview, path, col): model = self.get_model() giter = model.get_iter(path) + fn = self.get_filename(giter) self.set_current_song(fn) + self.xmms.play_file(fn) class IMMSToolbar(gtk.Toolbar):