def on_load(self): path = os.path.join(os.path.dirname(__file__), '..', '..', 'icons') icon_path = os.path.abspath(path) theme = gtk.icon_theme_get_default() theme.append_search_path(icon_path) if theme.has_icon('gpodder'): self.status_icon = gtk.status_icon_new_from_icon_name('gpodder') else: self.status_icon = gtk.status_icon_new_from_icon_name('stock_mic') self.status_icon.connect('activate', self.on_toggle_visible) self.status_icon.set_has_tooltip(True) self.status_icon.set_tooltip_text("gPodder")
def __init__(self): self.pathname = os.path.dirname(sys.argv[0]) self.abspath = os.path.abspath(self.pathname) self.gladefile = self.abspath + "/streamripper-gui.glade" self.window1 = gtk.glade.XML(self.gladefile,"window1",APP) self.record_active = False dic = { "on_button1_clicked": self.on_button1_clicked, "on_button2_clicked": self.on_button2_clicked, "on_button4_clicked": self.about, "on_button5_clicked": self.on_button5_clicked, "on_window1_delete_event" : self.quit#(gtk.main_quit) } self.window1.signal_autoconnect (dic) self.statusIcon = gtk.status_icon_new_from_icon_name('audio-x-generic') self.statusIcon.connect("activate", self.toggleMainWindow) #while gtk.events_pending(): #gtk.main_iteration_do() meta = self.getPlayerStream() if meta: stream = self.ProcessLocation(meta['location']) self.window1.get_widget('entry1').set_text(stream)
def __init__(self): self.pathname = os.path.dirname(sys.argv[0]) self.abspath = os.path.abspath(self.pathname) self.gladefile = self.abspath + "/streamripper-gui.glade" self.window1 = gtk.glade.XML(self.gladefile, "window1", APP) self.record_active = False dic = { "on_button1_clicked": self.on_button1_clicked, "on_button2_clicked": self.on_button2_clicked, "on_button4_clicked": self.about, "on_button5_clicked": self.on_button5_clicked, "on_window1_delete_event": self.quit #(gtk.main_quit) } self.window1.signal_autoconnect(dic) self.statusIcon = gtk.status_icon_new_from_icon_name('audio-x-generic') self.statusIcon.connect("activate", self.toggleMainWindow) #while gtk.events_pending(): #gtk.main_iteration_do() meta = self.getPlayerStream() if meta: stream = self.ProcessLocation(meta['location']) self.window1.get_widget('entry1').set_text(stream)
def _setup_gtk_status_icon(self, menu): status = gtk.status_icon_new_from_icon_name(version.ICON_NAME) status.set_tooltip(version.PROGRAM_NAME) status.connect("popup-menu", self._popup_menu, menu) status.connect("activate", self.show_hide) return status
def set_icon(self, use_pixbuf=False): path = os.path.join(os.path.dirname(__file__), '..', '..', 'icons') icon_path = os.path.abspath(path) theme = gtk.icon_theme_get_default() theme.append_search_path(icon_path) if self.icon_name is None: if theme.has_icon('gpodder'): self.icon_name = 'gpodder' else: self.icon_name = 'stock_mic' if self.status_icon is None: self.status_icon = gtk.status_icon_new_from_icon_name(self.icon_name) return # If current mode matches desired mode, nothing to do. is_pixbuf = (self.status_icon.get_storage_type() == gtk.IMAGE_PIXBUF) if is_pixbuf == use_pixbuf: return if not use_pixbuf: self.status_icon.set_from_icon_name(self.icon_name) else: # Currently icon is not a pixbuf => was loaded by name, at which # point size was automatically determined. icon_size = self.status_icon.get_size() icon_pixbuf = theme.load_icon(self.icon_name, icon_size, gtk.ICON_LOOKUP_USE_BUILTIN) self.status_icon.set_from_pixbuf(icon_pixbuf)
def set_icon(self, use_pixbuf=False): path = os.path.join(os.path.dirname(__file__), '..', '..', 'icons') icon_path = os.path.abspath(path) theme = gtk.icon_theme_get_default() theme.append_search_path(icon_path) if self.icon_name is None: if theme.has_icon('gpodder'): self.icon_name = 'gpodder' else: self.icon_name = 'stock_mic' if self.status_icon is None: self.status_icon = gtk.status_icon_new_from_icon_name( self.icon_name) return # If current mode matches desired mode, nothing to do. is_pixbuf = (self.status_icon.get_storage_type() == gtk.IMAGE_PIXBUF) if is_pixbuf == use_pixbuf: return if not use_pixbuf: self.status_icon.set_from_icon_name(self.icon_name) else: # Currently icon is not a pixbuf => was loaded by name, at which # point size was automatically determined. icon_size = self.status_icon.get_size() icon_pixbuf = theme.load_icon(self.icon_name, icon_size, gtk.ICON_LOOKUP_USE_BUILTIN) self.status_icon.set_from_pixbuf(icon_pixbuf)
def __init(self, *args): self.main_window = args[0] self.icon = gtk.status_icon_new_from_icon_name(NAME.lower()) self.__build_context_menu() self.__connect_widgets()
def use_systray_icon(self): try: self.systray_icon = gtk.status_icon_new_from_icon_name("zeroinstall") except Exception as ex: info(_("No system tray support: %s"), ex) else: root_iface = iface_cache.iface_cache.get_interface(self.policy.root) self.systray_icon.set_tooltip(_('Checking for updates for %s') % root_iface.get_name()) self.systray_icon.connect('activate', self.remove_systray_icon) self.systray_icon_blocker = tasks.Blocker('Tray icon clicked')
def enable(self): """Enables the system tray icon.""" self.builder = Builder() self.builder.add_from_file(resource_filename('deluge.ui.gtkui', os.path.join( 'glade', 'tray_menu.ui'))) self.builder.connect_signals(self) self.tray_menu = self.builder.get_object('tray_menu') if appindicator and self.config['enable_appindicator']: log.debug('Enabling the Application Indicator...') self.indicator = appindicator.Indicator('deluge', 'deluge', appindicator.CATEGORY_APPLICATION_STATUS) try: self.indicator.set_property('title', _('Deluge')) except TypeError: # Catch 'title' property error for previous appindicator versions pass # Pass the menu to the Application Indicator self.indicator.set_menu(self.tray_menu) # Make sure the status of the Show Window MenuItem is correct self._sig_win_hide = self.mainwindow.window.connect('hide', self._on_window_hide) self._sig_win_show = self.mainwindow.window.connect('show', self._on_window_show) if self.mainwindow.visible(): self.builder.get_object('menuitem_show_deluge').set_active(True) else: self.builder.get_object('menuitem_show_deluge').set_active(False) # Show the Application Indicator self.indicator.set_status(appindicator.STATUS_ACTIVE) else: log.debug('Enabling the system tray icon..') if windows_check(): self.tray = status_icon_new_from_pixbuf(get_logo(32)) else: self.tray = status_icon_new_from_icon_name('deluge') self.tray.connect('activate', self.on_tray_clicked) self.tray.connect('popup-menu', self.on_tray_popup) self.builder.get_object('download-limit-image').set_from_file(get_pixmap('downloading16.png')) self.builder.get_object('upload-limit-image').set_from_file(get_pixmap('seeding16.png')) client.register_event_handler('ConfigValueChangedEvent', self.config_value_changed) if client.connected(): # We're connected so we need to get some values from the core self.__start() else: # Hide menu widgets because we're not connected to a host. for widget in self.hide_widget_list: self.builder.get_object(widget).hide()
def use_systray_icon(self, root_iface): try: if sys.version_info[0] > 2: self.systray_icon = gtk.StatusIcon.new_from_icon_name("zeroinstall") else: self.systray_icon = gtk.status_icon_new_from_icon_name("zeroinstall") except Exception as ex: info(_("No system tray support: %s"), ex) else: self.systray_icon.set_tooltip(_("Checking for updates for %s") % root_iface.get_name()) self.systray_icon.connect("activate", self.remove_systray_icon) self.systray_icon_blocker = tasks.Blocker("Tray icon clicked")
def __init__(self, icon_name="TestTrayIcon", icon_file=None, menu=None, activate=None): # thats so incredibly simple! if icon_file: self.status_icon=gtk.status_icon_new_from_file(icon_file) else: self.status_icon=gtk.status_icon_new_from_icon_name(icon_name) # connect the menu and the callback if given if menu: self.connect_popup_menu(menu) if activate: self.connect_activate(activate)
def __init__(self, icon_name="TestTrayIcon", icon_file=None, menu=None, activate=None): # thats so incredibly simple! if icon_file: self.status_icon = gtk.status_icon_new_from_file(icon_file) else: self.status_icon = gtk.status_icon_new_from_icon_name(icon_name) # connect the menu and the callback if given if menu: self.connect_popup_menu(menu) if activate: self.connect_activate(activate)
def main(): DBusGMainLoop(set_as_default=True) relayed_keys = list(get_all_keys()) for key in relayed_keys: rebind_key(key, True) bus = dbus.Bus() bus.add_signal_receiver(rebind_key, 'BoundKeyChanged', dbus_interface=IFACE) sicon = gtk.status_icon_new_from_icon_name("kupfer") display = os.getenv("DISPLAY", ":0") sicon.set_tooltip(_("Keyboard relay is active for display %s") % display) sicon.set_visible(True) try: gtk.main() except KeyboardInterrupt: raise SystemExit(0)
def main(): DBusGMainLoop(set_as_default=True) relayed_keys = list(get_all_keys()) for key in relayed_keys: rebind_key(key, True) bus = dbus.Bus() bus.add_signal_receiver(rebind_key, 'BoundKeyChanged', dbus_interface=IFACE) sicon = gtk.status_icon_new_from_icon_name("kupfer") display = os.getenv("DISPLAY", ":0") sicon.set_tooltip(_("Keyboard relay is active for display %s") % display) sicon.set_visible(True) try: gtk.main() except KeyboardInterrupt: raise SystemExit(0)
def __init__( self ): # set notification self.load_notify_conf() # set icon self.icon = gtk.status_icon_new_from_icon_name( "server" ) # connect to signals self.icon.connect( "popup-menu", self.show_menu ) self.icon.connect( "activate", self.show_shares ) # dbus stuff try: bus = dbus.SystemBus() self.nfsmount = dbus.Interface( bus.get_object( 'de.moonlake.nfsmount', '/de/moonlake/nfsmount' ), 'de.moonlake.nfsmount' ) except: self.connectDBus() # set tooltip self.update_tooltip() # connect to dbus signals self.nfsmount.connect_to_signal( "newShare", self.new_share ) self.nfsmount.connect_to_signal( "removeShare", self.remove_share ) self.nfsmount.connect_to_signal( "mountedShare", self.mounted_share ) self.nfsmount.connect_to_signal( "unmountedShare", self.unmounted_share ) self.nfsmount.connect_to_signal( "mountError", self.mount_error ) self.nfsmount.connect_to_signal( "unmountError", self.unmount_error ) # initial scan for shares for share in self.nfsmount.getShareList(): self.new_share( share ) for share in self.nfsmount.getMountList(): self.mounted_share( share ) gtk.main()
def _setup_status_icon(self): status = gtk.status_icon_new_from_icon_name(version.ICON_NAME) status.set_tooltip(version.PROGRAM_NAME) menu = gtk.Menu() def menu_callback(menuitem, callback): callback() return True def add_menu_item(icon, callback): mitem = gtk.ImageMenuItem(icon) mitem.connect("activate", menu_callback, callback) menu.append(mitem) add_menu_item(gtk.STOCK_PREFERENCES, kupferui.show_preferences) add_menu_item(gtk.STOCK_HELP, kupferui.show_help) add_menu_item(gtk.STOCK_ABOUT, kupferui.show_about_dialog) menu.append(gtk.SeparatorMenuItem()) add_menu_item(gtk.STOCK_QUIT, self.quit) menu.show_all() status.connect("popup-menu", self._popup_menu, menu) status.connect("activate", self.show_hide) return status
def __init__(self): self.logger = logging.getLogger('client.main') self.conf_client = get_default_client() self.dbus_manager = DbusManager(self) self.script_manager = ScriptManager() self.proxy_setter = ProxySetter() if pynotify and not pynotify.is_initted(): pynotify.init('telecentros') # Get operating system version o = get_os() if o[0]: self.os_name = o[0] if o[1]: self.os_version = o[1] self.mac_id = get_route_mac_address() self.server = self.conf_client.get_string('server') self.port = self.conf_client.get_int('port') if not self.port: self.port = 80 self.json_requester = JSONRequester(self.server, self.port) self.json_requester.run() self.json_requester.request('POST', {'cmd': 'identify', 'mac': self.mac_id, 'os_name': self.os_name, 'os_version': self.os_version}, self.on_identify_response, None) #icons self.icons = icons.Icons() self.logo = self.icons.get_icon(CLIENT_ICON_NAME) #MainWindow self.xml = get_gtk_builder('main') self.main_window = self.xml.get_object('window') self.time_str = self.xml.get_object('time_str') self.elapsed_pb = self.xml.get_object('elapsed_pb') self.remaining_pb = self.xml.get_object('remaining_pb') self.full_name = self.xml.get_object('full_name') self.tray_menu = self.xml.get_object('tray_menu') self.show_window_menu = self.xml.get_object('show_window_menu') self.main_window.set_icon_name('telecentros') self.main_window.show() self.visible = True self.show_window_menu.set_active(True) self.xml.connect_signals(self) #Tray self.tray_icon = gtk.status_icon_new_from_icon_name("telecentros") self.tray_icon.set_tooltip(_("TeleCentros")) self.tray_icon.connect('popup-menu', self.on_tray_popup_menu) self.tray_icon.connect('activate', self.on_show_hide) #Login Window self.login_window = login.Login(self) self.login_window.run()
def activate(self, widget): if widget.get_active(): decorators[self.decorator].kill_others() time.sleep(0.5) decorators.active = self.decorator class CompizDecoratorMenu(gtk.Menu): def __init__(self): gtk.Menu.__init__(self) first = True for decorator in decorators: if first: first_item = CompizDecoratorItem(decorator) self.append(first_item) first = False else: item = CompizDecoratorItem(decorator, first_item) self.append(item) icon = gtk.status_icon_new_from_icon_name('fusion-icon') icon.set_tooltip('Compiz Fusion Icon') menu = TrayMenu() icon.connect('popup-menu', menu.show_menu) # active wm (possibly) starts here init() gtk.main()
def on_load(self): self.status_icon = gtk.status_icon_new_from_icon_name('gpodder') self.status_icon.connect('activate', self.on_toggle_visible)
def enable(self): """Enables the system tray icon.""" self.builder = gtk.Builder() self.builder.add_from_file( deluge.common.resource_filename( "deluge.ui.gtkui", os.path.join("glade", "tray_menu.ui"))) self.builder.connect_signals({ "on_menuitem_show_deluge_activate": self.on_menuitem_show_deluge_activate, "on_menuitem_add_torrent_activate": self.on_menuitem_add_torrent_activate, "on_menuitem_pause_all_activate": self.on_menuitem_pause_all_activate, "on_menuitem_resume_all_activate": self.on_menuitem_resume_all_activate, "on_menuitem_quit_activate": self.on_menuitem_quit_activate, "on_menuitem_quitdaemon_activate": self.on_menuitem_quitdaemon_activate }) self.tray_menu = self.builder.get_object("tray_menu") if appindicator and self.config["enable_appindicator"]: log.debug("Enabling the Application Indicator..") self.indicator = appindicator.Indicator( "deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS) try: self.indicator.set_property("title", _("Deluge")) except TypeError: # Catch 'title' property error for previous appindicator versions pass # Pass the menu to the Application Indicator self.indicator.set_menu(self.tray_menu) # Make sure the status of the Show Window MenuItem is correct self._sig_win_hide = self.window.window.connect( "hide", self._on_window_hide) self._sig_win_show = self.window.window.connect( "show", self._on_window_show) if self.window.visible(): self.builder.get_object("menuitem_show_deluge").set_active( True) else: self.builder.get_object("menuitem_show_deluge").set_active( False) # Show the Application Indicator self.indicator.set_status(appindicator.STATUS_ACTIVE) else: log.debug("Enabling the system tray icon..") if deluge.common.windows_check() or deluge.common.osx_check(): self.tray = gtk.status_icon_new_from_pixbuf( common.get_logo(32)) else: try: self.tray = gtk.status_icon_new_from_icon_name("deluge") except: log.warning( "Update PyGTK to 2.10 or greater for SystemTray..") return self.tray.connect("activate", self.on_tray_clicked) self.tray.connect("popup-menu", self.on_tray_popup) self.builder.get_object("download-limit-image").set_from_file( deluge.common.get_pixmap("downloading16.png")) self.builder.get_object("upload-limit-image").set_from_file( deluge.common.get_pixmap("seeding16.png")) client.register_event_handler("ConfigValueChangedEvent", self.config_value_changed) if client.connected(): # We're connected so we need to get some values from the core self.__start() else: # Hide menu widgets because we're not connected to a host. for widget in self.hide_widget_list: self.builder.get_object(widget).hide()
def __init__(self, is_local=True, client=None): log.Loggable.__init__(self) self.is_local = is_local self.client = client data_pkg = "shuffler.clients.gshuffler.data" self.gladefile = pkg_resources.resource_filename(data_pkg, "gshuffler.glade") self.wTree = gtk.glade.XML(self.gladefile) bus = dbus.SessionBus() remote_object = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications') self.notifications = dbus.Interface(remote_object, 'org.freedesktop.Notifications') callbacks = ["startingpopup_response_cb", "window_destroy_cb", "quitmenu_activate_cb", "artistview_row_activated_cb", "albumview_row_activated_cb", "volume_value_changed_cb", "speed_value_changed_cb", "tempo_value_changed_cb", "position_adjust_bounds_cb", "playpausebutton_clicked_cb", "prevbutton_clicked_cb", "nextbutton_clicked_cb", "stopbutton_clicked_cb", "randombutton_clicked_cb", "loopbutton_clicked_cb", "smartbutton_clicked_cb", "tracklabel_clicked_cb", "aboutmenu_activate_cb", "aboutdialog_response_cb", "playlistview_row_activated_cb", ] dic = dict([(k, getattr(self, k)) for k in callbacks]) self.wTree.signal_autoconnect(dic) self._win_position = None tray = gtk.status_icon_new_from_icon_name("audio-x-generic") tray.connect('activate', self._tray_button_clicked_cb) self._player = None self._playlist = None self._db = None self._root = None popup = self.wTree.get_widget('startingpopup') prim_label = self.wTree.get_widget('primary-label') sec_label = self.wTree.get_widget('secondary-label') if is_local: msg = _("Connecting to session D-Bus") else: msg = _("Connecting to Telepathy D-Tubes") prim_label.set_markup("<b>%s</b>" % _("Connecting to Shuffler. Please wait")) sec_label.set_text(msg) popup.show_all() self._checking_objects = gobject.timeout_add(200, self._check_objects)
def enable(self): """Enables the system tray icon.""" self.builder = Builder() self.builder.add_from_file( resource_filename('deluge.ui.gtkui', os.path.join('glade', 'tray_menu.ui'))) self.builder.connect_signals(self) self.tray_menu = self.builder.get_object('tray_menu') if appindicator and self.config['enable_appindicator']: log.debug('Enabling the Application Indicator...') self.indicator = appindicator.Indicator( 'deluge', 'deluge', appindicator.CATEGORY_APPLICATION_STATUS) try: self.indicator.set_property('title', _('Deluge')) except TypeError: # Catch 'title' property error for previous appindicator versions pass # Pass the menu to the Application Indicator self.indicator.set_menu(self.tray_menu) # Make sure the status of the Show Window MenuItem is correct self._sig_win_hide = self.mainwindow.window.connect( 'hide', self._on_window_hide) self._sig_win_show = self.mainwindow.window.connect( 'show', self._on_window_show) if self.mainwindow.visible(): self.builder.get_object('menuitem_show_deluge').set_active( True) else: self.builder.get_object('menuitem_show_deluge').set_active( False) # Show the Application Indicator self.indicator.set_status(appindicator.STATUS_ACTIVE) else: log.debug('Enabling the system tray icon..') if windows_check() or osx_check(): self.tray = status_icon_new_from_pixbuf(get_logo(32)) else: self.tray = status_icon_new_from_icon_name('deluge-panel') self.tray.connect('activate', self.on_tray_clicked) self.tray.connect('popup-menu', self.on_tray_popup) self.builder.get_object('download-limit-image').set_from_file( get_pixmap('downloading16.png')) self.builder.get_object('upload-limit-image').set_from_file( get_pixmap('seeding16.png')) client.register_event_handler('ConfigValueChangedEvent', self.config_value_changed) if client.connected(): # We're connected so we need to get some values from the core self.__start() else: # Hide menu widgets because we're not connected to a host. for widget in self.hide_widget_list: self.builder.get_object(widget).hide()
def on_load(self): self.status_icon = gtk.status_icon_new_from_icon_name("gpodder") self.status_icon.connect("activate", self.on_toggle_visible)
window = xml.get_object('window1') img_bt_toggle = xml.get_object('image6') exp = xml.get_object('expander2') expvbox = xml.get_object('expandvbox') audioicon = xml.get_object('eventicon') vol = xml.get_object('vol') time_s = xml.get_object('time_s') time_l = xml.get_object('time_l') # connect to the different callbacks window.connect('delete_event', delete_event) window.connect('destroy', destroy) window.connect('key_release_event', key_release) tray = gtk.status_icon_new_from_icon_name('audio-x-generic') tray.connect('activate', tray_button) bt_close.connect('clicked', destroy) bt_quit.connect('clicked', Quit) bt_mrl.connect('clicked', AddTrack) bt_toggle.connect('clicked', Pause) bt_next.connect('clicked', Next) bt_prev.connect('clicked', Prev) bt_stop.connect('clicked', Stop) bt_shuffle.connect('clicked', Shuffle) exp.connect('activate', expander) vol.connect('changed', volchange) time_s.connect('adjust-bounds', timechange) audioicon.set_events( gtk.gdk.BUTTON_PRESS_MASK) # hack for the bottom right icon
def _init_status_icon(self): self._status_icon = gtk.status_icon_new_from_icon_name("onboard") self._status_icon.connect_object("activate", Indicator._toggle_keyboard_window_state, self) self._status_icon.connect("popup-menu", self._on_status_icon_popup_menu, self._menu)
window = xml.get_widget("window1") img_bt_toggle = xml.get_widget("image6") exp = xml.get_widget("expander2") expvbox = xml.get_widget("expandvbox") audioicon = xml.get_widget("eventicon") vol = xml.get_widget("vol") time_s = xml.get_widget("time_s") time_l = xml.get_widget("time_l") # connect to the different callbacks window.connect("delete_event", delete_event) window.connect("destroy", destroy) window.connect("key_release_event", key_release) tray = gtk.status_icon_new_from_icon_name("audio-x-generic") tray.connect("activate", tray_button) bt_close.connect("clicked", destroy) bt_quit.connect("clicked", Quit) bt_mrl.connect("clicked", AddTrack) bt_toggle.connect("clicked", Pause) bt_next.connect("clicked", Next) bt_prev.connect("clicked", Prev) bt_stop.connect("clicked", Stop) bt_loop.connect("clicked", Loop) bt_repeat.connect("clicked", Repeat) bt_shuffle.connect("clicked", Shuffle) exp.connect("activate", expander) vol.connect("changed", volchange) time_s.connect("adjust-bounds", timechange)
def on_load(self): self.status_icon = gtk.status_icon_new_from_icon_name('gpodder') self.status_icon.connect('activate', self.on_toggle_visible)
def use_systray_icon(self): try: self.systray_icon = gtk.status_icon_new_from_icon_name( "zeroinstall-zero2desktop") except Exception, ex: info(_("No system tray support: %s"), ex)
def enable(self): """Enables the system tray icon.""" self.builder = gtk.Builder() self.builder.add_from_file(deluge.common.resource_filename( "deluge.ui.gtkui", os.path.join("glade", "tray_menu.ui")) ) self.builder.connect_signals({ "on_menuitem_show_deluge_activate": self.on_menuitem_show_deluge_activate, "on_menuitem_add_torrent_activate": self.on_menuitem_add_torrent_activate, "on_menuitem_pause_all_activate": self.on_menuitem_pause_all_activate, "on_menuitem_resume_all_activate": self.on_menuitem_resume_all_activate, "on_menuitem_quit_activate": self.on_menuitem_quit_activate, "on_menuitem_quitdaemon_activate": self.on_menuitem_quitdaemon_activate }) self.tray_menu = self.builder.get_object("tray_menu") if appindicator and self.config["enable_appindicator"]: log.debug("Enabling the Application Indicator..") self.indicator = appindicator.Indicator ( "deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS) # Pass the menu to the Application Indicator self.indicator.set_menu(self.tray_menu) # Make sure the status of the Show Window MenuItem is correct self._sig_win_hide = self.window.window.connect("hide", self._on_window_hide) self._sig_win_show = self.window.window.connect("show", self._on_window_show) if self.window.visible(): self.builder.get_object("menuitem_show_deluge").set_active(True) else: self.builder.get_object("menuitem_show_deluge").set_active(False) # Show the Application Indicator self.indicator.set_status(appindicator.STATUS_ACTIVE) else: log.debug("Enabling the system tray icon..") if deluge.common.windows_check() or deluge.common.osx_check(): self.tray = gtk.status_icon_new_from_pixbuf(common.get_logo(32)) else: try: self.tray = gtk.status_icon_new_from_icon_name("deluge") except: log.warning("Update PyGTK to 2.10 or greater for SystemTray..") return self.tray.connect("activate", self.on_tray_clicked) self.tray.connect("popup-menu", self.on_tray_popup) # For some reason these icons do not display in appindicator self.builder.get_object("download-limit-image").set_from_file( deluge.common.get_pixmap("downloading16.png")) self.builder.get_object("upload-limit-image").set_from_file( deluge.common.get_pixmap("seeding16.png")) client.register_event_handler("ConfigValueChangedEvent", self.config_value_changed) if client.connected(): # We're connected so we need to get some values from the core self.__start() else: # Hide menu widgets because we're not connected to a host. for widget in self.hide_widget_list: self.builder.get_object(widget).hide()
def __init__(self): self.tray = gtk.status_icon_new_from_icon_name('audio-volume-medium') self.tray.connect('scroll-event', self.on_scroll) self.tray.set_tooltip(('Volume tray app'))
quit_image.set_from_icon_name('application-exit', gtk.ICON_SIZE_MENU) quit_item = gtk.ImageMenuItem('Don\'t remind me again') quit_item.set_image(quit_image) menu.append(accept_item) menu.append(dismiss_item) menu.append(quit_item) accept_item.connect_object("activate", accept, "Accept") accept_item.show() dismiss_item.connect_object("activate", dismiss, "Dismiss") dismiss_item.show() quit_item.connect_object("activate", quit, "Quit") quit_item.show() menu.popup(None, None, None, event_button, event_time) def on_right_click(data, event_button, event_time): make_menu(event_button, event_time) def on_left_click(event): accept() if __name__ == '__main__': icon = gtk.status_icon_new_from_icon_name("sboui") icon.set_tooltip_text('SBo updates are available') icon.connect('popup-menu', on_right_click) icon.connect('activate', on_left_click) gtk.main()
def __init__(self): self.dbus = gintegration.DBusManager(self) gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_title(_("Gwibber")) self.set_default_size(330, 500) config.GCONF.add_dir(config.GCONF_PREFERENCES_DIR, config.gconf.CLIENT_PRELOAD_NONE) self.preferences = config.Preferences() self.last_update = None self.last_focus_time = None self.last_clear = None self._reply_acct = None self.indicator_items = {} layout = gtk.VBox() gtk.rc_parse_string(""" style "tab-close-button-style" { GtkWidget::focus-padding = 0 GtkWidget::focus-line-width = 0 xthickness = 0 ythickness = 0 } widget "*.tab-close-button" style "tab-close-button-style" """) self.accounts = configui.AccountManager() self.client = microblog.Client(self.accounts) self.client.handle_error = self.handle_error self.client.post_process_message = self.post_process_message self.notification_bubbles = {} self.message_target = None self.errors = table.generate( [["date", lambda t: t.time.strftime("%x")], ["time", lambda t: t.time.strftime("%X")], ["username"], ["protocol"], [ "message", (gtk.CellRendererText(), { "markup": lambda t: t.message }) ]]) self.connect("delete-event", self.on_window_close) self.connect("focus-out-event", self.on_focus_out) self.connect("focus-in-event", self.on_focus) for key, value in list(DEFAULT_PREFERENCES.items()): if self.preferences[key] == None: self.preferences[key] = value self.preferences["version"] = VERSION_NUMBER self.timer = gobject.timeout_add( 60000 * int(self.preferences["refresh_interval"]), self.update) self.preferences.notify("refresh_interval", self.on_refresh_interval_changed) self.preferences.notify("theme", self.on_theme_change) gtk.icon_theme_add_builtin_icon( "gwibber", 22, gtk.gdk.pixbuf_new_from_file_at_size( resources.get_ui_asset("gwibber.svg"), 24, 24)) self.set_icon_name("gwibber") self.tray_icon = gtk.status_icon_new_from_icon_name("gwibber") self.tray_icon.connect("activate", self.on_toggle_window_visibility) self.tabs = gtk.Notebook() self.tabs.set_property("homogeneous", False) self.tabs.set_scrollable(True) self.messages_view = self.add_msg_tab(self.client.receive, _("Messages"), show_icon="go-home") self.add_msg_tab(self.client.responses, _("Replies"), show_icon="mail-reply-all", add_indicator=True) saved_position = config.GCONF.get_list( "%s/%s" % (config.GCONF_PREFERENCES_DIR, "saved_position"), config.gconf.VALUE_INT) if saved_position: self.move(*saved_position) saved_size = config.GCONF.get_list( "%s/%s" % (config.GCONF_PREFERENCES_DIR, "saved_size"), config.gconf.VALUE_INT) if saved_size: self.resize(*saved_size) saved_queries = config.GCONF.get_list( "%s/%s" % (config.GCONF_PREFERENCES_DIR, "saved_searches"), config.gconf.VALUE_STRING) if saved_queries: for query in saved_queries: # XXX: suggest refactor of below code to avoid duplication of on_search code if query.startswith("#"): self.add_msg_tab(functools.partial(self.client.tag, query), query.replace("#", ""), True, gtk.STOCK_INFO, False, query) elif microblog.support.LINK_PARSE.match(query): self.add_msg_tab( functools.partial(self.client.search_url, query), urlparse.urlparse(query)[1], True, gtk.STOCK_FIND, True, query) elif len(query) > 0: title = _("Search") + " '" + query[:12] + "...'" self.add_msg_tab( functools.partial(self.client.search, query), title, True, gtk.STOCK_FIND, False, query) #self.add_map_tab(self.client.friend_positions, "Location") if gintegration.SPELLCHECK_ENABLED: self.input = gintegration.sexy.SpellEntry() self.input.set_checked(self.preferences["spellcheck_enabled"]) else: self.input = gtk.Entry() self.input.connect("insert-text", self.on_add_text) self.input.connect("populate-popup", self.on_input_context_menu) self.input.connect("activate", self.on_input_activate) self.input.connect("changed", self.on_input_change) self.input.set_max_length(MAX_MESSAGE_LENGTH) self.cancel_button = gtk.Button(_("Cancel")) self.cancel_button.connect("clicked", self.on_cancel_reply) self.editor = gtk.HBox() self.editor.pack_start(self.input) self.editor.pack_start(self.cancel_button, False) vb = gtk.VBox(spacing=5) vb.pack_start(self.tabs, True, True) vb.pack_start(self.editor, False, False) vb.set_border_width(5) warning_icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) self.status_icon = gtk.EventBox() self.status_icon.add(warning_icon) self.status_icon.connect("button-press-event", self.on_errors_show) self.statusbar = gtk.Statusbar() self.statusbar.pack_start(self.status_icon, False, False) layout.pack_start(self.setup_menus(), False) layout.pack_start(vb, True, True) layout.pack_start(self.statusbar, False) self.add(layout) if gintegration.can_notify: # FIXME: Move this to DBusManager import dbus # http://galago-project.org/specs/notification/0.9/x408.html#signal-notification-closed def on_notify_close(nId, reason=1): if nId in self.notification_bubbles: del self.notification_bubbles[nId] def on_notify_action(nId, action): if action == "reply": self.reply(self.notification_bubbles[nId]) self.window.show() self.present() bus = dbus.SessionBus() bus.add_signal_receiver( on_notify_close, dbus_interface="org.freedesktop.Notifications", signal_name="NotificationClosed") bus.add_signal_receiver( on_notify_action, dbus_interface="org.freedesktop.Notifications", signal_name="ActionInvoked") if indicate: self.indicate = indicate.indicate_server_ref_default() self.indicate.set_type("message.gwibber") self.indicate.set_desktop_file(resources.get_desktop_file()) self.indicate.connect("server-display", self.on_toggle_window_visibility) self.indicate.show() for i in list(CONFIGURABLE_UI_ELEMENTS.keys()): config.GCONF.notify_add( config.GCONF_PREFERENCES_DIR + "/show_%s" % i, lambda *a: self.apply_ui_element_settings()) config.GCONF.notify_add("/apps/gwibber/accounts", self.on_account_change) self.preferences.notify("hide_taskbar_entry", lambda *a: self.apply_ui_element_settings()) self.preferences.notify("spellcheck_enabled", lambda *a: self.apply_ui_element_settings()) #for i in CONFIGURABLE_UI_SETTINGS: # config.GCONF.notify_add(config.GCONF_PREFERENCES_DIR + "/%s" % i, # lambda *a: self.apply_ui_drawing_settings()) def on_key_press(w, e): if e.keyval == gtk.keysyms.F5: self.update() return True if e.keyval == gtk.keysyms.Tab and e.state & gtk.gdk.CONTROL_MASK: if len(self.tabs) == self.tabs.get_current_page() + 1: self.tabs.set_current_page(0) else: self.tabs.next_page() return True elif e.keyval in [ord(str(x)) for x in range(10) ] and e.state & gtk.gdk.MOD1_MASK: self.tabs.set_current_page( int(gtk.gdk.keyval_name(e.keyval)) - 1) return True elif e.keyval == gtk.keysyms.T and e.state & gtk.gdk.CONTROL_MASK: self.on_theme_change() return True else: return False #else: # if not self.input.is_focus(): # self.input.grab_focus() # self.input.set_position(-1) # return False self.connect("key_press_event", on_key_press) self.show_all() self.apply_ui_element_settings() self.cancel_button.hide() self.status_icon.hide() if not self.preferences["inhibit_startup_refresh"]: self.update()