summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-07-30 12:04:50 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-07-30 12:04:50 +0800
commit7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa (patch)
treeceafbe42ad3d10ecb14a0981f8a613bdda5af2db
parent13a4d66dbf0f29cff78c9633123b483041c527be (diff)
downloadibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.tar.gz
ibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.tar.xz
ibus-7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa.zip
Refactory bus.py.
-rw-r--r--daemon/bus.py29
-rw-r--r--daemon/ibusdaemon.py5
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()