Blame ibus/engine.py

Packit Service 1d8f1c
# vim:set et sts=4 sw=4:
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# ibus - The Input Bus
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
# Copyright (c) 2007-2010 Red Hat, Inc.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# This library is free software; you can redistribute it and/or
Packit Service 1d8f1c
# modify it under the terms of the GNU Lesser General Public
Packit Service 1d8f1c
# License as published by the Free Software Foundation; either
Packit Service 1d8f1c
# version 2.1 of the License, or (at your option) any later version.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# This library is distributed in the hope that it will be useful,
Packit Service 1d8f1c
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 1d8f1c
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 1d8f1c
# Lesser General Public License for more details.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# You should have received a copy of the GNU Lesser General Public
Packit Service 1d8f1c
# License along with this library; if not, write to the Free Software
Packit Service 1d8f1c
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
Packit Service 1d8f1c
# USA
Packit Service 1d8f1c
Packit Service 1d8f1c
__all__ = (
Packit Service 1d8f1c
        "EngineBase",
Packit Service 1d8f1c
    )
Packit Service 1d8f1c
Packit Service 1d8f1c
import common
Packit Service 1d8f1c
import object
Packit Service 1d8f1c
import serializable
Packit Service 1d8f1c
import interface
Packit Service 1d8f1c
from text import Text
Packit Service 1d8f1c
Packit Service 1d8f1c
class EngineBase(object.Object):
Packit Service 1d8f1c
    def __init__(self, bus, object_path):
Packit Service 1d8f1c
        super(EngineBase, self).__init__()
Packit Service 1d8f1c
        self.__proxy = EngineProxy (self, bus.get_dbusconn(), object_path)
Packit Service 1d8f1c
        self.__surrounding_text = Text()
Packit Service 1d8f1c
        self.__surrounding_cursor_pos = 0
Packit Service 1d8f1c
        self.__selection_anchor_pos = 0
Packit Service 1d8f1c
Packit Service 1d8f1c
    def process_key_event(self, keyval, keycode, state):
Packit Service 1d8f1c
        return False
Packit Service 1d8f1c
Packit Service 1d8f1c
    def focus_in(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def focus_out(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def set_cursor_location(self, x, y, w, h):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def set_surrounding_text(self, text, cursor_pos, anchor_pos):
Packit Service 1d8f1c
        text = serializable.deserialize_object(text)
Packit Service 1d8f1c
        self.__surrounding_text = text
Packit Service 1d8f1c
        self.__surrounding_cursor_pos = cursor_pos
Packit Service 1d8f1c
        self.__selection_anchor_pos = anchor_pos
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_surrounding_text(self):
Packit Service 1d8f1c
        # Tell the client that this engine will utilize surrounding-text
Packit Service 1d8f1c
        # feature, which causes periodical update.  Note that the client
Packit Service 1d8f1c
        # should request the initial surrounding-text when the engine is
Packit Service 1d8f1c
        # enabled.
Packit Service 1d8f1c
        self.__proxy.RequireSurroundingText()
Packit Service 1d8f1c
        return (self.__surrounding_text, self.__surrounding_cursor_pos)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def delete_surrounding_text(self, offset_from_cursor, nchars):
Packit Service 1d8f1c
        # Update surrounding-text cache.  This is necessary since some
Packit Service 1d8f1c
        # engines call get_surrounding_text() immediately after
Packit Service 1d8f1c
        # delete_surrounding_text().
Packit Service 1d8f1c
        text = self.__surrounding_text.get_text()
Packit Service 1d8f1c
        cursor_pos = self.__surrounding_cursor_pos + offset_from_cursor
Packit Service 1d8f1c
        if cursor_pos >= 0 and len(text) - cursor_pos >= nchars:
Packit Service 1d8f1c
            text = text[cursor_pos + nchars:]
Packit Service 1d8f1c
            self.__surrounding_text = Text(text)
Packit Service 1d8f1c
            self.__surrounding_cursor_pos = cursor_pos
Packit Service 1d8f1c
        else:
Packit Service 1d8f1c
            self.__surrounding_text = Text()
Packit Service 1d8f1c
            self.__surrounding_cursor_pos = 0
Packit Service 1d8f1c
        self.__proxy.DeleteSurroundingText(offset_from_cursor, nchars)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def set_capabilities(self, cap):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def reset(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def page_up(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def page_down(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def cursor_up(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def cursor_down(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def enable(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def disable(self):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def property_activate(self, prop_name, prop_state):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def property_show(self, prop_name):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def property_hide(self, prop_name):
Packit Service 1d8f1c
        pass
Packit Service 1d8f1c
Packit Service 1d8f1c
    def commit_text(self, text):
Packit Service 1d8f1c
        text = serializable.serialize_object(text)
Packit Service 1d8f1c
        return self.__proxy.CommitText(text)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def forward_key_event(self, keyval, keycode, state):
Packit Service 1d8f1c
        return self.__proxy.ForwardKeyEvent(keyval, keycode, state)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def update_preedit_text(self, text, cursor_pos, visible, mode=common.IBUS_ENGINE_PREEDIT_CLEAR):
Packit Service 1d8f1c
        text = serializable.serialize_object(text)
Packit Service 1d8f1c
        return self.__proxy.UpdatePreeditText(text, cursor_pos, visible, mode)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def show_preedit_text(self):
Packit Service 1d8f1c
        return self.__proxy.ShowPreeditText()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def hide_preedit_text(self):
Packit Service 1d8f1c
        return self.__proxy.HidePreeditText()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def update_auxiliary_text(self, text, visible):
Packit Service 1d8f1c
        text = serializable.serialize_object(text)
Packit Service 1d8f1c
        return self.__proxy.UpdateAuxiliaryText(text, visible)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def show_auxiliary_text(self):
Packit Service 1d8f1c
        return self.__proxy.ShowAuxiliaryText()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def hide_auxiliary_text(self):
Packit Service 1d8f1c
        return self.__proxy.HideAuxiliaryText()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def update_lookup_table(self, lookup_table, visible, just_current_page = False):
Packit Service 1d8f1c
        if just_current_page:
Packit Service 1d8f1c
            lookup_table = lookup_table.get_current_page_as_lookup_table()
Packit Service 1d8f1c
        dbus_values = serializable.serialize_object(lookup_table)
Packit Service 1d8f1c
        return self.__proxy.UpdateLookupTable(dbus_values, visible)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def show_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.ShowLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def hide_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.HideLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def page_up_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.PageUpLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def page_down_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.PageDownLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def cursor_up_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.CursorUpLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def cursor_down_lookup_table(self):
Packit Service 1d8f1c
        return self.__proxy.CursorDownLookupTable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def register_properties(self, props):
Packit Service 1d8f1c
        dbus_values = serializable.serialize_object(props)
Packit Service 1d8f1c
        return self.__proxy.RegisterProperties(dbus_values)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def update_property(self, prop):
Packit Service 1d8f1c
        dbus_values = serializable.serialize_object(prop)
Packit Service 1d8f1c
        return self.__proxy.UpdateProperty(dbus_values)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_dbus_object(self):
Packit Service 1d8f1c
        return self.__proxy
Packit Service 1d8f1c
Packit Service 1d8f1c
    def do_destroy(self):
Packit Service 1d8f1c
        self.__proxy = None
Packit Service 1d8f1c
        super(EngineBase,self).do_destroy()
Packit Service 1d8f1c
Packit Service 1d8f1c
Packit Service 1d8f1c
class EngineProxy(interface.IEngine):
Packit Service 1d8f1c
    def __init__(self, engine, conn, object_path):
Packit Service 1d8f1c
        super(EngineProxy, self).__init__(conn, object_path)
Packit Service 1d8f1c
        self.__engine = engine
Packit Service 1d8f1c
Packit Service 1d8f1c
    def ProcessKeyEvent(self, keyval, keycode, state):
Packit Service 1d8f1c
        return self.__engine.process_key_event(keyval, keycode, state)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def FocusIn(self):
Packit Service 1d8f1c
        return self.__engine.focus_in()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def FocusOut(self):
Packit Service 1d8f1c
        return self.__engine.focus_out()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def SetCursorLocation(self, x, y, w, h):
Packit Service 1d8f1c
        return self.__engine.set_cursor_location(x, y, w, h)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def SetSurroundingText(self, text, cursor_pos, anchor_pos):
Packit Service 1d8f1c
        return self.__engine.set_surrounding_text(text, cursor_pos, anchor_pos)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def SetCapabilities(self, caps):
Packit Service 1d8f1c
        return self.__engine.set_capabilities(caps)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def Reset(self):
Packit Service 1d8f1c
        return self.__engine.reset()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def PageUp(self):
Packit Service 1d8f1c
        return self.__engine.page_up()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def PageDown(self):
Packit Service 1d8f1c
        return self.__engine.page_down()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def CursorUp(self):
Packit Service 1d8f1c
        return self.__engine.cursor_up()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def CursorDown(self):
Packit Service 1d8f1c
        return self.__engine.cursor_down()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def CandidateClicked(self, index, button, state):
Packit Service 1d8f1c
        return self.__engine.candidate_clicked(index, button, state)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def Enable(self):
Packit Service 1d8f1c
        return self.__engine.enable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def Disable(self):
Packit Service 1d8f1c
        return self.__engine.disable()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def PropertyActivate(self, prop_name, prop_state):
Packit Service 1d8f1c
        return self.__engine.property_activate(prop_name, prop_state)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def PropertyShow(self, prop_name):
Packit Service 1d8f1c
        return self.__engine.property_show(prop_name)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def PropertyHide(self, prop_name):
Packit Service 1d8f1c
        return self.__engine.property_hide(prop_name)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def Destroy(self):
Packit Service 1d8f1c
        self.__engine.destroy()
Packit Service 1d8f1c
        self.__engine = None
Packit Service 1d8f1c
        self.remove_from_connection ()