예제 #1
0
 def test_component(self):
     # construction with keyword args
     component = IBus.Component(name='foo', description='foo desc')
     self.assertEqual(component.props.name, 'foo')
     # construction with non-keyword args
     component = IBus.Component('bar', 'bar desc')
     self.assertEqual(component.props.name, 'bar')
예제 #2
0
    def __init__(self, exec_by_ibus):
        self.__mainloop = GObject.MainLoop()
        self.__bus = IBus.Bus()
        self.__bus.connect("disconnected", self.__bus_destroy_cb)
        self.__factory = factory.EngineFactory(self.__bus)
        self.destroied = False
        if exec_by_ibus:
            self.__bus.request_name("org.freedesktop.IBus.Sdim", 0)
        else:
            self.__component = IBus.Component("org.freedesktop.IBus.Sdim",
                                              "Sdim Component", "0.1.0", "GPL",
                                              "Yuwei Yu <*****@*****.**>")
            name = 'SDIM'
            longname = name
            description = 'Shadow Dance Input Method'
            language = 'zh'
            license = 'LGPL'
            author = 'Bao Haojun <*****@*****.**>'
            icon = icon_dir + "/sdim.png"
            if icon:
                icon = os.path.join(icon_dir, icon)
                if not os.access(icon, os.F_OK):
                    icon = ''
            layout = 'us'

            self.__component.add_engine(name, longname, description, language,
                                        license, author, icon, layout)
            self.__bus.register_component(self.__component)
예제 #3
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)
예제 #4
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)
예제 #5
0
 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
예제 #6
0
def register_engine(bus, live=False):
    log.debug('Registering the component')
    component = IBus.Component(
        name=COMPONENT,
        description='DeepSpeech-in-docker input method',
        version='1.0',
        license='LGPL',
        author='Mike C. Fletcher',
        homepage='https://github.com/mcfletch/deepspeech-docker',
        command_line='listener-ibus',
        textdomain='en',  # TODO: is this really language?
    )
    component.add_engine(ListenerEngine.DESCRIPTION)
    connection = bus.get_connection()
    if not connection:
        raise RuntimeError("IBus has no connection")
    factory = IBus.Factory.new(connection)
    log.info("Adding ibus engine at %r", SERVICE_NAME)
    factory.add_engine(SERVICE_NAME, GObject.type_from_name(NAME))
    if not live:
        log.info(
            'Running in development (non-live) mode with direct registation')
        ListenerEngine.stand_alone = True
        assert bus.register_component(
            component), "Unable to register our component"

        def on_set_engine(source, result, data=None):
            if result.had_error():
                log.error("Unable to register!")
                MAINLOOP.quit()
            else:
                log.info('Set engine called: %s, %s, %s', source, result, data)

        def set_engine():
            log.info("Registering IBus Service at %r", SERVICE_NAME)
            bus.set_global_engine_async(
                SERVICE_NAME,
                5000,  # shouldn't take this long!
                None,
                on_set_engine,
                None,
            )

        GLib.idle_add(set_engine)
    else:
        log.info('Registering for activation via DBUS')
        GLib.idle_add(
            bus.request_name,
            COMPONENT,
            IBus.BusNameFlag.ALLOW_REPLACEMENT,
        )
예제 #7
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)
예제 #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)
        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)
예제 #9
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)
예제 #10
0
def register_engine(bus, live=False):
    log.debug('Registering the component')
    component = IBus.Component(
        name=COMPONENT,
        description='DeepSpeech-in-docker input method',
        version='1.0',
        license='LGPL',
        author='Mike C. Fletcher',
        homepage='https://github.com/mcfletch/deepspeech-docker',
        command_line='listener-ibus -r',
        textdomain='en',  # TODO: is this language?
    )
    component.add_engine(ListenerEngine.DESCRIPTION)
    connection = bus.get_connection()
    assert connection, "IBus has no connection"
    factory = IBus.Factory.new(connection)
    factory.add_engine(
        SERVICE_NAME, GObject.type_from_name(NAME)), "Unable to add the engine"
    if not live:
        assert bus.register_component(
            component), "Unable to register our component"

        def on_set_engine(source, result, data=None):
            if result.had_error():
                log.error("Unable to register!")
                MAINLOOP.quit()

        def set_engine():
            log.info("Registering IBus Service at %s", SERVICE_NAME)
            bus.set_global_engine_async(
                SERVICE_NAME,
                5000,  # shouldn't take this long!
                None,
                on_set_engine,
                None,
            )

        GLib.idle_add(set_engine)
    else:
        GLib.idle_add(
            bus.request_name,
            COMPONENT,
            IBus.BusNameFlag.ALLOW_REPLACEMENT,
        )
예제 #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