1 #!/usr/bin/env python2.5
4 from tracker_backend import TrackerBackend
5 from edit_panel import MussorgskyEditPanel
6 from download_dialog import MussorgskyAlbumArtDownloadDialog
8 class MussorgskyMainWindow (hildon.StackableWindow):
11 hildon.StackableWindow.__init__ (self)
12 self.tracker = TrackerBackend ()
13 self.set_title ("MussOrgsky")
14 self.set_border_width (12)
15 self.connect ("destroy", gtk.main_quit)
16 main_view_box = self.create_main_view ()
17 self.add (main_view_box)
18 self.update_values (None)
21 def show_edit_panel (self, songs, albums, artists):
22 panel = MussorgskyEditPanel (songs, albums, artists)
23 panel.connect ("destroy", self.back_to_main_view)
26 def back_to_main_view (self, widget):
27 print "Waiting to update"
28 gobject.timeout_add_seconds (3, self.update_values, None)
30 def artists_clicked (self, widget):
31 list_songs = self.tracker.get_songs_without_artist ()
32 list_albums = self.tracker.get_list_of_known_albums ()
33 list_artists = self.tracker.get_list_of_known_artists ()
34 self.show_edit_panel (list_songs, list_albums, list_artists)
36 def titles_clicked (self, widget):
37 list_songs = self.tracker.get_songs_without_title ()
38 list_albums = self.tracker.get_list_of_known_albums ()
39 list_artists = self.tracker.get_list_of_known_artists ()
40 self.show_edit_panel (list_songs, list_albums, list_artists)
42 def albums_clicked (self, widget):
43 list_songs = self.tracker.get_songs_without_album ()
44 list_albums = self.tracker.get_list_of_known_albums ()
45 list_artists = self.tracker.get_list_of_known_artists ()
46 self.show_edit_panel (list_songs, list_albums, list_artists)
48 def update_values (self, user_data):
49 print "Updating labels"
50 self.label_no_artist.set_text ("%s songs without artist" %
51 self.tracker.count_songs_wo_artist ())
52 self.label_no_title.set_text ("%s songs without title" %
53 self.tracker.count_songs_wo_title ())
54 self.label_no_album.set_text ("%s songs without album" %
55 self.tracker.count_songs_wo_album ())
58 def get_all_album_art (self, user_data):
59 print "Get all album art"
60 artist_album= self.tracker.get_all_pairs_artist_album ()
61 dialog = MussorgskyAlbumArtDownloadDialog (self)
63 dialog.do_the_job (artist_album)
65 def browse_clicked (self, widget):
66 list_songs = self.tracker.get_all_songs ()
67 list_albums = self.tracker.get_list_of_known_albums ()
68 list_artists = self.tracker.get_list_of_known_artists ()
69 self.show_edit_panel (list_songs, list_albums, list_artists)
71 def create_main_view (self):
72 vbox = gtk.VBox (spacing=12)
75 artist_row = gtk.HBox (homogeneous=True)
76 self.label_no_artist = gtk.Label ("")
77 artist_row.add (self.label_no_artist)
78 button_artists = gtk.Button ("Fix empty artists!")
79 button_artists.connect ("clicked", self.artists_clicked)
80 artist_row.add (button_artists)
85 title_row = gtk.HBox (homogeneous=True)
86 self.label_no_title = gtk.Label ("")
87 title_row.add (self.label_no_title)
88 button_titles = gtk.Button ("Fix empty titles!")
89 button_titles.connect ("clicked", self.titles_clicked)
90 title_row.add (button_titles)
95 album_row = gtk.HBox (homogeneous=True)
96 self.label_no_album = gtk.Label ("")
97 album_row.add (self.label_no_album)
98 button_albums = gtk.Button ("Fix empty albums!")
99 button_albums.connect ("clicked", self.albums_clicked)
100 album_row.add (button_albums)
105 all_songs_row = gtk.HBox (homogeneous=True, spacing=12)
106 album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
107 hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
108 album_art.set_title ("Get all album art")
109 album_art.connect ("clicked", self.get_all_album_art)
110 all_songs_row.add (album_art)
112 browse = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
113 hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
114 browse.set_title ("Browse the collection")
115 browse.connect ("clicked", self.browse_clicked)
116 all_songs_row.add (browse)
118 vbox.add (all_songs_row)
122 if __name__ == "__main__":
125 window = MussorgskyMainWindow ()
128 dialog = gtk.MessageDialog (None,
129 gtk.DIALOG_DESTROY_WITH_PARENT,
132 "Error (%s)" % str(e));