diff --git a/jackctl_trayicon b/jackctl_trayicon index 31df4eb..ccca9dc 100755 --- a/jackctl_trayicon +++ b/jackctl_trayicon @@ -24,21 +24,35 @@ pygtk.require('2.0') import gtk from gobject import timeout_add from jack_controller import jack_controller +from jackctl import jackctl -class jackctl_trayicon: - def destroy(self, widget): - gtk.main_quit() +class jackctl_trayicon(jackctl): - def start_callback(self, widget): - self.jack.start() - - def stop_callback(self, widget): - self.jack.stop() - - def menu_callback(self, widget, event, data=None): + def __init__(self): + jackctl.__init__(self) + self.jack = jack_controller() + + # Create the needed pixbufs to manage the status icons look + self.stopped_pixbuf = gtk.gdk.pixbuf_new_from_file("./pixmaps/stopped.svg") + self.started_pixbuf = gtk.gdk.pixbuf_new_from_file("./pixmaps/started.svg") + + # Create the status icon itself + self.statusicon = gtk.status_icon_new_from_pixbuf(self.stopped_pixbuf) + + # Add the auto update callback + self.auto_updater = timeout_add(1000, self.update_callback) + + # Make the menu popup when the icon is right clicked + self.statusicon.connect("popup-menu", self.menu_activate) + + def menu_activate(self, widget=None, event=None, data=None): self.menu.popup(None, None, None, 3, 0) - return True - + self.menu.reposition() + + def run(self): + gtk.main() + return 0; + def update_callback(self): if self.jack.is_started(): # Realtime status @@ -58,43 +72,7 @@ class jackctl_trayicon: self.statusicon.set_from_pixbuf(self.stopped_pixbuf) return True - def __init__(self): - self.jack = jack_controller() - - # Create the needed pixbufs to manage the status icons look - self.stopped_pixbuf = gtk.gdk.pixbuf_new_from_file("./pixmaps/stopped.svg") - self.started_pixbuf = gtk.gdk.pixbuf_new_from_file("./pixmaps/started.svg") - - # Create the status icon itself - self.statusicon = gtk.status_icon_new_from_pixbuf(self.stopped_pixbuf) - - # Add the auto update callback - self.auto_updater = timeout_add(1000, self.update_callback) - - # Create the context menu - self.menu = gtk.Menu() - self.start_item = gtk.MenuItem("_Start JACK") - self.stop_item = gtk.MenuItem("Sto_p JACK") - self.update_item = gtk.MenuItem("_Update icon") - self.quit_item = gtk.MenuItem("_Quit") - self.menu.append(self.start_item) - self.menu.append(self.stop_item) - self.menu.append(self.update_item) - self.menu.append(self.quit_item) - self.start_item.connect("activate", self.start_callback) - self.stop_item.connect("activate", self.stop_callback) - self.update_item.connect("activate", self.update_callback) - self.quit_item.connect("activate", self.destroy) - self.start_item.show() - self.stop_item.show() - self.update_item.show() - self.quit_item.show() - - # Make the menu popup when the icon is right clicked - self.statusicon.connect("popup-menu", self.menu_callback) - - def run(self): - gtk.main() - return 0; + def get_controller(self): + return self.jack jackctl_trayicon().run()