diff options
Diffstat (limited to 'engine/engine.py')
-rw-r--r-- | engine/engine.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/engine/engine.py b/engine/engine.py index f9614dd..8a3d778 100644 --- a/engine/engine.py +++ b/engine/engine.py @@ -831,10 +831,12 @@ class Engine(IBus.Engine): 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 \ @@ -842,7 +844,7 @@ class Engine(IBus.Engine): 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 @@ -853,12 +855,16 @@ class Engine(IBus.Engine): 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 @@ -1648,13 +1654,18 @@ class Engine(IBus.Engine): 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 |