LEFT | RIGHT |
1 # vim:set et sts=4 sw=4: | 1 # vim:set et sts=4 sw=4: |
2 # | 2 # |
3 # ibus - The Input Bus | 3 # ibus - The Input Bus |
4 # | 4 # |
5 # Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com> | 5 # Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com> |
6 # Copyright (c) 2007-2010 Red Hat, Inc. | 6 # Copyright (c) 2007-2010 Red Hat, Inc. |
7 # | 7 # |
8 # This library is free software; you can redistribute it and/or | 8 # This library is free software; you can redistribute it and/or |
9 # modify it under the terms of the GNU Lesser General Public | 9 # modify it under the terms of the GNU Lesser General Public |
10 # License as published by the Free Software Foundation; either | 10 # License as published by the Free Software Foundation; either |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 renderer.set_property("xalign", 0) | 56 renderer.set_property("xalign", 0) |
57 renderer.set_property("xpad", 2) | 57 renderer.set_property("xpad", 2) |
58 self.pack_start(renderer, True) | 58 self.pack_start(renderer, True) |
59 self.set_cell_data_func(renderer, self.__name_cell_data_cb, None) | 59 self.set_cell_data_func(renderer, self.__name_cell_data_cb, None) |
60 | 60 |
61 def set_engines(self, engines): | 61 def set_engines(self, engines): |
62 self.__model = Gtk.TreeStore(object) | 62 self.__model = Gtk.TreeStore(object) |
63 | 63 |
64 iter1 = self.__model.append(None) | 64 iter1 = self.__model.append(None) |
65 self.__model.set(iter1, 0, 0) | 65 self.__model.set(iter1, 0, 0) |
66 lang = {} | 66 langs = {} |
67 for e in engines: | 67 for e in engines: |
| 68 print e.get_language() |
68 l = IBus.get_language_name(e.get_language()) | 69 l = IBus.get_language_name(e.get_language()) |
69 if l == None: | 70 if l == None: |
70 l = "" | 71 l = "" |
71 if l not in lang: | 72 if l not in langs: |
72 lang[l] = [] | 73 langs[l] = [] |
73 lang[l].append(e) | 74 langs[l].append(e) |
74 | 75 |
75 keys = lang.keys() | 76 keys = langs.keys() |
76 keys.sort(locale.strcoll) | 77 keys.sort(locale.strcoll) |
| 78 current_lang = IBus.get_language_name(locale.getlocale()[0]) |
| 79 # move current language to the first place |
| 80 if current_lang in keys: |
| 81 keys.remove(current_lang) |
| 82 keys.insert(0, current_lang) |
| 83 |
77 #add "Others" to the end of the combo box | 84 #add "Others" to the end of the combo box |
78 if IBus.get_language_name("Other") in keys: | 85 if IBus.get_language_name("Other") in keys: |
79 keys.remove(IBus.get_language_name("Other")) | 86 keys.remove(IBus.get_language_name("Other")) |
80 keys += [IBus.get_language_name("Other")] | 87 keys += [IBus.get_language_name("Other")] |
81 for l in keys: | 88 for l in keys: |
82 iter1 = self.__model.append(None) | 89 iter1 = self.__model.append(None) |
83 self.__model.set(iter1, 0, l) | 90 self.__model.set(iter1, 0, l) |
84 def cmp_engine(a, b): | 91 def cmp_engine(a, b): |
85 if a.get_rank() == b.get_rank(): | 92 if a.get_rank() == b.get_rank(): |
86 return locale.strcoll(a.get_longname(), b.get_longname()) | 93 return locale.strcoll(a.get_longname(), b.get_longname()) |
87 return int(b.get_rank() - a.get_rank()) | 94 return int(b.get_rank() - a.get_rank()) |
88 lang[l].sort(cmp_engine) | 95 langs[l].sort(cmp_engine) |
89 for e in lang[l]: | 96 for e in langs[l]: |
90 iter2 = self.__model.append(iter1) | 97 iter2 = self.__model.append(iter1) |
91 self.__model.set(iter2, 0, e) | 98 self.__model.set(iter2, 0, e) |
92 | 99 |
93 self.set_model(self.__model) | 100 self.set_model(self.__model) |
94 self.set_active(0) | 101 self.set_active(0) |
95 | 102 |
96 def __icon_cell_data_cb(self, celllayout, renderer, model, iter, data): | 103 def __icon_cell_data_cb(self, celllayout, renderer, model, iter, data): |
97 engine = self.__model.get_value(iter, 0) | 104 engine = self.__model.get_value(iter, 0) |
98 | 105 |
99 if isinstance(engine, str) or isinstance (engine, unicode): | 106 if isinstance(engine, str) or isinstance (engine, unicode): |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 def get_active_engine(self): | 153 def get_active_engine(self): |
147 return self.get_property("active-engine") | 154 return self.get_property("active-engine") |
148 | 155 |
149 if __name__ == "__main__": | 156 if __name__ == "__main__": |
150 combo = EngineComboBox() | 157 combo = EngineComboBox() |
151 combo.set_engines([IBus.EngineDesc(language="zh")]) | 158 combo.set_engines([IBus.EngineDesc(language="zh")]) |
152 w = Gtk.Window() | 159 w = Gtk.Window() |
153 w.add(combo) | 160 w.add(combo) |
154 w.show_all() | 161 w.show_all() |
155 Gtk.main() | 162 Gtk.main() |
LEFT | RIGHT |