summaryrefslogtreecommitdiff
path: root/engine/python2/factory.py
diff options
context:
space:
mode:
Diffstat (limited to 'engine/python2/factory.py')
-rw-r--r--engine/python2/factory.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/engine/python2/factory.py b/engine/python2/factory.py
new file mode 100644
index 0000000..d4aa075
--- /dev/null
+++ b/engine/python2/factory.py
@@ -0,0 +1,80 @@
+# vim:set et sts=4 sw=4:
+# -*- coding: utf-8 -*-
+#
+# ibus-anthy - The Anthy engine for IBus
+#
+# Copyright (c) 2007-2008 Peng Huang <shawn.p.huang@gmail.com>
+# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2007-2013 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import os
+
+from gi.repository import IBus
+
+import _config as config
+import engine
+
+
+class EngineFactory(IBus.Factory):
+ FACTORY_PATH = '/com/redhat/IBus/engines/Anthy/Factory'
+ ENGINE_PATH = '/com/redhat/IBus/engines/Anthy/Engine'
+ NAME = 'Anthy'
+ LANG = 'ja'
+ ICON = config.PKGDATADIR + '/icons/ibus-anthy.png'
+ AUTHORS = 'Huang Peng <shawn.p.huang@gmail.com>'
+ CREDITS = 'GPLv2'
+
+ def __init__(self, bus):
+ self.__bus = bus
+ engine.Engine.CONFIG_RELOADED(bus)
+ super(EngineFactory, self).__init__(object_path=IBus.PATH_FACTORY,
+ connection=bus.get_connection())
+
+ self.__id = 0
+ self.__config = self.__bus.get_config()
+
+ if self.__config != None:
+ self.__config.connect('value-changed',
+ self.__config_value_changed_cb)
+ else:
+ print >> sys.stderr, \
+ 'ibus-config is not running or bus address is not correct.'
+
+ bus.get_connection().signal_subscribe('org.freedesktop.DBus',
+ 'org.freedesktop.DBus',
+ 'NameOwnerChanged',
+ '/org/freedesktop/DBus',
+ None,
+ 0,
+ self.__name_owner_changed_cb,
+ bus)
+
+ def do_create_engine(self, engine_name):
+ if engine_name == 'anthy':
+ self.__id += 1
+ return engine.Engine(self.__bus, '%s/%d' % (self.ENGINE_PATH, self.__id))
+
+ return super(EngineFactory, self).do_create_engine(engine_name)
+
+ def __config_value_changed_cb(self, config, section, name, value):
+ engine.Engine.CONFIG_VALUE_CHANGED(self.__bus, section, name, value)
+
+ def __name_owner_changed_cb(self, connection, sender_name, object_path,
+ interface_name, signal_name, parameters,
+ user_data):
+ if signal_name == 'NameOwnerChanged':
+ engine.Engine.CONFIG_RELOADED(self.__bus)