diff options
| author | Huang Peng <shawn.p.huang@gmail.com> | 2008-07-30 12:04:50 +0800 |
|---|---|---|
| committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-07-30 12:04:50 +0800 |
| commit | 7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa (patch) | |
| tree | ceafbe42ad3d10ecb14a0981f8a613bdda5af2db | |
| parent | 13a4d66dbf0f29cff78c9633123b483041c527be (diff) | |
| download | ibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.tar.gz ibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.tar.xz ibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.zip | |
Refactory bus.py.
| -rw-r--r-- | daemon/bus.py | 29 | ||||
| -rw-r--r-- | daemon/ibusdaemon.py | 5 |
2 files changed, 22 insertions, 12 deletions
diff --git a/daemon/bus.py b/daemon/bus.py index d4f8da6..f3e5448 100644 --- a/daemon/bus.py +++ b/daemon/bus.py @@ -23,9 +23,9 @@ import dbus import ibus from ibus import keysyms from ibus import modifier +from connection import Connection from contextmanager import ContextManager from factorymanager import FactoryManager -from connection import Connection from panel import Panel, DummyPanel from config import Config, DefaultConfig from register import Register @@ -44,7 +44,16 @@ class IBus(ibus.Object): self.__last_focused_context = None self.__context_handlers = list() - self.__last_key = None + self.__connections = list() + + def new_connection(self, dbusconn): + conn = Connection(dbusconn) + IBusProxy(self, conn) + conn.connect("destroy", self.__conn_destroy_cb) + self.__connections.append(conn) + + def __conn_destroy_cb(self, conn): + self.__connections.remove(conn) ########################################################## # methods for im context @@ -241,9 +250,6 @@ class IBus(ibus.Object): def register_factories(self, object_paths, conn): self.__factory_manager.register_factories(object_paths, conn) - def __lookup_engine(self, dbusconn, path): - return self.__factory_manager.lookup_engine(conn, path) - ########################################################## # methods for panel @@ -314,10 +320,10 @@ class IBus(ibus.Object): self.__config.connect("value-changed", self.__config_value_changed_cb) self.__config.connect("destroy", self.__config_destroy_cb) - def config_set_value(self, key, value, dbusconn, **kargs): + def config_set_value(self, key, value, conn, **kargs): self.__config.set_value(key, value, **kargs) - def config_get_value(self, key, dbusconn, **kargs): + def config_get_value(self, key, conn, **kargs): self.__config.get_value(key, **kargs) def config_add_watch_dir(self, dir, conn, **kargs): @@ -391,10 +397,15 @@ class IBus(ibus.Object): class IBusProxy(ibus.IIBus): - def __init__(self, bus, dbusconn): + def __init__(self, bus, conn): super(IBusProxy, self).__init__(dbusconn, ibus.IBUS_PATH) self.__ibus = bus - self.__conn = Connection(dbusconn) + self.__conn = conn + self.__conn.connect("destroy", self.__conn_destroy_cb) + + def __conn_destroy_cb(self, conn): + self.__conn = None + self.__ibus = None def GetIBusAddress(self, dbusconn): return self.__ibus_addr diff --git a/daemon/ibusdaemon.py b/daemon/ibusdaemon.py index d09fe44..c277f80 100644 --- a/daemon/ibusdaemon.py +++ b/daemon/ibusdaemon.py @@ -30,7 +30,7 @@ import dbus.service import dbus.lowlevel import dbus.mainloop.glib import ibus -from bus import IBus, IBusProxy +from bus import IBus class DBus(dbus.service.Object): @@ -70,10 +70,9 @@ class IBusServer(dbus.server.Server): self.__ibus = IBus() def connection_added(self, dbusconn): - IBusProxy(self.__ibus, dbusconn) + self.__ibus.new_connection(dbusconn) DBus(dbusconn, dbus.BUS_DAEMON_PATH) - def launch_ibus(): dbus.mainloop.glib.DBusGMainLoop(set_as_default = True) loop = gobject.MainLoop() |
