New panel for album art handling
authorIvan Frade <ivan.frade@gmail.com>
Wed, 19 Aug 2009 20:51:17 +0000 (23:51 +0300)
committerIvan Frade <ivan.frade@gmail.com>
Wed, 19 Aug 2009 20:51:17 +0000 (23:51 +0300)
Automatic download as menu option.
Donwload dialog using a TreeModel instead of a list.

src/album_art_panel.py [new file with mode: 0644]
src/download_dialog.py
src/mussorgsky.py

diff --git a/src/album_art_panel.py b/src/album_art_panel.py
new file mode 100644 (file)
index 0000000..ae345ab
--- /dev/null
@@ -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 = ("<b>%s</b>\n<small>%s</small>" % (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 ()
index 469272a..13dae7a 100644 (file)
@@ -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))
index 6afca55..ce1d7a4 100755 (executable)
@@ -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)