summaryrefslogtreecommitdiffstats
path: root/ibus/clientmanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'ibus/clientmanager.py')
-rw-r--r--ibus/clientmanager.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/ibus/clientmanager.py b/ibus/clientmanager.py
new file mode 100644
index 0000000..92030da
--- /dev/null
+++ b/ibus/clientmanager.py
@@ -0,0 +1,20 @@
+import ibus
+
+class ClientManager (ibus.Object):
+ def __init__ (self):
+ self._clients = {}
+
+ def register_client (self, name, ibusconn):
+ if ibusconn in self._clients:
+ raise ibus.IBusException ("client has been registered")
+ client = ibus.Client (name, ibusconn)
+ self._clients[ibusconn] = client
+ ibusconn.connect ("destroy", self._ibusconn_destroy_cb)
+ return client
+
+ def lookup_client (self, ibusconn):
+ return self._clients[ibusconn]
+
+ def _ibusconn_destroy_cb (self, ibusconn):
+ del self._clients[ibusconn]
+