From: Ivan Frade Date: Wed, 19 Aug 2009 20:44:38 +0000 (+0300) Subject: Revamping UI X-Git-Tag: mussorgsky-0.2-1~24 X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=b28220e2eec4086bb85a114d454e88f9de5ae413;p=mussorgsky Revamping UI Removed unneccesary methods in tracker_backend Simplified layout of buttons. --- diff --git a/src/download_dialog.py b/src/download_dialog.py index 2a61af9..469272a 100644 --- a/src/download_dialog.py +++ b/src/download_dialog.py @@ -36,19 +36,30 @@ class MussorgskyAlbumArtDownloadDialog (gtk.Dialog): self.vbox.add (hbox) - def do_the_job (self, artist_albums): - TOTAL = len (artist_albums) + def do_the_job (self, artist_albums_model): + """ + each row: ("Visible text", pixbuf, Artist, Album) + """ + TOTAL = len (artist_albums_model) current = 1 - - for (artist, album) in artist_albums: + + it = artist_albums_model.get_iter_first () + while (it): + while (gtk.events_pending()): gtk.main_iteration() if (self.cancel): break + + artist = artist_albums_model.get_value (it, 2) + album = artist_albums_model.get_value (it, 3) try: (image, thumb) = self.downloader.get_album_art (artist, album) + if thumb: + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size (thumb, 124, 124) + artist_albums_model.set_value (it, 1, pixbuf) except LookupError, e: print "Error processing %s - %s" % (artist, album) print str(e) @@ -64,6 +75,7 @@ class MussorgskyAlbumArtDownloadDialog (gtk.Dialog): self.album_art.set_from_stock (gtk.STOCK_CDROM, gtk.ICON_SIZE_DIALOG) current += 1 + it = artist_albums_model.iter_next (it) def handle_response (self, widget, response_id): @@ -80,12 +92,14 @@ if __name__ == "__main__": ("", "Freakin' out"), ("Dinah Washington", "")] - PAIRS = [ ("Artist %d" % i, "Album %d" %i) for i in range (0, 100)] + 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)) def clicked_button (self): aadd = MussorgskyAlbumArtDownloadDialog (w) aadd.show_all () - aadd.do_the_job (PAIRS) + aadd.do_the_job (PAIRS_store) w = gtk.Window () box = gtk.VBox () diff --git a/src/mussorgsky.py b/src/mussorgsky.py index 7450367..6afca55 100755 --- a/src/mussorgsky.py +++ b/src/mussorgsky.py @@ -27,20 +27,8 @@ class MussorgskyMainWindow (hildon.StackableWindow): print "Waiting to update" gobject.timeout_add_seconds (3, self.update_values, None) - def artists_clicked (self, widget): - list_songs = self.tracker.get_songs_without_artist () - 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 titles_clicked (self, widget): - list_songs = self.tracker.get_songs_without_title () - 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 albums_clicked (self, widget): - list_songs = self.tracker.get_songs_without_album () + def broken_files_clicked (self, widget): + list_songs = self.tracker.get_all_broken_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) @@ -69,56 +57,44 @@ class MussorgskyMainWindow (hildon.StackableWindow): self.show_edit_panel (list_songs, list_albums, list_artists) def create_main_view (self): - vbox = gtk.VBox (spacing=12) + vbox = gtk.VBox (spacing=12, homogeneous=False) - # Artist row - artist_row = gtk.HBox (homogeneous=True) + # Labels artist row self.label_no_artist = gtk.Label ("") - artist_row.add (self.label_no_artist) - button_artists = gtk.Button ("Fix empty artists!") - button_artists.connect ("clicked", self.artists_clicked) - artist_row.add (button_artists) - - vbox.add (artist_row) + vbox.add (self.label_no_artist) - # Title row - title_row = gtk.HBox (homogeneous=True) self.label_no_title = gtk.Label ("") - title_row.add (self.label_no_title) - button_titles = gtk.Button ("Fix empty titles!") - button_titles.connect ("clicked", self.titles_clicked) - title_row.add (button_titles) - - vbox.add (title_row) + vbox.add (self.label_no_title) - # Album row - album_row = gtk.HBox (homogeneous=True) self.label_no_album = gtk.Label ("") - album_row.add (self.label_no_album) - button_albums = gtk.Button ("Fix empty albums!") - button_albums.connect ("clicked", self.albums_clicked) - album_row.add (button_albums) - - vbox.add (album_row) - - # All songs row + vbox.add (self.label_no_album) + + # Buttons all_songs_row = gtk.HBox (homogeneous=True, spacing=12) - album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL, - hildon.BUTTON_ARRANGEMENT_HORIZONTAL) - album_art.set_title ("Get all album art") - album_art.connect ("clicked", self.get_all_album_art) - all_songs_row.add (album_art) + button_broken_files = gtk.Button ("Fix metadata!") + button_broken_files.connect ("clicked", self.broken_files_clicked) + all_songs_row.add (button_broken_files) + browse = hildon.Button (hildon.BUTTON_STYLE_NORMAL, hildon.BUTTON_ARRANGEMENT_HORIZONTAL) - browse.set_title ("Browse the collection") + browse.set_title ("Manage\ncollection") browse.connect ("clicked", self.browse_clicked) all_songs_row.add (browse) + 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) + all_songs_row.add (album_art) + vbox.add (all_songs_row) return vbox + + + if __name__ == "__main__": try: diff --git a/src/tracker_backend.py b/src/tracker_backend.py index b0cc8db..ed02880 100755 --- a/src/tracker_backend.py +++ b/src/tracker_backend.py @@ -21,6 +21,25 @@ RDF_NO_ARTIST = RDF_NO_PROPX % "Audio:Artist" RDF_NO_ALBUM = RDF_NO_PROPX % "Audio:Album" RDF_NO_TITLE = RDF_NO_PROPX % "Audio:Title" +RDF_ANY_MISSING_METADATA = """ + + + + + + + + + + + + + + + + +""" + class TrackerBackend: @@ -54,28 +73,13 @@ class TrackerBackend: [], False, 0, 32000) return results - - def get_songs_without_artist (self): - """ - Return tuples with the following fields: - (uri, "Music", artist, title, album, mimetype) - """ - return self.__run_rdf_query (RDF_NO_ARTIST) - - def get_songs_without_title (self): + def get_all_broken_songs (self): """ Return tuples with the following fields: (uri, "Music", artist, title, album, mimetype) """ - return self.__run_rdf_query (RDF_NO_TITLE) + return self.__run_rdf_query (RDF_ANY_MISSING_METADATA) - def get_songs_without_album (self): - """ - Return tuples with the following fields: - (uri, "Music", artist, title, album, mimetype) - """ - return self.__run_rdf_query (RDF_NO_ALBUM) - def get_all_songs (self): return self.__run_rdf_query ("")