1 #!/usr/bin/env python2.5
4 from tracker_backend import TrackerBackend
5 from edit_panel import MussorgskyEditPanel
6 from album_art_panel import MussorgskyAlbumArtPanel
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 broken_files_clicked (self, widget):
31 list_songs = self.tracker.get_all_broken_songs ()
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 update_values (self, user_data):
37 print "Updating labels"
38 self.label_no_artist.set_text ("%s songs without artist" %
39 self.tracker.count_songs_wo_artist ())
40 self.label_no_title.set_text ("%s songs without title" %
41 self.tracker.count_songs_wo_title ())
42 self.label_no_album.set_text ("%s songs without album" %
43 self.tracker.count_songs_wo_album ())
46 def browse_clicked (self, widget):
47 list_songs = self.tracker.get_all_songs ()
48 list_albums = self.tracker.get_list_of_known_albums ()
49 list_artists = self.tracker.get_list_of_known_artists ()
50 self.show_edit_panel (list_songs, list_albums, list_artists)
52 def album_art_clicked (self, widget):
53 panel = MussorgskyAlbumArtPanel ()
56 def create_main_view (self):
57 vbox = gtk.VBox (spacing=12, homogeneous=False)
60 self.label_no_artist = gtk.Label ("")
61 vbox.add (self.label_no_artist)
63 self.label_no_title = gtk.Label ("")
64 vbox.add (self.label_no_title)
66 self.label_no_album = gtk.Label ("")
67 vbox.add (self.label_no_album)
70 all_songs_row = gtk.HBox (homogeneous=True, spacing=12)
72 button_broken_files = gtk.Button ("Fix metadata!")
73 button_broken_files.connect ("clicked", self.broken_files_clicked)
74 all_songs_row.add (button_broken_files)
76 browse = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
77 hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
78 browse.set_title ("Manage\ncollection")
79 browse.connect ("clicked", self.browse_clicked)
80 all_songs_row.add (browse)
82 album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
83 hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
84 album_art.set_title ("Album art")
85 album_art.connect ("clicked", self.album_art_clicked)
86 all_songs_row.add (album_art)
88 vbox.add (all_songs_row)
95 if __name__ == "__main__":
98 window = MussorgskyMainWindow ()
101 dialog = gtk.MessageDialog (None,
102 gtk.DIALOG_DESTROY_WITH_PARENT,
105 "Error (%s)" % str(e));