コード例 #1
0
ファイル: enginecombobox.py プロジェクト: hychen/ibus
    def set_engines(self, engines):
        self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT)

        iter1 = self.__model.append(None)
        self.__model.set(iter1, 0, 0)
        lang = {}
        for e in engines:
            l = ibus.get_language_name(e.language)
            if l not in lang:
                lang[l] = []
            lang[l].append(e)

        keys = lang.keys()
        keys.sort(locale.strcoll)
        #add "Others" to the end of the combo box
        if ibus.get_language_name("Other") in keys:
            keys.remove(ibus.get_language_name("Other"))
            keys += [ibus.get_language_name("Other")]
        for l in keys:
            iter1 = self.__model.append(None)
            self.__model.set(iter1, 0, l)
            def cmp_engine(a, b):
                if a.rank == b.rank:
                    return locale.strcoll(a.longname, b.longname)
                return int(b.rank - a.rank)
            lang[l].sort(cmp_engine)
            for e in lang[l]:
                iter2 = self.__model.append(iter1)
                self.__model.set(iter2, 0, e)

        self.set_model(self.__model)
        self.set_active(0)
コード例 #2
0
ファイル: enginecombobox.py プロジェクト: gzgithub/myibus
    def set_engines(self, engines):
        self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT)

        iter1 = self.__model.append(None)
        self.__model.set(iter1, 0, 0)
        lang = {}
        for e in engines:
            l = ibus.get_language_name(e.language)
            if l not in lang:
                lang[l] = []
            lang[l].append(e)

        keys = lang.keys()
        keys.sort(locale.strcoll)
        #add "Others" to the end of the combo box
        if ibus.get_language_name("Other") in keys:
            keys.remove(ibus.get_language_name("Other"))
            keys += [ibus.get_language_name("Other")]
        for l in keys:
            iter1 = self.__model.append(None)
            self.__model.set(iter1, 0, l)

            def cmp_engine(a, b):
                if a.rank == b.rank:
                    return locale.strcoll(a.longname, b.longname)
                return int(b.rank - a.rank)

            lang[l].sort(cmp_engine)
            for e in lang[l]:
                iter2 = self.__model.append(iter1)
                self.__model.set(iter2, 0, e)

        self.set_model(self.__model)
        self.set_active(0)
コード例 #3
0
ファイル: panel.py プロジェクト: sun-im/ibus
    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)
        menu.add(item)

        menu.show_all()
        menu.set_take_focus(False)
        return menu
コード例 #4
0
ファイル: engineabout.py プロジェクト: zhou0/ibus
    def __fill_text_view(self):
        text_buffer = self.__text_view.get_buffer()
        self.__create_tags(text_buffer)

        iter = text_buffer.get_iter_at_offset(0)
        text_buffer.insert_with_tags_by_name(iter, "\n ", "left_margin_16")
        text_buffer.insert_pixbuf(iter,
                                  self.__load_icon(self.__engine_desc.icon))
        text_buffer.insert_with_tags_by_name(
            iter, "\n%s\n" % self.__engine_desc.longname, "heading",
            "left_margin_16")
        text_buffer.insert_with_tags_by_name(
            iter,
            _("Language: %s\n") %
            ibus.get_language_name(self.__engine_desc.language), "small",
            "bold", "left_margin_16")
        text_buffer.insert_with_tags_by_name(
            iter,
            _("Keyboard layout: %s\n") % self.__engine_desc.layout, "small",
            "bold", "left_margin_16")
        text_buffer.insert_with_tags_by_name(
            iter,
            _("Author: %s\n") % self.__engine_desc.author, "small", "bold",
            "left_margin_16")
        text_buffer.insert_with_tags_by_name(iter, _("Description:\n"),
                                             "small", "bold", "left_margin_16")
        text_buffer.insert_with_tags_by_name(iter,
                                             self.__engine_desc.description,
                                             "wrap_text", "left_margin_32")
コード例 #5
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
コード例 #6
0
ファイル: enginetreeview.py プロジェクト: gzgithub/myibus
 def __name_cell_data_cb(self, celllayout, renderer, model, iter):
     engine = self.__model.get_value(iter, 0)
     renderer.set_property("sensitive", True)
     language = ibus.get_language_name(engine.language)
     renderer.set_property("text", "%s - %s" % (language, engine.longname))
     if self.__model.get_path(iter)[0] == 0:
         # default engine
         renderer.set_property("weight", pango.WEIGHT_BOLD)
     else:
         renderer.set_property("weight", pango.WEIGHT_NORMAL)
コード例 #7
0
ファイル: enginetreeview.py プロジェクト: colorant/ibus
 def __name_cell_data_cb(self, celllayout, renderer, model, iter):
     engine = self.__model.get_value(iter, 0)
     renderer.set_property("sensitive", True)
     language = ibus.get_language_name(engine.language)
     renderer.set_property("text", "%s - %s" % (language, engine.longname))
     if self.__model.get_path(iter)[0] == 0:
         # default engine
         renderer.set_property("weight", pango.WEIGHT_BOLD)
     else:
         renderer.set_property("weight", pango.WEIGHT_NORMAL)
コード例 #8
0
ファイル: enginecombobox.py プロジェクト: colorant/ibus
    def __init__(self, engines):
        super(EngineComboBox, self).__init__()

        self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT)

        iter1 = self.__model.append(None)
        self.__model.set(iter1, 0, 0)
        lang = {}
        for e in engines:
            l = ibus.get_language_name(e.language)
            if l not in lang:
                lang[l] = []
            lang[l].append(e)

        keys = lang.keys()
        keys.sort()
        if ibus.get_language_name("Other") in keys:
            keys.remove( ibus.get_language_name("Other"))
            keys += [ibus.get_language_name("Other")]
        for l in keys:
            iter1 = self.__model.append(None)
            self.__model.set(iter1, 0, l)
            for e in lang[l]:
                iter2 = self.__model.append(iter1)
                self.__model.set(iter2, 0, e)

        self.set_model(self.__model)

        renderer = gtk.CellRendererPixbuf()
        renderer.set_property("xalign", 0)
        self.pack_start(renderer, False)
        self.set_cell_data_func(renderer, self.__icon_cell_data_cb)

        renderer = gtk.CellRendererText()
        renderer.set_property("xalign", 0)
        self.pack_start(renderer, True)
        self.set_cell_data_func(renderer, self.__name_cell_data_cb)

        self.set_active(0)
コード例 #9
0
ファイル: panel.py プロジェクト: XueWei/ibus
    def __create_im_menu(self):
        menu = gtk.Menu()
        engines = self.__bus.list_active_engines()

        tmp = {}
        for engine in engines:
            lang = ibus.get_language_name(engine.language)
            if lang not in tmp:
                tmp[lang] = []
            tmp[lang].append(engine)

        langs = tmp.keys()
        other = tmp.get(_("Other"), [])
        if _("Other") in tmp:
            langs.remove(_("Other"))
            langs.append(_("Other"))

        size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
        for lang in langs:
            if len(tmp[lang]) == 1:
                engine = tmp[lang][0]
                item = gtk.ImageMenuItem("%s - %s" % (lang, engine.longname))
                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)
            else:
                item = gtk.MenuItem(lang)
                menu.add(item)
                submenu = gtk.Menu()
                item.set_submenu(submenu)
                for engine in tmp[lang]:
                    item = gtk.ImageMenuItem(engine.longname)
                    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)
                    submenu.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)
        menu.add(item)

        menu.show_all()
        menu.set_take_focus(False)
        return menu
コード例 #10
0
ファイル: panel.py プロジェクト: thnguyn2/ECE_527_MP
    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()

        group = None
        for i, engine in enumerate(engines):
            lang = ibus.get_language_name(engine.language)
            if self.__appindicator:
                item = gtk.RadioMenuItem(group, "%s - %s" % (lang, engine.longname))
                if not group: group = item
            else:
                item = gtk.ImageMenuItem("%s - %s" % (lang, engine.longname))
            if current_engine and current_engine.name == engine.name:
                if self.__appindicator:
                    item.set_active(True)
                else:
                    for widget in item.get_children():
                         if isinstance(widget, gtk.Label):
                             widget.set_markup("<b>%s</b>" % widget.get_text())
            if not self.__appindicator:
                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)

            
        if self.__appindicator:
            item = gtk.RadioMenuItem(group, _("Input method Off"))
            if self.__focus_ic == None or not self.__focus_ic.is_enabled():
                item.set_active(True)
            item.connect("activate", self.__im_menu_item_activate_cb, None)
        else:
            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)

        return menu
コード例 #11
0
ファイル: main.py プロジェクト: ienzam/IBus-Easy-Config
    def __init__(self):
        try:
            self.bus = ibus.Bus()
        except:
            while self.bus == None:
                pid = os.spawnlp(os.P_NOWAIT, "ibus-daemon", "ibus-daemon", "--xim")
                os.time.sleep(1)
                try: self.bus = ibus.Bus()
                except: continue

        
        self.config = self.bus.get_config()
        self.engines = self.bus.list_engines()
        self.engineDict = {}
        self.langWiseList = {}
        for e in self.engines:
            self.engineDict[e.name] = e
            l = ibus.get_language_name(e.language)
            if l not in self.langWiseList: self.langWiseList[l] = []
            self.langWiseList[l].append(e)
コード例 #12
0
ファイル: engineabout.py プロジェクト: Acidburn0zzz/ibus
 def __fill_text_view(self):
     text_buffer = self.__text_view.get_buffer()
     self.__create_tags(text_buffer)
     
     iter = text_buffer.get_iter_at_offset(0)
     text_buffer.insert_with_tags_by_name(iter, "\n ",
                                          "left_margin_16")
     text_buffer.insert_pixbuf(iter, self.__load_icon(self.__engine_desc.icon))
     text_buffer.insert_with_tags_by_name(iter, "\n%s\n" % self.__engine_desc.longname,
                                          "heading", "left_margin_16")
     text_buffer.insert_with_tags_by_name(iter, _("Language: %s\n") % ibus.get_language_name(self.__engine_desc.language),
                                         "small", "bold", "left_margin_16")
     text_buffer.insert_with_tags_by_name(iter, _("Keyboard layout: %s\n") % self.__engine_desc.layout,
                                         "small", "bold", "left_margin_16")
     text_buffer.insert_with_tags_by_name(iter, _("Author: %s\n") % self.__engine_desc.author,
                                         "small", "bold", "left_margin_16")
     text_buffer.insert_with_tags_by_name(iter, _("Description:\n"),
                                         "small", "bold", "left_margin_16")
     text_buffer.insert_with_tags_by_name(iter, self.__engine_desc.description,
                                         "wrap_text", "left_margin_32")
コード例 #13
0
ファイル: enginetreeview.py プロジェクト: iwaim/ibus
 def __name_cell_data_cb(self, celllayout, renderer, model, iter):
     engine = self.__model.get_value(iter, 0)
     renderer.set_property("sensitive", True)
     language = ibus.get_language_name(engine.language)
     renderer.set_property("text", "%s - %s" % (language, engine.longname))
コード例 #14
0
ファイル: xkbsetup.py プロジェクト: Acidburn0zzz/ibus-xkb
    def __init_config_layouts(self):
        if not ibusxkb.XKBConfigRegistry.have_xkb():
            button = self.__builder.get_object("button_config_layouts")
            button.hide()
            return

        self.__dialog_config_layouts = self.__builder.get_object("dialog_config_layouts")
        self.__button_config_layouts_cancel = self.__builder.get_object("button_config_layouts_cancel")
        self.__button_config_layouts_cancel.connect("clicked", self.__button_config_layouts_cancel_cb)
        self.__button_config_layouts_ok = self.__builder.get_object("button_config_layouts_ok")
        self.__button_config_layouts_ok.connect("clicked", self.__button_config_layouts_ok_cb)
        self.__vbox_all_keyboard_layouts = self.__builder.get_object("vbox_all_keyboard_layouts")

        xkb_engines = self.__get_xkb_engines()
        if len(xkb_engines) > 0:
            button = self.__builder.get_object("button_config_layouts")
            button.connect("clicked", self.__button_config_layouts_cb)
            button.set_sensitive(True)

        engine_dict = {}
        for engine in xkb_engines:
            if not engine.name.startswith("xkb:layout:"):
                continue
            lang = ibus.get_language_name(engine.language)
            if lang not in engine_dict:
                engine_dict[lang] = []
            engine_dict[lang].append(engine)

        keys = engine_dict.keys()
        keys.sort()
        if ibus.get_language_name("Other") in keys:
            keys.remove(ibus.get_language_name("Other"))
            keys += [ibus.get_language_name("Other")]

        preload_xkb_engines = self.__xkblayoutconfig.get_preload_layouts()
        for lang in keys:
            expander = gtk.Expander("")
            self.__vbox_all_keyboard_layouts.pack_start(expander, True, True, 0)
            expander.show()
            label = expander.get_label_widget()
            label.set_label(lang)
            align = gtk.Alignment(0, 0, 1, 0)
            align.set_padding(6, 0, 18, 0)
            expander.add(align)
            align.show()
            vbox = gtk.VBox(False, 0)
            align.add(vbox)
            vbox.show()

            def cmp_engine(a, b):
                if a.rank == b.rank:
                    return cmp(a.longname, b.longname)
                return int(b.rank - a.rank)
            engine_dict[lang].sort(cmp_engine)

            for engine in engine_dict[lang]:
                sub_name = engine.name[len("xkb:layout:"):]
                layout_list = sub_name.split(':')
                if len(layout_list) > 1:
                    layout = "%s(%s)" % (layout_list[0], layout_list[1])
                else:
                    layout = layout_list[0]
                has_preloaded = False
                for preload_name in preload_xkb_engines:
                    preload_name = str(preload_name)
                    if len(preload_name) == 0:
                        continue
                    if layout == preload_name:
                        has_preloaded = True
                        break

                checkbutton = gtk.CheckButton(engine.longname)
                checkbutton.set_data("layout", layout)
                if has_preloaded:
                    checkbutton.set_active(True)
                vbox.pack_start(checkbutton, False, True, 0)
                checkbutton.show()