def on_change_mode(self, mode): self.listenkbd.stop() self.listenkbd = ListenKbd(self.label, logger=self.logger, mode=mode, nosudo=self.nosudo) self.listenkbd.start()
def on_show_keys(self, widget, data=None): if widget.get_active(): self.logger.debug("Screenkey enabled.") self.listenkbd = ListenKbd(self.label, logger=self.logger, mode=self.options['mode']) self.listenkbd.start() else: self.logger.debug("Screenkey disabled.") self.listenkbd.stop()
def __init__(self, logger, nodetach): gtk.Window.__init__(self) self.timer = None self.logger = logger self.options = self.load_state() if not self.options: self.options = { 'timeout': 2.5, 'position': POS_BOTTOM, 'size': SIZE_MEDIUM, 'mode': MODE_NORMAL, 'hotkey': '<Ctrl>F1', } if not nodetach: self.logger.debug("Detach from the parent.") self.drop_tty() self.set_skip_taskbar_hint(True) self.set_skip_pager_hint(True) self.set_keep_above(True) self.set_decorated(False) self.stick() self.set_property('accept-focus', False) self.set_property('focus-on-map', False) self.set_position(gtk.WIN_POS_CENTER) bgcolor = gtk.gdk.color_parse("black") self.modify_bg(gtk.STATE_NORMAL, bgcolor) self.set_opacity(0.7) gobject.signal_new("text-changed", gtk.Label, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ()) self.label = gtk.Label() self.label.set_justify(gtk.JUSTIFY_RIGHT) self.label.set_ellipsize(pango.ELLIPSIZE_START) self.label.connect("text-changed", self.on_label_change) self.label.show() self.add(self.label) self.screen_width = gtk.gdk.screen_width() self.screen_height = gtk.gdk.screen_height() self.set_window_size(self.options['size']) self.set_gravity(gtk.gdk.GRAVITY_CENTER) self.set_xy_position(self.options['position']) self.listenkbd = ListenKbd(self.label, logger=self.logger, mode=self.options['mode']) self.listenkbd.start() menu = gtk.Menu() show_item = gtk.CheckMenuItem(_("Show keys")) show_item.set_active(True) show_item.connect("toggled", self.on_show_keys) show_item.show() menu.append(show_item) preferences_item = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) preferences_item.connect("activate", self.on_preferences_dialog) preferences_item.show() menu.append(preferences_item) about_item = gtk.ImageMenuItem(gtk.STOCK_ABOUT) about_item.connect("activate", self.on_about_dialog) about_item.show() menu.append(about_item) separator_item = gtk.SeparatorMenuItem() separator_item.show() menu.append(separator_item) image = gtk.ImageMenuItem(gtk.STOCK_QUIT) image.connect("activate", self.quit) image.show() menu.append(image) menu.show() try: import appindicator self.systray = appindicator.Indicator(APP_NAME, 'indicator-messages', appindicator.CATEGORY_APPLICATION_STATUS) self.systray.set_status(appindicator.STATUS_ACTIVE) self.systray.set_attention_icon("indicator-messages-new") self.systray.set_icon( "preferences-desktop-keyboard-shortcuts") self.systray.set_menu(menu) self.logger.debug("Using AppIndicator.") except(ImportError): self.systray = gtk.StatusIcon() self.systray.set_from_icon_name( "preferences-desktop-keyboard-shortcuts") self.systray.connect("popup-menu", self.on_statusicon_popup, menu) self.logger.debug("Using StatusIcon.") self.connect("delete-event", self.quit) keybinder.bind(self.options['hotkey'], self.hotkey_cb, show_item)