--- 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):