summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorHideaki ABE <abe.sendai@gmail.com>2009-09-10 21:10:03 +0900
committerHideaki ABE <abe.sendai@gmail.com>2009-09-10 21:10:03 +0900
commit667ae731671e24d141d0bbb034f3522008e0422b (patch)
treed4d25e7daef0dfd4ad90fd508d8c0c1b210b3597 /engine
parentf1e7adfc74b938e6b2bcba8b2a3f14593765f279 (diff)
downloadibus-anthy-667ae731671e24d141d0bbb034f3522008e0422b.tar.gz
Implimented convert_segment_to_latin command.
Diffstat (limited to 'engine')
-rw-r--r--engine/engine.py30
-rw-r--r--engine/jastring.py10
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