summaryrefslogtreecommitdiff
path: root/engine/engine.py
diff options
context:
space:
mode:
Diffstat (limited to 'engine/engine.py')
-rw-r--r--engine/engine.py33
1 files changed, 25 insertions, 8 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