diff options
author | Hideaki ABE <abe.sendai@gmail.com> | 2009-09-10 21:10:03 +0900 |
---|---|---|
committer | Hideaki ABE <abe.sendai@gmail.com> | 2009-09-10 21:10:03 +0900 |
commit | 667ae731671e24d141d0bbb034f3522008e0422b (patch) | |
tree | d4d25e7daef0dfd4ad90fd508d8c0c1b210b3597 /engine | |
parent | f1e7adfc74b938e6b2bcba8b2a3f14593765f279 (diff) | |
download | ibus-anthy-667ae731671e24d141d0bbb034f3522008e0422b.tar.gz |
Implimented convert_segment_to_latin command.
Diffstat (limited to 'engine')
-rw-r--r-- | engine/engine.py | 30 | ||||
-rw-r--r-- | engine/jastring.py | 10 |
2 files changed, 40 insertions, 0 deletions
diff --git a/engine/engine.py b/engine/engine.py index 0930d3d..05e2383 100644 --- a/engine/engine.py +++ b/engine/engine.py @@ -1692,16 +1692,46 @@ class Engine(ibus.EngineBase): return self.__on_key_conv(2) + def __convert_segment_to_latin(self, n): + if self.__convert_mode == CONV_MODE_ANTHY and n in [-100, -101]: + start = 0 + for i in range(self.__cursor_pos): + start += len(unicode(self.__context.get_segment(i, -1), 'utf-8')) + end = start + len(unicode(self.__context.get_segment(self.__cursor_pos, -1), 'utf-8')) + i, s = self.__segments[self.__cursor_pos] + s2 = self.__preedit_ja_string.get_raw(start, end) + if n == -101: + s2 = u''.join([unichar_half_to_full(c) for c in s2]) + if i == n: + if s == s2.lower(): + s2 = s2.upper() + elif s == s2.upper(): + s2 = s2.capitalize() + elif s == s2 or s == s2.capitalize(): + s2 = s2.lower() + self.__segments[self.__cursor_pos] = n, s2 + self.__lookup_table_visible = False + self.__invalidate() + return True + + return False + def __cmd_convert_to_wide_latin(self, keyval, state): if not self._chk_mode('12345'): return False + if self.__convert_mode == CONV_MODE_ANTHY: + return self.__convert_segment_to_latin(-101) + return self.__on_key_conv(3) def __cmd_convert_to_latin(self, keyval, state): if not self._chk_mode('12345'): return False + if self.__convert_mode == CONV_MODE_ANTHY: + return self.__convert_segment_to_latin(-100) + return self.__on_key_conv(4) #dictonary_keys diff --git a/engine/jastring.py b/engine/jastring.py index 9898490..79c7d61 100644 --- a/engine/jastring.py +++ b/engine/jastring.py @@ -159,3 +159,13 @@ class JaString: def is_empty(self): return all(map(lambda s: s.is_empty(), self.__segments)) + def get_raw(self, start, end): + i = 0 + r = u'' + for s in self.__segments: + if i >= end: + break + elif start <= i: + r += s.to_latin() + i += len(s.to_hiragana()) + return r |