Example #1
0
 def test_engine_desc(self):
     # construction with keyword args
     desc = IBus.EngineDesc(name='foo')
     self.assertEqual(desc.props.name, 'foo')
     # construction with non-keyword args
     desc = IBus.EngineDesc('bar')
     self.assertEqual(desc.props.name, 'bar')
Example #2
0
 def __init__(self, exec_by_ibus):
     command_line = config.LIBEXECDIR + '/ibus-engine-anthy --ibus'
     self.__component = IBus.Component(
         name='org.freedesktop.IBus.Anthy',
         description='Anthy Component',
         version='0.1.0',
         license='GPL',
         author='Peng Huang <*****@*****.**>',
         homepage='https://github.com/ibus/ibus/wiki',
         command_line=command_line,
         textdomain='ibus-anthy')
     engine = IBus.EngineDesc(name='anthy',
                              longname='Anthy',
                              description='Anthy Input Method',
                              language='ja',
                              license='GPL',
                              author='Peng Huang <*****@*****.**>',
                              icon='ibus-anthy',
                              layout=config.LAYOUT,
                              symbol=config.SYMBOL_CHAR,
                              rank=99)
     self.__component.add_engine(engine)
     self.__mainloop = GLib.MainLoop()
     self.__bus = IBus.Bus()
     self.__bus.connect('disconnected', self.__bus_disconnected_cb)
     self.__factory = factory.EngineFactory(self.__bus)
     if exec_by_ibus:
         self.__bus.request_name('org.freedesktop.IBus.Anthy', 0)
     else:
         self.__bus.register_component(self.__component)
Example #3
0
 def __init__(self, exec_by_ibus):
     self._mainloop = GLib.MainLoop()
     self._bus = IBus.Bus()
     self._bus.connect("disconnected", self._bus_disconnected_cb)
     self._factory = IBus.Factory(self._bus)
     self._factory.add_engine("hiragana",
                              GObject.type_from_name("EngineHiragana"))
     if exec_by_ibus:
         self._bus.request_name("org.freedesktop.IBus.Hiragana", 0)
     else:
         self._component = IBus.Component(
             name="org.freedesktop.IBus.Hiragana",
             description="Hiragana IME",
             version=package.get_version(),
             license="Apache",
             author="Esrille Inc. <*****@*****.**>",
             homepage="https://github.com/esrille/" + package.get_name(),
             textdomain=package.get_name())
         engine = IBus.EngineDesc(name="hiragana",
                                  longname="Hiragana IME",
                                  description="Hiragana IME",
                                  language="ja",
                                  license="Apache",
                                  author="Esrille Inc. <*****@*****.**>",
                                  icon=package.get_name(),
                                  layout="default")
         self._component.add_engine(engine)
         self._bus.register_component(self._component)
         self._bus.set_global_engine_async("hiragana", -1, None, None, None)
Example #4
0
 def __init__(self, exec_by_ibus):
     self.__id = 0
     engine_name = "BoGo Engine"
     self.__component = \
       IBus.Component.new("org.freedesktop.IBus.BoGoPython",
                          "BoGo Engine for IBus",
                          "0.2",
                          "GPLv3",
                          "Long T. Dam <*****@*****.**>",
                          "https://github.com/BoGoEngine/ibus-bogo-python",
                          "/usr/bin/exec",
                          "ibus-bogo")
     engine = IBus.EngineDesc(name="bogo-python",
                              longname=engine_name,
                              description="BoGo Engine for IBus",
                              language="vi",
                              license="GPLv3",
                              author="Long T. Dam <*****@*****.**>",
                              icon=current_path + "/data/ibus-bogo.svg",
                              layout="us")
     self.__component.add_engine(engine)
     self.__mainloop = GObject.MainLoop()
     self.__bus = IBus.Bus()
     self.__bus.connect("disconnected", self.__bus_disconnected_cb)
     self.__config = Config()
     self.__factory = IBus.Factory.new(self.__bus.get_connection())
     self.__factory.add_engine("bogo-python",
                               GObject.type_from_name("EngineBoGo"))
     if exec_by_ibus:
         self.__bus.request_name("org.freedesktop.IBus.BoGoPython", 0)
     else:
         self.__bus.register_component(self.__component)
         self.__bus.set_global_engine_async("bogo-python", -1, None, None,
                                            None)
 def register_ibus_engine(self) -> bool:
     self.__bus = IBus.Bus()
     if not self.__bus.is_connected():
         self.fail('ibus-daemon is not running')
         return False
     self.__bus.get_connection().signal_subscribe(
         'org.freedesktop.DBus', 'org.freedesktop.DBus', 'NameOwnerChanged',
         '/org/freedesktop/DBus', None, 0, self.__bus_signal_cb, self.__bus)
     self.__factory = IBus.Factory(object_path=IBus.PATH_FACTORY,
                                   connection=self.__bus.get_connection())
     self.__factory.connect('create-engine', self.__create_engine_cb)
     self.__component = IBus.Component(
         name='org.freedesktop.IBus.TypingBooster.Test',
         description='Test Typing Booster Component',
         version='1.0',
         license='GPL',
         author=('Mike FABIAN <*****@*****.**>, ' +
                 'Anish Patil <*****@*****.**>'),
         homepage='http://mike-fabian.github.io/ibus-typing-booster',
         command_line='',
         textdomain='ibus-typing-booster')
     desc = IBus.EngineDesc(
         name='testTyping-booster',
         longname='Test Typing Booster',
         description='Test a completion input method to speedup typing.',
         language='t',
         license='GPL',
         author=('Mike FABIAN <*****@*****.**>, ' +
                 'Anish Patil <*****@*****.**>'),
         icon='',
         symbol='T')
     self.__component.add_engine(desc)
     self.__bus.register_component(self.__component)
     self.__bus.request_name('org.freedesktop.IBus.TypingBooster.Test', 0)
     return True
Example #6
0
    def __init__(self, exec_by_ibus):
        engine_name = "bogo"
        long_engine_name = "BoGo"
        author = "BoGo Development Team <*****@*****.**>"
        description = "ibus-bogo for IBus"
        version = "0.4"
        license = "GPLv3"

        self.component = \
            IBus.Component.new("org.freedesktop.IBus.BoGo",
                               description,
                               version,
                               license,
                               author,
                               "https://github.com/BoGoEngine/ibus-bogo",
                               "/usr/bin/exec",
                               "ibus-bogo")

        engine = IBus.EngineDesc(
            name=engine_name,
            longname=long_engine_name,
            description=description,
            language="vi",
            license=license,
            author=author,
            icon=current_path + "/data/ibus-bogo-dev.svg",
            # icon = "ibus-bogo",
            layout="default")

        self.component.add_engine(engine)
        self.mainloop = GObject.MainLoop()
        self.bus = IBus.Bus()
        self.bus.connect("disconnected", self.bus_disconnected_cb)

        self.engine_count = 0
        self.factory = IBus.Factory.new(self.bus.get_connection())
        self.factory.connect("create-engine", self.create_engine)

        CONFIG_DIR = os.path.expanduser("~/.config/ibus-bogo/")
        self.config = Config()
        self.abbr_expander = AbbreviationExpander(config=self.config)
        self.abbr_expander.watch_file(CONFIG_DIR + "/abbr_rules.json")

        if exec_by_ibus:
            self.bus.request_name("org.freedesktop.IBus.BoGo", 0)
        else:
            self.bus.register_component(self.component)
            self.bus.set_global_engine_async("bogo", -1, None, None, None)
        custom_broker = enchant.Broker()
        custom_broker.set_param('enchant.myspell.dictionary.path', DICT_PATH)

        spellchecker = enchant.DictWithPWL('vi_VN_telex',
                                           pwl=PWL_PATH,
                                           broker=custom_broker)

        # FIXME: Catch enchant.errors.DictNotFoundError exception here.
        english_spellchecker = enchant.Dict('en_US')

        self.auto_corrector = AutoCorrector(self.config, spellchecker,
                                            english_spellchecker)
Example #7
0
    def __init__(self, exec_by_ibus):
        engine_name = "bogo"
        long_engine_name = "BoGo"
        author = "BoGo Development Team <*****@*****.**>"
        description = "ibus-bogo for IBus"
        version = "0.4"
        license = "GPLv3"

        self.component = \
            IBus.Component.new("org.freedesktop.IBus.BoGo",
                               description,
                               version,
                               license,
                               author,
                               "https://github.com/BoGoEngine/ibus-bogo",
                               "/usr/bin/exec",
                               "ibus-bogo")

        engine = IBus.EngineDesc(name=engine_name,
                                 longname=long_engine_name,
                                 description=description,
                                 language="vi",
                                 license=license,
                                 author=author,
                                 icon=current_path + "/data/ibus-bogo-dev.svg",
                                 # icon = "ibus-bogo",
                                 layout="default")

        self.component.add_engine(engine)
        self.mainloop = GObject.MainLoop()
        self.bus = IBus.Bus()
        self.bus.connect("disconnected", self.bus_disconnected_cb)

        self.engine_count = 0
        self.factory = IBus.Factory.new(self.bus.get_connection())
        self.factory.connect("create-engine", self.create_engine)

        CONFIG_DIR = os.path.expanduser("~/.config/ibus-bogo/")
        self.config = Config()
        self.abbr_expander = AbbreviationExpander(config=self.config)
        self.abbr_expander.watch_file(CONFIG_DIR + "/abbr_rules.json")
        self.icon = TrayIcon()

        if exec_by_ibus:
            self.bus.request_name("org.freedesktop.IBus.BoGo", 0)
        else:
            self.bus.register_component(self.component)
            self.bus.set_global_engine_async(
                "bogo", -1, None, None, None)
Example #8
0
    def __init__(self, exec_by_ibus):
        if DEBUG_LEVEL > 1:
            sys.stderr.write("IMApp.__init__(exec_by_ibus=%s)\n" %
                             exec_by_ibus)
        self.__mainloop = GLib.MainLoop()
        self.__bus = IBus.Bus()
        self.__bus.connect("disconnected", self.__bus_destroy_cb)
        self.__factory = factory.EngineFactory(self.__bus,
                                               config_file_dir=CONFIG_FILE_DIR)
        self.destroyed = False
        if exec_by_ibus:
            self.__bus.request_name("org.freedesktop.IBus.IbusTypingBooster",
                                    0)
        else:
            self.__component = IBus.Component(
                name="org.freedesktop.IBus.IbusTypingBooster",
                description="Table Component",
                version="0.1.0",
                license="GPL",
                author="Anish Patil <*****@*****.**>",
                homepage="http://mike-fabian.github.io/ibus-typing-booster",
                textdomain="ibus-typing-booster")
            # now we get IME info from self.__factory.db
            name = self.__factory.db.ime_properties.get("name")
            longname = self.__factory.db.ime_properties.get("ime_name")
            description = self.__factory.db.ime_properties.get("description")
            language = self.__factory.db.ime_properties.get("language")
            credit = self.__factory.db.ime_properties.get("credit")
            author = self.__factory.db.ime_properties.get("author")
            icon = self.__factory.db.ime_properties.get("icon")
            if icon:
                icon = os.path.join(ICON_DIR, icon)
                if not os.access(icon, os.F_OK):
                    icon = ''
            layout = self.__factory.db.ime_properties.get("layout")
            symbol = self.__factory.db.ime_properties.get("symbol")

            engine = IBus.EngineDesc(name=name,
                                     longname=longname,
                                     description=description,
                                     language=language,
                                     license=credit,
                                     author=author,
                                     icon=icon,
                                     layout=layout,
                                     symbol=symbol)
            self.__component.add_engine(engine)
            self.__bus.register_component(self.__component)
Example #9
0
    def __init__(self, exec_by_ibus):
        if DEBUG_LEVEL > 1:
            sys.stderr.write(
                "IMApp.__init__(exec_by_ibus=%s)\n"
                % exec_by_ibus)
        self.__mainloop = GLib.MainLoop()
        self.__bus = IBus.Bus()
        self.__bus.connect("disconnected", self.__bus_destroy_cb)
        self.__factory = factory.EngineFactory(self.__bus)
        self.destroyed = False
        if exec_by_ibus:
            self.__bus.request_name(
                "org.freedesktop.IBus.IbusTypingBooster", 0)
        else:
            self.__component = IBus.Component(
                name="org.freedesktop.IBus.IbusTypingBooster",
                description="Typing Booster Component",
                version=version.get_version(),
                license="GPL",
                author="Mike FABIAN <*****@*****.**>, Anish Patil <*****@*****.**>",
                homepage="http://mike-fabian.github.io/ibus-typing-booster",
                textdomain="ibus-typing-booster")
            # now we get IME info from self.__factory.db
            name = 'typing-booster'
            longname = 'Typing Booster'
            description = 'A completion input method to speedup typing.'
            language = 't'
            author = (
                'Mike FABIAN <*****@*****.**>'
                + ', Anish Patil <*****@*****.**>')
            icon = os.path.join(ICON_DIR, 'ibus-typing-booster.svg')
            if not os.access(icon, os.F_OK):
                icon = ''
            layout = 'default'
            symbol = '🚀'

            engine = IBus.EngineDesc(name=name,
                                     longname=longname,
                                     description=description,
                                     language=language,
                                     license='GPL',
                                     author=author,
                                     icon=icon,
                                     layout=layout,
                                     symbol=symbol)
            self.__component.add_engine(engine)
            self.__bus.register_component(self.__component)
Example #10
0
 def __init__(self, dbfile, exec_by_ibus):
     self.__mainloop = GLib.MainLoop()
     self.__bus = IBus.Bus()
     self.__bus.connect("disconnected", self.__bus_destroy_cb)
     self.__factory = factory.EngineFactory(self.__bus, dbfile)
     self.destroyed = False
     if exec_by_ibus:
         self.__bus.request_name("org.freedesktop.IBus.Table", 0)
     else:
         self.__component = IBus.Component(
             name='org.freedesktop.IBus.Table',
             description='Table Component',
             version='0.1.0',
             license='GPL',
             author='Yuwei Yu <*****@*****.**>',
             homepage='http://code.google.com/p/ibus/',
             textdomain='ibus-table')
         # now we get IME info from self.__factory.db
         engine_name = os.path.basename(
             self.__factory.db.filename).replace('.db', '')
         name = 'table:'+engine_name
         longname = self.__factory.db.ime_properties.get("name")
         description = self.__factory.db.ime_properties.get("description")
         language = self.__factory.db.ime_properties.get("languages")
         credit = self.__factory.db.ime_properties.get("credit")
         author = self.__factory.db.ime_properties.get("author")
         icon = self.__factory.db.ime_properties.get("icon")
         if icon:
             icon = os.path.join(ICON_DIR, icon)
             if not os.access(icon, os.F_OK):
                 icon = ''
         layout = self.__factory.db.ime_properties.get("layout")
         symbol = self.__factory.db.ime_properties.get("symbol")
         setup_arg = "{} --engine-name {}".format(SETUP_CMD, name)
         engine = IBus.EngineDesc(name=name,
                                  longname=longname,
                                  description=description,
                                  language=language,
                                  license=credit,
                                  author=author,
                                  icon=icon,
                                  layout=layout,
                                  symbol=symbol,
                                  setupdsis=setup_arg)
         self.__component.add_engine(engine)
         self.__bus.register_component(self.__component)
Example #11
0
 def register_ibus_engine(self):
     self.__bus = IBus.Bus()
     if not self.__bus.is_connected():
         self.fail('ibus-daemon is not running')
         return False
     self.__bus.get_connection().signal_subscribe(
         'org.freedesktop.DBus',
         'org.freedesktop.DBus',
         'NameOwnerChanged',
         '/org/freedesktop/DBus',
         None,
         0,
         self.__bus_signal_cb,
         self.__bus)
     self.__factory = IBus.Factory(
         object_path=IBus.PATH_FACTORY,
         connection=self.__bus.get_connection())
     self.__factory.connect('create-engine', self.__create_engine_cb)
     self.__component = IBus.Component(
         name='org.freedesktop.IBus.Table.Test',
         description='Test Table Component',
         version='1.0',
         license='GPL',
         author=('Mike FABIAN <*****@*****.**>, '
                 + 'Caius "kaio" CHANCE <*****@*****.**>'),
         homepage='http://mike-fabian.github.io/ibus-table/',
         command_line='',
         textdomain='ibus-table')
     desc = IBus.EngineDesc(
         name=ENGINE_NAME,
         longname='Test Table %s' % ENGINE_NAME,
         description='Test Table Component',
         language='t',
         license='GPL',
         author=('Mike FABIAN <*****@*****.**>, '
                 + 'Caius "kaio" CHANCE <*****@*****.**>'),
         icon='',
         symbol='T')
     self.__component.add_engine(desc)
     self.__bus.register_component(self.__component)
     self.__bus.request_name('org.freedesktop.IBus.Table.Test', 0)
     return True
Example #12
0
            renderer.set_property("sensitive", True)
            renderer.set_property("text", engine.get_longname())
            renderer.set_property(
                "weight", Pango.Weight.BOLD
                if engine.get_rank() > 0 else Pango.Weight.NORMAL)

    def __notify_active_cb(self, combobox, property):
        self.notify("active-engine")

    def do_get_property(self, property):
        if property.name == "active-engine":
            i = self.get_active()
            if i == 0 or i == -1:
                return None
            iter = self.get_active_iter()
            return self.get_model()[iter][0]
        else:
            raise AttributeError('unknown property %s' % property.name)

    def get_active_engine(self):
        return self.get_property("active-engine")


if __name__ == "__main__":
    combo = EngineComboBox()
    combo.set_engines([IBus.EngineDesc(language="zh")])
    w = Gtk.Window()
    w.add(combo)
    w.show_all()
    Gtk.main()
Example #13
0
    def __create_tags(self, text_buffer):
        text_buffer.create_tag("heading",
                               weight=Pango.Weight.BOLD,
                               size=16 * Pango.SCALE)
        text_buffer.create_tag("bold", weight=Pango.Weight.BOLD)
        text_buffer.create_tag("italic", style=Pango.Style.ITALIC)
        text_buffer.create_tag("small",
                               scale=0.833333333333)  # Pango.SCALE_SMALL ?
        text_buffer.create_tag("gray_foreground", foreground="dark gray")
        text_buffer.create_tag("wrap_text", wrap_mode=Gtk.WrapMode.WORD)
        text_buffer.create_tag("left_margin_16", left_margin=16)
        text_buffer.create_tag("left_margin_32", left_margin=32)

    def __load_icon(self, icon):
        try:
            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
                icon, 48, 48, True)
        except:
            theme = Gtk.IconTheme.get_default()
            icon = theme.lookup_icon("ibus-engine", 48, 0)
            if icon == None:
                icon = theme.lookup_icon(Gtk.STOCK_MISSING_IMAGE, 48, 0)
            pixbuf = icon.load_icon()
        return pixbuf


if __name__ == "__main__":
    desc = IBus.EngineDesc()
    EngineAbout(desc).run()