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)
self.vbox.add (hbox)
- def populate (self, paths):
+ def __populate (self, paths):
for i in range (0, self.size):
if (len(paths) > i):
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 ()
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
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 ()