diff options
Diffstat (limited to 'ibus/clientmanager.py')
-rw-r--r-- | ibus/clientmanager.py | 20 |
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] + |