From: Ivan Frade Date: Wed, 19 Aug 2009 20:51:17 +0000 (+0300) Subject: New panel for album art handling X-Git-Tag: mussorgsky-0.2-1~23 X-Git-Url: http://git.maemo.org/git/?a=commitdiff_plain;h=bf7f4da65a039c45d8df72acd637c3fd01f7e1d9;hp=b28220e2eec4086bb85a114d454e88f9de5ae413;p=mussorgsky New panel for album art handling Automatic download as menu option. Donwload dialog using a TreeModel instead of a list. --- diff --git a/src/album_art_panel.py b/src/album_art_panel.py new file mode 100644 index 0000000..ae345ab --- /dev/null +++ b/src/album_art_panel.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python2.5 +import hildon +import gtk, gobject +from tracker_backend import TrackerBackend +from album_art_spec import getCoverArtThumbFileName +from download_dialog import MussorgskyAlbumArtDownloadDialog + +class MussorgskyAlbumArtPanel (hildon.StackableWindow): + + def __init__ (self): + hildon.StackableWindow.__init__ (self) + self.set_title ("Album art handling") + self.set_border_width (12) + self.__create_view () + self.model = gtk.ListStore (str, gtk.gdk.Pixbuf, str, str) + + self.tracker = TrackerBackend () + + pairs = self.tracker.get_all_pairs_artist_album () + for p in pairs: + if (not p[1]): + continue + album_art_path = getCoverArtThumbFileName (p[1]) + try: + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size (album_art_path, 124, 124) + except gobject.GError: + pixbuf = None + t = ("%s\n%s" % (p[1], p[0]), pixbuf, p[0], p[1]) + self.model.append (t) + + + self.treeview.set_model (self.model) + + def __create_view (self): + vbox = gtk.VBox (spacing=12, homogeneous=False) + + self.treeview = gtk.TreeView () + self.treeview.connect ("row-activated", self.row_activated_cb) + + artist_column = gtk.TreeViewColumn ("Artist", gtk.CellRendererText (), markup=0) + self.treeview.append_column (artist_column) + + album_art = gtk.TreeViewColumn ("Album art", gtk.CellRendererPixbuf (), pixbuf=1) + self.treeview.append_column (album_art) + + vbox.add (self.treeview) + + self.add (vbox) + + # Menu + menu = hildon.AppMenu () + automatic_retrieval = hildon.Button (hildon.BUTTON_STYLE_NORMAL, + hildon.BUTTON_ARRANGEMENT_HORIZONTAL) + automatic_retrieval.set_title ("Automatic retrieval") + automatic_retrieval.connect ("clicked", self.get_all_album_art) + menu.append (automatic_retrieval) + menu.show_all () + self.set_app_menu (menu) + + def get_all_album_art (self, user_data): + dialog = MussorgskyAlbumArtDownloadDialog (self) + dialog.show_all () + dialog.do_the_job (self.model) + + def row_activated_cb (self, treeview, path, view_colum): + print "Get alternatives for..." + it = treeview.get_model ().get_iter (path) + print treeview.get_model ().get_value (it, 3) + + + +if __name__ == "__main__": + + window = MussorgskyAlbumArtPanel () + window.connect ("destroy", gtk.main_quit ) + window.show_all () + gtk.main () diff --git a/src/download_dialog.py b/src/download_dialog.py index 469272a..13dae7a 100644 --- a/src/download_dialog.py +++ b/src/download_dialog.py @@ -86,12 +86,6 @@ class MussorgskyAlbumArtDownloadDialog (gtk.Dialog): if __name__ == "__main__": - PAIRS_NO = [("Led Zeppelin", "Led Zeppelin IV"), - ("Pink Floyd", "The Wall"), - ("Deep purple", "Made in Japan"), - ("", "Freakin' out"), - ("Dinah Washington", "")] - PAIRS_store = gtk.ListStore (str, gtk.gdk.Pixbuf, str, str) for i in range (0, 100): PAIRS_store.append (("blablabal", None, "Artist %d" % i, "Album %d" %i)) diff --git a/src/mussorgsky.py b/src/mussorgsky.py index 6afca55..ce1d7a4 100755 --- a/src/mussorgsky.py +++ b/src/mussorgsky.py @@ -3,7 +3,7 @@ import hildon import gtk, gobject from tracker_backend import TrackerBackend from edit_panel import MussorgskyEditPanel -from download_dialog import MussorgskyAlbumArtDownloadDialog +from album_art_panel import MussorgskyAlbumArtPanel class MussorgskyMainWindow (hildon.StackableWindow): @@ -43,19 +43,16 @@ class MussorgskyMainWindow (hildon.StackableWindow): self.tracker.count_songs_wo_album ()) return False - def get_all_album_art (self, user_data): - print "Get all album art" - artist_album= self.tracker.get_all_pairs_artist_album () - dialog = MussorgskyAlbumArtDownloadDialog (self) - dialog.show_all () - dialog.do_the_job (artist_album) - def browse_clicked (self, widget): list_songs = self.tracker.get_all_songs () list_albums = self.tracker.get_list_of_known_albums () list_artists = self.tracker.get_list_of_known_artists () self.show_edit_panel (list_songs, list_albums, list_artists) + def album_art_clicked (self, widget): + panel = MussorgskyAlbumArtPanel () + panel.show_all () + def create_main_view (self): vbox = gtk.VBox (spacing=12, homogeneous=False) @@ -85,7 +82,7 @@ class MussorgskyMainWindow (hildon.StackableWindow): album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL, hildon.BUTTON_ARRANGEMENT_HORIZONTAL) album_art.set_title ("Album art") - album_art.connect ("clicked", self.get_all_album_art) + album_art.connect ("clicked", self.album_art_clicked) all_songs_row.add (album_art) vbox.add (all_songs_row)