Repository :
http://git.fedorahosted.org/git/?p=ibus-typing-booster.git
On branch : libyokan_port_20130711
---------------------------------------------------------------
commit db7f3ad7e803de9ce652891c98aa567b978219fe
Author: anish <apatil(a)redhat.com>
Date: Mon Jul 1 15:04:35 2013 +0530
Initial changes
---------------------------------------------------------------
ibus-typing-booster/engine/hunspell_table.py | 37 +++++++++++++++++++++-----
1 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/ibus-typing-booster/engine/hunspell_table.py
b/ibus-typing-booster/engine/hunspell_table.py
index da04927..7277893 100644
--- a/ibus-typing-booster/engine/hunspell_table.py
+++ b/ibus-typing-booster/engine/hunspell_table.py
@@ -29,6 +29,7 @@ import re
from gi.repository import IBus
from gi.repository import GLib
import itb_util
+from gi.repository import libyokan
debug_level = int(0)
@@ -104,7 +105,7 @@ class editor(object):
round=True)
self._lookup_table.clear()
self._lookup_table.set_cursor_visible(False)
-
+ self.yokan =
libyokan.Yokan.new("/usr/share/libyokan-data/","en_US.db","en","")
self._m17ndb = 'm17n'
self.trans = None
@@ -544,8 +545,13 @@ class tabengine (IBus.Engine):
if self._tab_enable == None:
self._tab_enable = self.db.ime_properties.get('tab_enable').lower()
== u'true'
self._commit_happened_after_focus_in = False
+ self._editor.yokan.connect("commit-signal",self.commit_signal_cb)
self.reset ()
+ def commit_signal_cb(self,arg):
+ commit_phrase = self._editor.yokan.get_commit()
+ self.commit_string(commit_phrase)
+
def reset (self):
self._editor.clear_input()
self._update_ui ()
@@ -565,7 +571,8 @@ class tabengine (IBus.Engine):
'''Update Preedit String in UI'''
# editor.get_caret() should also use NFC!
_str = unicodedata.normalize('NFC',
self._editor.get_transliterated_string())
- if _str == u'':
+ _str = self._editor.yokan.get_preedit()
+ if _str == u'' or _str == None:
super(tabengine,
self).update_preedit_text(IBus.Text.new_from_string(u''), 0, False)
else:
attrs = IBus.AttrList()
@@ -580,7 +587,7 @@ class tabengine (IBus.Engine):
attr.get_start_index(),
attr.get_end_index())
i += 1
- super(tabengine, self).update_preedit_text(text, self._editor.get_caret(),
True)
+ super(tabengine, self).update_preedit_text(text,len(_str), True)
def _update_aux (self):
'''Update Aux String in UI'''
@@ -617,6 +624,11 @@ class tabengine (IBus.Engine):
def _update_lookup_table (self):
'''Update Lookup Table in UI'''
if self._editor.is_empty ():
+ if self._tab_enable:
+ # if everything has been cleared from the editor
+ # for example by backspace, disable a tab enabled
+ # lookup table again:
+ self.is_lookup_table_enabled_by_tab = False
self.hide_lookup_table()
return
# Also make sure to hide lookup table if there are
@@ -642,10 +654,16 @@ class tabengine (IBus.Engine):
self._update_aux ()
def commit_string (self, commit_phrase, input_phrase=u''):
+ if self._tab_enable:
+ # After each commit, disable a tab enabled lookup
+ # table again, i.e. one needs to press tab again
+ # while typing the next word to show the lookup table
+ # again:
+ self.is_lookup_table_enabled_by_tab = False
if not input_phrase:
input_phrase = self._editor.get_transliterated_string()
# commit always in NFC:
- commit_phrase = unicodedata.normalize('NFC', commit_phrase)
+ #commit_phrase = unicodedata.normalize('NFC', commit_phrase)
super(tabengine,self).commit_text(IBus.Text.new_from_string(commit_phrase))
self._editor.clear_input()
self._update_ui ()
@@ -716,9 +734,14 @@ class tabengine (IBus.Engine):
key = KeyEvent(keyval, state & IBus.ModifierType.RELEASE_MASK == 0, state)
# ignore NumLock mask
key.mask &= ~IBus.ModifierType.MOD2_MASK
-
- result = self._process_key_event (key)
- return result
+ if key.mask & IBus.ModifierType.RELEASE_MASK:
+ return True
+ state = state & (IBus.ModifierType.SHIFT_MASK |IBus.ModifierType.CONTROL_MASK
| IBus.ModifierType.MOD1_MASK |IBus.ModifierType.MOD5_MASK |
IBus.ModifierType.RELEASE_MASK);
+ keyevent =
libyokan.KeyEvent.from_x_event(keyval,keycode,libyokan.ModifierType(state))
+ result = self._editor.yokan.process_key_event(keyevent)
+ self._update_ui ()
+ #result = self._process_key_event (key)
+ return True
def _process_key_event (self, key):
'''Internal method to process key event