3 from album_art import MussorgskyAlbumArt
5 class AlbumArtSelectionDialog (gtk.Dialog):
7 def __init__ (self, parent, artist, album, size, downloader=None):
9 parent window, amount of images to offer
10 Optionally downloader (for testing porpouses)
12 gtk.Dialog.__init__ (self,
13 "Select album art", parent,
14 gtk.DIALOG_DESTROY_WITH_PARENT,
15 (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
19 self.__create_view (size)
22 self.downloader = downloader
24 self.downloader = MussorgskyAlbumArt ()
25 self.paths = self.downloader.get_alternatives (album, artist, 4)
26 self.selection_img = None
27 self.selection_thumb = None
28 self.__populate (self.paths)
31 def __create_view (self, size):
32 hbox = gtk.HBox (homogeneous=True)
36 for i in range (0, size):
38 img.set_size_request (124, 124)
39 self.images.append (img)
41 event_box = gtk.EventBox ()
43 event_box.connect ("button-release-event", self.click_on_img, i)
44 event_box.set_sensitive (False)
45 self.event_boxes.append (event_box)
47 hbox.pack_start (event_box, expand=False, fill=True)
51 def __populate (self, paths):
53 for i in range (0, self.size):
55 self.images[i].set_from_file (paths[i])
56 self.event_boxes[i].set_sensitive (True)
58 self.images[i].set_from_stock (gtk.STOCK_CDROM, gtk.ICON_SIZE_DIALOG)
60 def click_on_img (self, widget, event, position):
61 self.selection_img, self.selection_thumb = self.downloader.save_alternative (self.artist,
64 self.response (position)
66 def get_selection (self):
67 return (self.selection_img, self.selection_thumb)
71 if __name__ == "__main__":
75 self.alt = ["../hendrix.jpeg", "../hoover.jpeg", "../dylan.jpeg"]
76 def get_alternatives (self, album, artist, amount):
77 return self.alt [0:amount]
78 def save_alternative (self, artist, album, img):
79 return ("/home/user/.cache/media-art/" + img, "/home/user/.thumbnails/normal/" + img)
82 def clicked_button (self):
83 aadd = AlbumArtSelectionDialog (w, "rory gallagher", "irish tour", 4, MockDownloader (ALTERNATIVES))
85 response = aadd.run ()
86 if response == gtk.RESPONSE_CLOSE or response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_REJECT:
89 print "Selected", aadd.get_selection ()
93 w.connect ("destroy", gtk.main_quit)
96 button = gtk.Button ("click")
97 button.connect ("clicked", clicked_button)