diff options
Diffstat (limited to 'daemon/inputcontext.py')
-rw-r--r-- | daemon/inputcontext.py | 449 |
1 files changed, 0 insertions, 449 deletions
diff --git a/daemon/inputcontext.py b/daemon/inputcontext.py deleted file mode 100644 index 8e433a2..0000000 --- a/daemon/inputcontext.py +++ /dev/null @@ -1,449 +0,0 @@ -# vim:set et sts=4 sw=4: -# -# ibus - The Input Bus -# -# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA - -import gobject -import ibus - -IBUS_CAP_PREEDIT = 1 -IBUS_CAP_AUX_STRING = 1 << 1 -IBUS_CAP_LOOKUP_TABLE = 1 << 2 -IBUS_CAP_FOCUS = 1 << 3 - -class InputContext(ibus.Object): - id = 1 - __gsignals__ = { - "update-preedit" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_INT, gobject.TYPE_BOOLEAN)), - "show-preedit" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "hide-preedit" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "update-aux-string" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)), - "show-aux-string" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "hide-aux-string" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "update-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)), - "show-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "hide-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "page-up-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "page-down-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "cursor-up-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "cursor-down-lookup-table" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - "register-properties" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT, )), - "update-property" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT, )), - "engine-lost" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ()), - } - - def __init__(self, name, ibusconn): - super(InputContext, self).__init__() - self.__id = "%d" % InputContext.id - InputContext.id += 1 - self.__ibusconn = ibusconn - self.__ibusconn.connect("destroy", self.__ibusconn_destroy_cb) - - # init default values - self.__enable = False - self.__engine = None - self.__engine_handlers = [] - - # client state - self.__aux_string = None - self.__aux_attrs = None - self.__aux_visible = False - - # capabitlies - self.__support_preedit = True - self.__support_aux_string = False - self.__support_lookup_table = False - self.__support_focus = True - - self.__preedit_string = None - self.__preedit_attrs = None - self.__cursor_pos = 0 - self.__preedit_visible = False - - self.__lookup_table = None - self.__lookup_table_visible = False - - def get_id(self): - return self.__id; - - def get_preedit_string(self): - return self.__preedit_string, self.__preedit_attrs, self.__cursor_pos - - def get_aux_string(self): - return self.__aux_string, self.__aux_attrs - - def process_key_event(self, keyval, is_press, state, - reply_cb, error_cb): - if self.__engine != None and self.__enable: - self.__engine.process_key_event(keyval, is_press, state, - reply_cb, error_cb) - else: - reply_cb(False) - - def set_cursor_location(self, x, y, w, h): - if self.__engine: - self.__engine.set_cursor_location(x, y, w, h) - - def focus_in(self): - if self.__engine and self.__enable: - self.__engine.focus_in() - - def focus_out(self): - if self.__engine and self.__enable: - self.__engine.focus_out() - - def reset(self): - if self.__engine and self.__enable: - self.__engine.reset() - - def page_up(self): - if self.__engine and self.__enable: - self.__engine.page_up() - - def page_down(self): - if self.__engine and self.__enable: - self.__engine.page_down() - - def cursor_up(self): - if self.__engine and self.__enable: - self.__engine.cursor_up() - - def cursor_down(self): - if self.__engine and self.__enable: - self.__engine.cursor_down() - - def property_activate(self, prop_name, prop_state): - if self.__engine and self.__enable: - self.__engine.property_activate(prop_name, prop_state) - - def property_show(self, prop_name): - if self.__engine and self.__enable: - self.__engine.property_show(prop_name) - - def property_hide(self, prop_name): - if self.__engine and self.__enable: - self.__engine.property_hide(prop_name) - - def is_enabled(self): - return self.__enable - - def set_capabilities(self, caps): - self.__support_preedit = bool(caps & IBUS_CAP_PREEDIT) - self.__support_aux_string = bool(caps & IBUS_CAP_AUX_STRING) - self.__support_lookup_table = bool(caps & IBUS_CAP_LOOKUP_TABLE) - self.__support_focus = bool(caps & IBUS_CAP_FOCUS) - - def get_support_focus(self): - return self.__support_focus - - def set_enable(self, enable): - if self.__enable != enable: - self.__enable = enable - if self.__enable: - self.__ibusconn.emit_dbus_signal("Enabled", self.__id) - if self.__engine: - self.__engine.enable() - self.__engine.focus_in() - else: - self.hide_preedit() - self.__ibusconn.emit_dbus_signal("Disabled", self.__id) - if self.__engine: - self.__engine.disable() - - def commit_string(self, text): - self.__ibusconn.emit_dbus_signal("CommitString", self.__id, text) - - def update_preedit(self, text, attrs, cursor_pos, visible): - self.__preedit_string = text - self.__preedit_attrs = attrs - self.__cursor_pos = cursor_pos - self.__preedit_visible = visible - if self.__support_preedit: - self.__ibusconn.emit_dbus_signal("UpdatePreedit", self.__id, text, attrs, cursor_pos, visible) - else: - # show preedit on panel - self.emit("update-preedit", text, attrs, cursor_pos, visible) - - def show_preedit(self): - self.__preedit_visible = True - if self.__support_preedit: - self.__ibusconn.emit_dbus_signal("ShowPreedit", self.__id) - else: - # show preedit on panel - self.emit("show-preedit") - - def hide_preedit(self): - self.__preedit_visible = False - if self.__support_preedit: - self.__ibusconn.emit_dbus_signal("HidePreedit", self.__id) - else: - # show preedit on panel - self.emit("hide-preedit") - - def set_engine(self, engine): - if self.__engine == engine: - return - - if self.__engine != None: - self.__remove_engine_handlers() - self.__engine.destroy() - self.__engine = None - - self.__engine = engine - self.__install_engine_handlers() - - def get_engine(self): - return self.__engine - - def get_factory(self): - if self.__engine: - return self.__engine.get_factory() - return None - - def __engine_destroy_cb(self, engine): - if self.__engine == engine: - self.__remove_engine_handlers() - self.__engine = None - self.__enable = False - if self.__support_preedit: - self.__ibusconn.emit_dbus_signal("UpdatePreedit", - self.__id, - u"", - ibus.AttrList().to_dbus_value(), - 0, - False) - self.__ibusconn.emit_dbus_signal("Disabled", self.__id) - self.emit("engine-lost") - - def __ibusconn_destroy_cb(self, ibusconn): - if self.__engine != None: - self.__remove_engine_handlers() - self.__engine.destroy() - self.__engine = None - self.destroy() - - def __commit_string_cb(self, engine, text): - if not self.__enable: - return - self.commit_string(text) - - def __update_preedit_cb(self, engine, text, attrs, cursor_pos, visible): - if not self.__enable: - return - self.update_preedit(text, attrs, cursor_pos, visible) - - def __show_preedit_cb(self, engine): - if not self.__enable: - return - self.show_preedit() - - def __hide_preedit_cb(self, engine): - if not self.__enable: - return - self.hide_preedit() - - def __update_aux_string_cb(self, engine, text, attrs, visible): - if not self.__enable: - return - self.__aux_string = text - self.__aux_attrs = attrs - self.__aux_visible = visible - - if self.__support_aux_string: - self.__ibusconn.emit_dbus_signal("UpdateAuxString", self.__id, text, attrs, visible) - else: - self.emit("update-aux-string", text, attrs, visible) - - def __show_aux_string_cb(self, engine): - if not self.__enable: - return - self.__aux_visible = True - - if self.__support_aux_string: - self.__ibusconn.emit_dbus_signal("ShowAuxString", self.__id) - else: - self.emit("show-aux-string") - - def __hide_aux_string_cb(self, engine): - if not self.__enable: - return - self.__aux_visible = False - - if self.__support_aux_string: - self.__ibusconn.emit_dbus_signal("HideAuxString", self.__id) - else: - self.emit("hide-aux-string") - - def __update_lookup_table_cb(self, engine, lookup_table, visible): - if not self.__enable: - return - self.__lookup_table = lookup_table - self.__lookup_table_visible = visible - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("UpdateLookupTable", self.__id, lookup_table, visible) - else: - self.emit("update-lookup-table", lookup_table, visible) - - def __show_lookup_table_cb(self, engine): - if not self.__enable: - return - self.__lookup_table_visible = True - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("ShowLookupTable", self.__id) - else: - self.emit("show-lookup-table") - - def __hide_lookup_table_cb(self, engine): - if not self.__enable: - return - self.__lookup_table_visible = False - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("HideLookupTable", self.__id) - else: - self.emit("hide-lookup-table") - - def __page_up_lookup_table_cb(self, engine): - if not self.__enable: - return - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("PageUpLookupTable", self.__id) - else: - self.emit("page-up-lookup-table") - - def __page_down_lookup_table_cb(self, engine): - if not self.__enable: - return - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("PageDownLookupTable", self.__id) - else: - self.emit("page-down-lookup-table") - - def __cursor_up_lookup_table_cb(self, engine): - if not self.__enable: - return - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("CursorUpLookupTable", self.__id) - else: - self.emit("cursor-up-lookup-table") - - def __cursor_down_lookup_table_cb(self, engine): - if not self.__enable: - return - - if self.__support_lookup_table: - self.__ibusconn.emit_dbus_signal("CursorDownLookupTable", self.__id) - else: - self.emit("cursor-down-lookup-table") - - def __register_properties_cb(self, engine, props): - if not self.__enable: - return - self.emit("register-properties", props) - - def __update_property_cb(self, engine, prop): - if not self.__enable: - return - self.emit("update-property", prop) - - def __remove_engine_handlers(self): - assert self.__engine != None - - map(self.__engine.disconnect, self.__engine_handlers) - del self.__engine_handlers[:] - - def __install_engine_handlers(self): - signals = ( - ("destroy", self.__engine_destroy_cb), - ("commit-string", self.__commit_string_cb), - ("update-preedit", self.__update_preedit_cb), - ("show-preedit", self.__show_preedit_cb), - ("hide-preedit", self.__hide_preedit_cb), - ("update-aux-string", self.__update_aux_string_cb), - ("show-aux-string", self.__show_aux_string_cb), - ("hide-aux-string", self.__hide_aux_string_cb), - ("update-lookup-table", self.__update_lookup_table_cb), - ("show-lookup-table", self.__show_lookup_table_cb), - ("hide-lookup-table", self.__hide_lookup_table_cb), - ("page-up-lookup-table", self.__page_up_lookup_table_cb), - ("page-down-lookup-table", self.__page_down_lookup_table_cb), - ("cursor-up-lookup-table", self.__cursor_up_lookup_table_cb), - ("cursor-down-lookup-table", self.__cursor_down_lookup_table_cb), - ("register-properties", self.__register_properties_cb), - ("update-property", self.__update_property_cb) - ) - - for signal, handler in signals: - id = self.__engine.connect(signal, handler) - self.__engine_handlers.append(id) - -gobject.type_register(InputContext) |