class PLaunchStatusIcon(gtk.StatusIcon): '''Plaunch statusIcon, It show always in system tray. ''' def __init__(self): gtk.StatusIcon.__init__(self) menu = ''' <ui> <menubar name="PLaunch"> <menu action="Menu"> <menuitem action="Show"/> <menuitem action="Config"/> <menuitem action="About"/> <menuitem action="Exit"/> </menu> </menubar> </ui> ''' actions = [ ('Menu', None, 'Menu'), ('Show', gtk.STOCK_EXECUTE, '_Show...', None, None, self.on_activate), ('Config', gtk.STOCK_EDIT, '_Shortcuts...', None, None, self.on_edit_shortcut), ('About', gtk.STOCK_ABOUT, '_About...', None, None, self.on_about), ('Exit', gtk.STOCK_CLOSE, '_Exit...', None, None, self.on_exit_event)] ag = gtk.ActionGroup('Actions') ag.add_actions(actions) self.manager = gtk.UIManager() self.manager.insert_action_group(ag, 0) self.manager.add_ui_from_string(menu) self.menu = self.manager.get_widget('/PLaunch/Menu/About').props.parent self.set_from_file(ICON) self.set_tooltip('PLaunch is running here') self.set_visible(True) self.connect('activate', self.on_activate) self.connect('popup-menu', self.on_popup_menu) self.maindialog = MainDialog() def on_popup_menu(self, status, button, time): self.menu.popup(None, None, None, button, time) def on_activate(self, data): self.maindialog.open_main() def on_edit_shortcut(self, widget): ShortCutsEditer() def on_about(self, widget): xml = glade.XML(GLADE) about = xml.get_widget('aboutplaunch') about.run() about.destroy() def on_exit_event(self, widget, data=None): gtk.main_quit() return False