|
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 ()
|