From: Ivan Frade Date: Tue, 25 Aug 2009 18:16:36 +0000 (+0300) Subject: Refactor: retrieve the album art inside the dialog X-Git-Tag: mussorgsky-0.2-1~8 X-Git-Url: https://vcs.maemo.org/git/?p=mussorgsky;a=commitdiff_plain;h=a820f9fe6b422878b8f324db82c2bddc9cebe4f5 Refactor: retrieve the album art inside the dialog First step to show the dialog while downloading the stuff. --- diff --git a/src/aa_selection_dialog.py b/src/aa_selection_dialog.py index 8b0fbce..aaa1910 100644 --- a/src/aa_selection_dialog.py +++ b/src/aa_selection_dialog.py @@ -1,15 +1,32 @@ import hildon import gtk +from album_art import MussorgskyAlbumArt class AlbumArtSelectionDialog (gtk.Dialog): - def __init__ (self, parent, size): + def __init__ (self, parent, artist, album, size, downloader=None): + """ + parent window, amount of images to offer + Optionally downloader (for testing porpouses) + """ gtk.Dialog.__init__ (self, "Select album art", parent, gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)) - self.__create_view (size) + self.artist = artist + self.album = album self.size = size + self.__create_view (size) + + if (downloader): + self.downloader = downloader + else: + self.downloader = MussorgskyAlbumArt () + self.paths = self.downloader.get_alternatives (album, artist, 4) + self.selection_img = None + self.selection_thumb = None + self.__populate (self.paths) + def __create_view (self, size): hbox = gtk.HBox (homogeneous=True) @@ -31,7 +48,7 @@ class AlbumArtSelectionDialog (gtk.Dialog): self.vbox.add (hbox) - def populate (self, paths): + def __populate (self, paths): for i in range (0, self.size): if (len(paths) > i): @@ -41,21 +58,35 @@ class AlbumArtSelectionDialog (gtk.Dialog): self.images[i].set_from_stock (gtk.STOCK_CDROM, gtk.ICON_SIZE_DIALOG) def click_on_img (self, widget, event, position): + self.selection_img, self.selection_thumb = self.downloader.save_alternative (self.artist, + self.album, + self.paths[position]) self.response (position) + def get_selection (self): + return (self.selection_img, self.selection_thumb) + + + if __name__ == "__main__": - ALTERNATIVES = ["../hendrix.jpeg", "../hoover.jpeg", "../dylan.jpeg"] + class MockDownloader: + def __init__ (self): + self.alt = ["../hendrix.jpeg", "../hoover.jpeg", "../dylan.jpeg"] + def get_alternatives (self, album, artist, amount): + return self.alt [0:amount] + def save_alternative (self, artist, album, img): + return ("/home/user/.cache/media-art/" + img, "/home/user/.thumbnails/normal/" + img) + def clicked_button (self): - aadd = AlbumArtSelectionDialog (w, 4) + aadd = AlbumArtSelectionDialog (w, "rory gallagher", "irish tour", 4, MockDownloader (ALTERNATIVES)) aadd.show_all () - aadd.populate (ALTERNATIVES) response = aadd.run () if response == gtk.RESPONSE_CLOSE or response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_REJECT: print "Noooo" else: - print "Selected", response + print "Selected", aadd.get_selection () aadd.hide () w = gtk.Window () diff --git a/src/album_art_panel.py b/src/album_art_panel.py index 6788d19..cbb7074 100644 --- a/src/album_art_panel.py +++ b/src/album_art_panel.py @@ -3,7 +3,6 @@ import hildon import gtk, gobject from album_art_spec import getCoverArtThumbFileName from download_dialog import MussorgskyAlbumArtDownloadDialog -from album_art import MussorgskyAlbumArt from utils import escape_html from aa_selection_dialog import AlbumArtSelectionDialog @@ -68,19 +67,13 @@ class MussorgskyAlbumArtPanel (hildon.StackableWindow): it = treeview.get_model ().get_iter (path) album = treeview.get_model ().get_value (it, 3) artist = treeview.get_model ().get_value (it, 2) - if (not self.downloader): - self.downloader = MussorgskyAlbumArt () - - dialog = AlbumArtSelectionDialog (self, 4) - dialog.show_all () - paths = self.downloader.get_alternatives (album, artist, 4) - dialog.populate (paths) + dialog = AlbumArtSelectionDialog (self, artist, album, 4) + dialog.show_all () response = dialog.run () if (response > -1): - assert response < len (paths) - (img, thumb) = self.downloader.save_alternative (artist, album, paths[response]) + (img, thumb) = dialog.get_selection () pixbuf = gtk.gdk.pixbuf_new_from_file_at_size (thumb, 64, 64) treeview.get_model ().set (it, 1, pixbuf) dialog.destroy ()