summaryrefslogtreecommitdiffstats
path: root/ibus/bus.py
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-05-13 10:51:18 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-05-13 11:41:06 +0800
commit14a08bc34acab200f891c880b3f3f31751d5800f (patch)
treec1526e005b4487d7ed21d4f319324093f72fe9e8 /ibus/bus.py
parent4d313651ea8de6a554ae1f5009687e66803b99c4 (diff)
downloadibus-14a08bc34acab200f891c880b3f3f31751d5800f.tar.gz
ibus-14a08bc34acab200f891c880b3f3f31751d5800f.tar.xz
ibus-14a08bc34acab200f891c880b3f3f31751d5800f.zip
Split ibusdaemon from ibus.
Diffstat (limited to 'ibus/bus.py')
-rwxr-xr-xibus/bus.py168
1 files changed, 0 insertions, 168 deletions
diff --git a/ibus/bus.py b/ibus/bus.py
deleted file mode 100755
index 01e5e73..0000000
--- a/ibus/bus.py
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/usr/bin/env python
-import weakref
-import dbus
-import ibus
-from ibus import keysyms
-
-class IBus (ibus.Object):
- def __init__ (self):
- ibus.Object.__init__ (self)
- self._connections = {}
- self._client_manager = ibus.ClientManager ()
- self._factory_manager = ibus.FactoryManager ()
-
- self._focused_client = None
- self._last_focused_client = None
-
- self._last_key = None
-
- def new_connection (self, dbusconn):
- assert dbusconn not in self._connections
- self._connections[dbusconn] = ibus.Connection (dbusconn)
-
- def remove_connection (self, dbusconn):
- assert dbusconn in self._connections
-
- # destroy the connection
- self._connections[dbusconn].destroy ()
- del self._connections[dbusconn]
-
- def _lookup_ibus_connection (self, dbusconn):
- if dbusconn not in self._connections:
- raise ibus.IBusException ("can not find ibus.Connection")
- return self._connections[dbusconn]
-
- ##########################################################
- # methods for im client
- ##########################################################
- def register_client (self, name, dbusconn):
- ibusconn = self._lookup_ibus_connection (dbusconn)
- client = self._client_manager.register_client (name, ibusconn)
- factory = self._factory_manager.get_default_factory ()
- client.set_engine_factory (factory)
-
- def focus_in (self, dbusconn):
- client = self._lookup_client (dbusconn)
-
- if self._focused_client != client and self._focused_client != None:
- self._focused_client.focus_out ()
-
- self._focused_client = client
- self._last_focused_client = client
- client.focus_in ()
-
- def focus_out (self, dbusconn):
- client = self._lookup_client (dbusconn)
- if client == self._focused_client:
- self._focused_client = None
- client.focus_out ()
-
- def reset (self, dbusconn):
- client = self._lookup_client (dbusconn)
- client.reset ()
-
- def is_enabled (self, dbusconn):
- client = self._lookup_client (dbusconn)
- return client.is_enabled ()
-
- def process_key_event (self, keyval, is_press, state,
- dbusconn, reply_cb, error_cb):
- client = self._lookup_client (dbusconn)
-
- if self._filter_hotkeys (client, keyval, is_press, state):
- reply_cb (True)
- return
- else:
- client.process_key_event (keyval, is_press, state, reply_cb, error_cb)
-
- def set_cursor_location (self, x, y, w, h, dbusconn):
- client = self._lookup_client (dbusconn)
- client.set_cursor_location (x, y, w, h)
-
- def _filter_hotkeys (self, client, keyval, is_press, state):
- if is_press and keyval == keysyms.space \
- and state == keysyms.CONTROL_MASK:
- enable = not client.is_enabled ()
- client.set_enable (enable)
- if client.get_engine_factory () == None and enable:
- factory = self._factory_manager.get_default_factory()
- client.set_engine_factory (factory)
- return True
- return False
-
- def _lookup_client (self, dbusconn):
- ibusconn = self._lookup_ibus_connection (dbusconn)
- return self._client_manager.lookup_client (ibusconn)
- if dbusconn not in self._clients:
- raise ibus.IBusException ("not register the client")
- return self._clients[dbusconn]
-
- ##########################################################
- # methods for im client
- ##########################################################
- def register_factories (self, object_paths, dbusconn):
- ibusconn = self._lookup_ibus_connection (dbusconn)
- self._factory_manager.register_factories (object_paths, ibusconn)
-
- def dispatch_dbus_signal (self, dbusconn, message):
- ibusconn = self._lookup_ibus_connection (dbusconn)
- ibusconn.dispatch_dbus_signal (message)
-
- def _lookup_engine (self, dbusconn, path):
- ibusconn = self._lookup_ibus_connection (dbusconn)
- return self._factory_manager.lookup_engine (ibusconn, path)
-
-
-
-
-class IBusProxy (ibus.IIBus):
- SUPPORTS_MULTIPLE_CONNECTIONS = True
-
- def __init__ (self):
- ibus.IIBus.__init__ (self)
- self._ibus = IBus ()
-
- def new_connection (self, dbusconn):
- self._ibus.new_connection (dbusconn)
-
- def remove_connection (self, dbusconn):
- self._ibus.remove_connection (dbusconn)
-
- def dispatch_dbus_signal (self, dbusconn, message):
- return self._ibus.dispatch_dbus_signal (dbusconn, message)
-
- def GetIBusAddress (self, dbusconn):
- return self._ibus_addr
-
- def RegisterClient (self, client_name, dbusconn):
- self._ibus.register_client (client_name, dbusconn)
-
- def RegisterFactories (self, object_paths, dbusconn):
- self._ibus.register_factories (object_paths, dbusconn)
-
- def UnregisterEngines (self, object_paths, dbusconn):
- self._ibus.unregister_engines (object_paths, dbusconn)
-
- def ProcessKeyEvent (self, keyval, is_press, state, \
- dbusconn, reply_cb, error_cb):
- try:
- self._ibus.process_key_event (keyval, is_press, state,
- dbusconn, reply_cb, error_cb)
- except Exception, e:
- error_cb (e)
-
- def SetCursorLocation (self, x, y, w, h, dbusconn):
- self._ibus.set_cursor_location (x, y, w, h, dbusconn)
-
- def FocusIn (self, dbusconn):
- self._ibus.focus_in (dbusconn)
-
- def FocusOut (self, dbusconn):
- self._ibus.focus_out (dbusconn)
-
- def Reset (self, dbusconn):
- self._ibus.reset (dbusconn)
-
- def IsEnabled (self, dbusconn):
- return self._ibus.is_enabled (dbusconn)
-