summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2012-07-04 19:43:28 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2012-07-04 19:43:28 +0900
commit6c774c3d959dba90929207f27a47d7603a2f00a6 (patch)
tree5208bd8ae6b274aa368a7b1e1eeb89cb1ebe8546
parent9cbe4414e0ffa807510e3f41eb5c591ed6af00f5 (diff)
downloadibus-anthy-1.2.y.tar.gz
Fixed MBCS dict file names (#1479)1.2.y
-rw-r--r--engine/engine.py33
-rw-r--r--setup/main.py36
2 files changed, 50 insertions, 19 deletions
diff --git a/engine/engine.py b/engine/engine.py
index 5c6e0a9..462398a 100644
--- a/engine/engine.py
+++ b/engine/engine.py
@@ -312,6 +312,7 @@ class Engine(ibus.EngineBase):
label=UN(_(long_label))))
for file in self.__prefs.get_value('dict', 'files'):
+ file = str(file)
self._link_dict_file(file)
id = self._get_dict_id_from_file(file)
if id == None:
@@ -384,6 +385,7 @@ class Engine(ibus.EngineBase):
files = self.__prefs.get_value('dict', 'files')
single_files = []
for file in files:
+ file = str(file)
id = self._get_dict_id_from_file(file)
if id == None:
continue
@@ -394,6 +396,7 @@ class Engine(ibus.EngineBase):
def __remove_dict_files(self):
for file in self.__prefs.get_value('dict', 'files'):
+ file = str(file)
self._remove_dict_file(file)
def update_preedit(self, string, attrs, cursor_pos, visible):
@@ -723,10 +726,12 @@ class Engine(ibus.EngineBase):
i = prop_name.find('.')
if i < 0:
return
- id = prop_name[i + 1:].encode('utf-8')
+ # The id is already quoted.
+ id = prop_name[i + 1:]
file = None
- files = self.__prefs.get_value('dict', 'files')
+ single_files = self.__get_single_dict_files()
+
if id == 'embedded':
pass
elif id == 'anthy_zipcode' or id == 'ibus_symbol' or \
@@ -734,7 +739,7 @@ class Engine(ibus.EngineBase):
file = self.__prefs.get_value('dict', id)[0]
else:
found = False
- for file in files:
+ for file in single_files:
if id == self._get_quoted_id(file):
found = True
break
@@ -745,12 +750,16 @@ class Engine(ibus.EngineBase):
dict_name = 'default'
self.__dict_mode = 0
else:
+ if file not in single_files:
+ print >> sys.stderr, "Index error ", file, single_files
+ return
dict_name = 'ibus__' + id
- self.__dict_mode = files.index(file) + 1
+ self.__dict_mode = single_files.index(file) + 1
self.__prop_dict[prop_name].set_state(state)
self.update_property(self.__prop_dict[prop_name])
self.__context.init_personality()
- self.__context.do_set_personality(dict_name)
+ # dict_name is unicode but the argument is str.
+ self.__context.do_set_personality(str(dict_name))
prop = self.__prop_dict[u"DictMode"]
section = 'dict/file/' + id
@@ -1447,13 +1456,18 @@ class Engine(ibus.EngineBase):
has_mbcs = True
break
if has_mbcs:
- import urllib
- id = urllib.quote(id)
+ id = id.encode('hex')
if id.find('/') >=0:
id = id[id.rindex('/') + 1:]
if id.find('.') >=0:
id = id[:id.rindex('.')]
+
+ if id.startswith('0x'):
+ id = id.encode('hex')
+ has_mbcs = True
+ if has_mbcs:
+ id = '0x' + id
return id
@classmethod
@@ -1558,7 +1572,10 @@ class Engine(ibus.EngineBase):
str_list = []
for file in value:
str_list.append(str(file))
- old_files = cls.__prefs.get_value(base_sec, name)
+ old_files = []
+ dbus_old_files = cls.__prefs.get_value(base_sec, name)
+ for file in dbus_old_files:
+ old_files.append(str(file))
for file in old_files:
if file in str_list:
continue
diff --git a/setup/main.py b/setup/main.py
index d05c015..47fa53b 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -525,33 +525,39 @@ class AnthySetup(object):
has_mbcs = True
break
if has_mbcs:
- import urllib
- id = urllib.quote(id)
+ id = id.encode('hex')
if id.find('/') >=0:
id = id[id.rindex('/') + 1:]
if id.find('.') >=0:
id = id[:id.rindex('.')]
+
+ if id.startswith('0x'):
+ id = id.encode('hex')
+ has_mbcs = True
+ if has_mbcs:
+ id = '0x' + id
return id
def __get_dict_file_from_id(self, selected_id):
- found = False
- files = self.prefs.get_value('dict', 'files')
-
if selected_id == 'anthy_zipcode':
return self.prefs.get_value('dict', 'anthy_zipcode')[0]
elif selected_id == 'ibus_symbol':
return self.prefs.get_value('dict', 'ibus_symbol')[0]
elif selected_id == 'ibus_oldchar':
return self.prefs.get_value('dict', 'ibus_oldchar')[0]
+
+ files = self.prefs.get_value('dict', 'files')
+ retval = None
+
for file in files:
+ file = str(file)
id = self.__get_quoted_id(file)
+ # The selected_id is already quoted.
if selected_id == id:
- found = True
+ retval = file
break
- if found:
- return file
- return None
+ return retval
def __is_system_dict_file_from_id(self, selected_id):
prefs = self.prefs
@@ -583,6 +589,7 @@ class AnthySetup(object):
def __append_dicts_in_model(self):
prefs = self.prefs
for file in prefs.get_value('dict', 'files'):
+ file = str(file)
if not path.exists(file):
continue
if file in prefs.get_value('dict', 'anthy_zipcode'):
@@ -1085,7 +1092,10 @@ class AnthySetup(object):
file = self.__get_dict_file_from_id(selected_id)
if file != None:
- files = self.prefs.get_value('dict', 'files')
+ files = []
+ values = self.prefs.get_value('dict', 'files')
+ for dbus_file in values:
+ files.append(str(dbus_file))
files.remove(file)
self.prefs.set_value('dict', 'files', files)
self.xml.get_widget('btn_apply').set_sensitive(True)
@@ -1113,6 +1123,7 @@ class AnthySetup(object):
if dict_file == None:
return
+ # The selected id is already quoted.
section = 'dict/file/' + selected_id
if 'preview_lines' not in self.prefs.keys(section):
section = 'dict/file/default'
@@ -1170,7 +1181,10 @@ class AnthySetup(object):
l.swap(it, next_it)
dict_file = self.__get_dict_file_from_id(selected_id)
- files = self.prefs.get_value('dict', 'files')
+ files = []
+ values = self.prefs.get_value('dict', 'files')
+ for dbus_file in values:
+ files.append(str(dbus_file))
if dict_file == None:
return