def __create_im_menu(self): engines = self.__bus.list_active_engines() current_engine = \ (self.__focus_ic != None and self.__focus_ic.get_engine()) or \ (engines and engines[0]) or \ None size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) menu = gtk.Menu() for i, engine in enumerate(engines): lang = ibus.get_language_name(engine.language) item = gtk.ImageMenuItem("%s - %s" % (lang, engine.longname)) if current_engine and current_engine.name == engine.name: for widget in item.get_children(): if isinstance(widget, gtk.Label): widget.set_markup("<b>%s</b>" % widget.get_text()) if engine.icon: item.set_image(_icon.IconWidget(engine.icon, size[0])) else: item.set_image(_icon.IconWidget(ICON_ENGINE, size[0])) item.connect("activate", self.__im_menu_item_activate_cb, engine) menu.add(item) item = gtk.ImageMenuItem(_("Turn off input method")) item.set_image(_icon.IconWidget("gtk-close", size[0])) item.connect("activate", self.__im_menu_item_activate_cb, None) if self.__focus_ic == None or not self.__focus_ic.is_enabled(): item.set_sensitive(False) menu.add(item) menu.show_all() menu.set_take_focus(False) return menu
def __set_item_icon(self, item, prop): item.set_property("always-show-image", True) if prop.icon: size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) item.set_image(icon.IconWidget(prop.icon, size[0])) elif prop.label and prop.label.get_text() != "": item.set_label("") item.connect_after("expose-event", self.__label_expose_cb) item.connect("select", self.__label_select_cb, None) item.connect("deselect", self.__label_deselect_cb, None) else: size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) item.set_image(icon.IconWidget("ibus", size[0]))
def set_icon_name(self, icon_name): if icon_name: widget = icon.IconWidget(icon_name, 18) gtk.ToggleToolButton.set_icon_widget(self, widget) self.set_is_important(False) elif self._prop.label: gtk.ToggleToolButton.set_icon_widget(self, None) self.set_is_important(True) else: widget = icon.IconWidget("ibus", 18) gtk.ToggleToolButton.set_icon_widget(self, widget) self.set_is_important(False) self._prop.icon = icon_name
def __status_icon_activate_cb(self, status_icon): if not self.__focus_ic: menu = gtk.Menu() item = gtk.ImageMenuItem(_("No input window")) size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) item.set_image(_icon.IconWidget("gtk-dialog-info", size[0])) menu.add(item) menu.show_all() else: menu = self.__create_im_menu() self.__language_bar.create_im_menu(menu) menu.popup(None, None, gtk.status_icon_position_menu, 0, gtk.get_current_event_time(), self.__status_icon)
def __init__(self, prop): gtk.ImageMenuItem.__init__(self) PropItem.__init__(self, prop) if self._prop.icon: size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) self.set_image(icon.IconWidget(prop.icon, size[0])) if self._prop.label: self.set_label(prop.label.text) if self._prop.visible: self.set_no_show_all(False) self.show_all() else: self.set_no_show_all(True) self.hide_all()
def __create_items(self, props): radio_group = None for prop in props: if prop.type == ibus.PROP_TYPE_NORMAL: item = ImageMenuItem(prop) elif prop.type == ibus.PROP_TYPE_TOGGLE: item = CheckMenuItem(prop) elif prop.type == ibus.PROP_TYPE_RADIO: item = RadioMenuItem(radio_group, prop) radio_group = item elif prop.type == ibus.PROP_TYPE_SEPARATOR: item = SeparatorMenuItem() radio_group = None elif prop.type == ibus.PROP_TYPE_MENU: item = ImageMenuItem(prop) if prop.icon: size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) item.set_image(icon.IconWidget(prop.icon, size[0])) if prop.label: item.set_label(prop.label.text) item.set_submenu(Menu(prop)) else: assert Fasle if prop.tooltip: item.set_tooltip_text(prop.tooltip.text) item.set_sensitive(prop.sensitive) if prop.visible: item.set_no_show_all(False) item.show() else: item.set_no_show_all(True) item.hide() self.append(item) self._sub_items.append(item) if prop.type not in (ibus.PROP_TYPE_NORMAL, ibus.PROP_TYPE_TOGGLE, ibus.PROP_TYPE_RADIO): continue item.connect("property-activate", lambda w, n, s: self.emit("property-activate", n, s))
def set_im_icon(self, icon_name): widget = icon.IconWidget(icon_name, 18) self.__im_menu.set_icon_widget(widget)