diff options
| author | Huang Peng <shawn.p.huang@gmail.com> | 2008-06-27 21:43:32 +0800 |
|---|---|---|
| committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-06-27 21:43:32 +0800 |
| commit | 4461bafa4ce442cc79ee73d74cb0ed7bd93614e4 (patch) | |
| tree | 8e0b8ee8296ddd36ed8c6d01d579eda92eefb7fc /engine/anthy/engine.py | |
| parent | f0089093bf2a012094956aa6f66c3f3cb8442ab2 (diff) | |
| download | ibus-4461bafa4ce442cc79ee73d74cb0ed7bd93614e4.tar.gz ibus-4461bafa4ce442cc79ee73d74cb0ed7bd93614e4.tar.xz ibus-4461bafa4ce442cc79ee73d74cb0ed7bd93614e4.zip | |
WIP.
Diffstat (limited to 'engine/anthy/engine.py')
| -rw-r--r-- | engine/anthy/engine.py | 68 |
1 files changed, 61 insertions, 7 deletions
diff --git a/engine/anthy/engine.py b/engine/anthy/engine.py index 8bbb60c..ed8a0ac 100644 --- a/engine/anthy/engine.py +++ b/engine/anthy/engine.py @@ -29,6 +29,13 @@ import anthy from tables import * from ibus import keysyms from ibus import interface +MODE_HIRAGANA, \ +MODE_KATAKANA, \ +MODE_HALF_WIDTH_KATAKANA, \ +MODE_LATIN, \ +MODE_WIDE_LATIN = range (0, 5) + +_ = lambda a: a class Engine (interface.IEngine): def __init__ (self, dbusconn, object_path): @@ -39,6 +46,10 @@ class Engine (interface.IEngine): self._context = anthy.anthy_context () self._context._set_encoding (anthy.ANTHY_UTF8_ENCODING) + # init state + self._input_mode = MODE_HIRAGANA + self._prop_dict = {} + self._lookup_table = ibus.LookupTable () self._prop_list = self._init_props () @@ -53,23 +64,30 @@ class Engine (interface.IEngine): type = ibus.PROP_TYPE_MENU, label = "あ", tooltip = "Switch input mode") + self._prop_dict["InputMode"] = mode_prop + mode_props = ibus.PropList () mode_props.append (ibus.Property (name = "InputMode.Hiragana", type = ibus.PROP_TYPE_RADIO, - label = "Hiragana", - state = ibus.PROP_STATE_CHECKED)) - mode_props.append (ibus.Property (name = "InputMode.Katagana", + label = "Hiragana")) + mode_props.append (ibus.Property (name = "InputMode.Katakana", type = ibus.PROP_TYPE_RADIO, - label = "Katagana")) - mode_props.append (ibus.Property (name = "InputMode.HalfWidthKatagana", + label = "Katakana")) + mode_props.append (ibus.Property (name = "InputMode.HalfWidthKatakana", type = ibus.PROP_TYPE_RADIO, - label = "Half width katagana")) + label = "Half width katakana")) mode_props.append (ibus.Property (name = "InputMode.Latin", type = ibus.PROP_TYPE_RADIO, label = "Latin")) mode_props.append (ibus.Property (name = "InputMode.WideLatin", type = ibus.PROP_TYPE_RADIO, label = "Wide Latin")) + + mode_props[self._input_mode].set_state (ibus.PROP_STATE_CHECKED) + + for prop in mode_props: + self._prop_dict[prop.get_name ()] = prop + mode_prop.set_sub_props (mode_props) props.append (mode_prop) @@ -79,8 +97,10 @@ class Engine (interface.IEngine): type = ibus.PROP_TYPE_TOGGLE, label = "あ", tooltip = "test property") + self._prop_dict["TestProp"] = test_prop props.append (test_prop) + return props # reset values of engine @@ -429,6 +449,40 @@ class Engine (interface.IEngine): return False + def _property_activate (self, prop_name, state): + prop = self._prop_dict[prop_name] + prop.set_state (state) + + if state == ibus.PROP_STATE_CHECKED: + if prop_name == "InputMode.Hiragana": + prop = self._prop_dict["InputMode"] + prop.set_label (_("あ")) + self._input_mode = MODE_HIRAGANA + self._update_property (prop) + elif prop_name == "InputMode.Katakana": + prop = self._prop_dict["InputMode"] + prop.set_label (_("ア")) + self._input_mode = MODE_KATAKANA + self._update_property (prop) + elif prop_name == "InputMode.HalfWidthKatakana": + prop = self._prop_dict["InputMode"] + prop.set_label (_("ア")) + self._input_mode = MODE_HALF_WIDTH_KATAKANA + self._update_property (prop) + elif prop_name == "InputMode.Latin": + prop = self._prop_dict["InputMode"] + self._input_mode = MODE_LATIN + prop.set_label (_("A")) + self._update_property (prop) + elif prop_name == "InputMode.WideLatin": + prop = self._prop_dict["InputMode"] + prop.set_label (_("A")) + self._input_mode = MODE_WIDE_LATIN + self._update_property (prop) + + def _update_property (self, prop): + self.UpdateProperty (prop.to_dbus_value ()) + # methods for dbus rpc def ProcessKeyEvent (self, keyval, is_press, state): try: @@ -468,7 +522,7 @@ class Engine (interface.IEngine): self.RegisterProperties (self._prop_list.to_dbus_value ()) def PropertyActivate (self, prop_name, prop_state): - print "PropertyActivate (%s, %d)" % (prop_name, prop_state) + self._property_activate (prop_name, prop_state) def Destroy (self): print "Destroy" |
