From ad4b732e9e889ed13408a368e2241b02b9818090 Mon Sep 17 00:00:00 2001 From: Ivan Frade Date: Tue, 25 Aug 2009 21:56:59 +0300 Subject: [PATCH] Retrieving album art in a callback --- src/aa_selection_dialog.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/aa_selection_dialog.py b/src/aa_selection_dialog.py index aaa1910..47086d1 100644 --- a/src/aa_selection_dialog.py +++ b/src/aa_selection_dialog.py @@ -1,5 +1,6 @@ import hildon import gtk +import gobject from album_art import MussorgskyAlbumArt class AlbumArtSelectionDialog (gtk.Dialog): @@ -22,11 +23,11 @@ class AlbumArtSelectionDialog (gtk.Dialog): self.downloader = downloader else: self.downloader = MussorgskyAlbumArt () - self.paths = self.downloader.get_alternatives (album, artist, 4) + + gobject.idle_add (self.__get_alternatives_async) self.selection_img = None self.selection_thumb = None - self.__populate (self.paths) - + hildon.hildon_gtk_window_set_progress_indicator (self, 1) def __create_view (self, size): hbox = gtk.HBox (homogeneous=True) @@ -48,6 +49,11 @@ class AlbumArtSelectionDialog (gtk.Dialog): self.vbox.add (hbox) + def __get_alternatives_async (self): + self.paths = self.downloader.get_alternatives (self.album, self.artist, 4) + self.__populate (self.paths) + hildon.hildon_gtk_window_set_progress_indicator (self, 0) + def __populate (self, paths): for i in range (0, self.size): @@ -70,17 +76,19 @@ class AlbumArtSelectionDialog (gtk.Dialog): if __name__ == "__main__": + import time class MockDownloader: def __init__ (self): self.alt = ["../hendrix.jpeg", "../hoover.jpeg", "../dylan.jpeg"] def get_alternatives (self, album, artist, amount): + time.sleep (5) 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, "rory gallagher", "irish tour", 4, MockDownloader (ALTERNATIVES)) + aadd = AlbumArtSelectionDialog (w, "rory gallagher", "irish tour", 4, MockDownloader ()) aadd.show_all () response = aadd.run () if response == gtk.RESPONSE_CLOSE or response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_REJECT: -- 1.7.9.5