Пример #1
0
    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
Пример #2
0
 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]))
Пример #3
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
Пример #4
0
 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)
Пример #5
0
    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()
Пример #6
0
    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))
Пример #7
0
 def set_im_icon(self, icon_name):
     widget = icon.IconWidget(icon_name, 18)
     self.__im_menu.set_icon_widget(widget)