Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1264)

Side by Side Diff: ui/gtk/panel.py

Issue 1784007: Merge xkb related changes. (Closed) Base URL: ssh://git@chromiumos-git/ibus.git
Patch Set: Revert the default values of some configs. Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« bus/ibusimpl.c ('K') | « setup/setup.ui ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 def __init__(self, bus): 61 def __init__(self, bus):
62 super(Panel, self).__init__(bus) 62 super(Panel, self).__init__(bus)
63 self.__bus = bus 63 self.__bus = bus
64 self.__config = self.__bus.get_config() 64 self.__config = self.__bus.get_config()
65 self.__focus_ic = None 65 self.__focus_ic = None
66 self.__setup_pid = 0 66 self.__setup_pid = 0
67 self.__prefix = os.getenv("IBUS_PREFIX") 67 self.__prefix = os.getenv("IBUS_PREFIX")
68 self.__data_dir = path.join(self.__prefix, "share", "ibus") 68 self.__data_dir = path.join(self.__prefix, "share", "ibus")
69 # self.__icons_dir = path.join(self.__data_dir, "icons") 69 # self.__icons_dir = path.join(self.__data_dir, "icons")
70 self.__setup_cmd = path.join(self.__prefix, "bin", "ibus-setup") 70 self.__setup_cmd = path.join(self.__prefix, "bin", "ibus-setup")
71 self.__setxkbmap_cmd = path.join(self.__prefix, "bin", "setxkbmap")
72 self.__current_xkb_layout = ""
73 self.__default_xkb_layout = "us"
74 if bus.get_use_sys_layout():
75 self.__set_xkb_layout(self.__default_xkb_layout)
71 76
72 # hanlder signal 77 # hanlder signal
73 signal.signal(signal.SIGCHLD, self.__sigchld_cb) 78 signal.signal(signal.SIGCHLD, self.__sigchld_cb)
74 79
75 # connect bus signal 80 # connect bus signal
76 self.__config.connect("value-changed", self.__config_value_changed_cb) 81 self.__config.connect("value-changed", self.__config_value_changed_cb)
77 self.__config.connect("reloaded", self.__config_reloaded_cb) 82 self.__config.connect("reloaded", self.__config_reloaded_cb)
78 # self.__bus.config_add_watch("panel") 83 # self.__bus.config_add_watch("panel")
79 84
80 # add icon search path 85 # add icon search path
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 203
199 def focus_in(self, ic): 204 def focus_in(self, ic):
200 self.reset() 205 self.reset()
201 self.__focus_ic = ibus.InputContext(self.__bus, ic) 206 self.__focus_ic = ibus.InputContext(self.__bus, ic)
202 enabled = self.__focus_ic.is_enabled() 207 enabled = self.__focus_ic.is_enabled()
203 self.__language_bar.set_enabled(enabled) 208 self.__language_bar.set_enabled(enabled)
204 209
205 if not enabled: 210 if not enabled:
206 self.__set_im_icon(ICON_KEYBOARD) 211 self.__set_im_icon(ICON_KEYBOARD)
207 self.__set_im_name(None) 212 self.__set_im_name(None)
213 if self.__bus.get_use_sys_layout():
214 self.__set_xkb_layout(self.__default_xkb_layout)
208 else: 215 else:
209 engine = self.__focus_ic.get_engine() 216 engine = self.__focus_ic.get_engine()
210 if engine: 217 if engine:
211 self.__set_im_icon(engine.icon) 218 self.__set_im_icon(engine.icon)
212 self.__set_im_name(engine.longname) 219 self.__set_im_name(engine.longname)
220 if self.__bus.get_use_sys_layout():
221 self.__set_xkb_layout(engine.layout)
213 else: 222 else:
214 self.__set_im_icon(ICON_KEYBOARD) 223 self.__set_im_icon(ICON_KEYBOARD)
215 self.__set_im_name(None) 224 self.__set_im_name(None)
225 if self.__bus.get_use_sys_layout():
226 self.__set_xkb_layout(self.__default_xkb_layout)
216 self.__language_bar.focus_in() 227 self.__language_bar.focus_in()
217 228
218 def focus_out(self, ic): 229 def focus_out(self, ic):
219 self.reset() 230 self.reset()
220 self.__focus_ic = None 231 self.__focus_ic = None
221 self.__language_bar.set_enabled(False) 232 self.__language_bar.set_enabled(False)
222 self.__language_bar.focus_out() 233 self.__language_bar.focus_out()
223 self.__set_im_icon(ICON_KEYBOARD) 234 self.__set_im_icon(ICON_KEYBOARD)
224 self.__set_im_name(None) 235 self.__set_im_name(None)
236 if self.__bus.get_use_sys_layout():
237 self.__set_xkb_layout(self.__default_xkb_layout)
225 238
226 def state_changed(self): 239 def state_changed(self):
227 if not self.__focus_ic: 240 if not self.__focus_ic:
228 return 241 return
229 242
230 enabled = self.__focus_ic.is_enabled() 243 enabled = self.__focus_ic.is_enabled()
231 self.__language_bar.set_enabled(enabled) 244 self.__language_bar.set_enabled(enabled)
232 245
233 if enabled == False: 246 if enabled == False:
234 self.reset() 247 self.reset()
235 self.__set_im_icon(ICON_KEYBOARD) 248 self.__set_im_icon(ICON_KEYBOARD)
236 self.__set_im_name(None) 249 self.__set_im_name(None)
250 if self.__bus.get_use_sys_layout():
251 self.__set_xkb_layout(self.__default_xkb_layout)
237 else: 252 else:
238 engine = self.__focus_ic.get_engine() 253 engine = self.__focus_ic.get_engine()
239 if engine: 254 if engine:
240 self.__set_im_icon(engine.icon) 255 self.__set_im_icon(engine.icon)
241 self.__set_im_name(engine.longname) 256 self.__set_im_name(engine.longname)
257 if self.__bus.get_use_sys_layout():
258 self.__set_xkb_layout(engine.layout)
242 else: 259 else:
243 self.__set_im_icon(ICON_KEYBOARD) 260 self.__set_im_icon(ICON_KEYBOARD)
244 self.__set_im_name(None) 261 self.__set_im_name(None)
245 262 if self.__bus.get_use_sys_layout():
263 self.__set_xkb_layout(self.__default_xkb_layout)
246 264
247 def reset(self): 265 def reset(self):
248 self.__candidate_panel.reset() 266 self.__candidate_panel.reset()
249 self.__language_bar.reset() 267 self.__language_bar.reset()
250 268
251 def start_setup(self): 269 def start_setup(self):
252 self.__start_setup() 270 self.__start_setup()
253 271
254 def do_destroy(self): 272 def do_destroy(self):
255 gtk.main_quit() 273 gtk.main_quit()
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 529
512 def __start_setup(self): 530 def __start_setup(self):
513 if self.__setup_pid != 0: 531 if self.__setup_pid != 0:
514 pid, state = os.waitpid(self.__setup_pid, os.P_NOWAIT) 532 pid, state = os.waitpid(self.__setup_pid, os.P_NOWAIT)
515 if pid != self.__setup_pid: 533 if pid != self.__setup_pid:
516 os.kill(self.__setup_pid, signal.SIGUSR1) 534 os.kill(self.__setup_pid, signal.SIGUSR1)
517 return 535 return
518 self.__setup_pid = 0 536 self.__setup_pid = 0
519 self.__setup_pid = os.spawnl(os.P_NOWAIT, self.__setup_cmd, "ibus-setup" ) 537 self.__setup_pid = os.spawnl(os.P_NOWAIT, self.__setup_cmd, "ibus-setup" )
520 538
539 def __set_xkb_layout(self, layout):
540 # if it's not a us keyboard layout, then we need to load us layout
541 # into the second group. Otherwise applications' key bindings may
542 # not work correctly.
543 if layout != "us" and not layout.startswith("us("):
544 layout = layout + ",us"
545
546 if self.__current_xkb_layout == layout:
547 return;
548
549 self.__current_xkb_layout = layout
550
551 # FIXME: It's an ugly hack. libxklavier might be used to make it more
552 # reliable.
553 try:
554 os.spawnv(os.P_WAIT, self.__setxkbmap_cmd,
555 [ "setxkbmap", "-layout", layout ] )
556 except:
557 print >> sys.stderr, "Failed to run %s" % self.__setxkbmap_cmd
OLDNEW
« bus/ibusimpl.c ('K') | « setup/setup.ui ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698