~ubuntu-branches/ubuntu/karmic/ibus/karmic-updates

« back to all changes in this revision

Viewing changes to ui/gtk/panel.py

  • Committer: Bazaar Package Importer
  • Author(s): LI Daobing
  • Date: 2009-06-13 11:39:05 UTC
  • mfrom: (1.1.3 upstream) (6.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090613113905-0mfi5hhoz8w9y6k2
Tags: 1.1.0.20090612-1
* new upstream release.
* Fix "python-ibus should depends on iso-codes" (Closes: #532163)
* debian/libibus0.symbols: update symbols

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
from ibus import interface
32
32
from languagebar import LanguageBar
33
33
from candidatepanel import CandidatePanel
 
34
from engineabout import EngineAbout
34
35
 
35
36
from gettext import dgettext
36
37
_  = lambda a : dgettext("ibus", a)
81
82
                        lambda widget, prop_name, prop_state: self.property_activate(prop_name, prop_state))
82
83
        self.__language_bar.connect("get-im-menu",
83
84
                        self.__get_im_menu_cb)
 
85
        self.__language_bar.connect("show-engine-about",
 
86
                        self.__show_engine_about_cb)
84
87
        self.__language_bar.focus_out()
85
88
        self.__language_bar.show_all()
86
89
 
89
92
                        lambda widget: self.cursor_up())
90
93
        self.__candidate_panel.connect("cursor-down",
91
94
                        lambda widget: self.cursor_down())
 
95
        self.__candidate_panel.connect("page-up",
 
96
                        lambda widget: self.page_up())
 
97
        self.__candidate_panel.connect("page-down",
 
98
                        lambda widget: self.page_down())
 
99
        self.__candidate_panel.connect("candidate-clicked",
 
100
                        lambda widget, index, button, state: self.candidate_clicked(index, button, state))
 
101
 
92
102
 
93
103
        self.__status_icon = gtk.StatusIcon()
94
104
        self.__status_icon.connect("popup-menu", self.__status_icon_popup_menu_cb)
100
110
        self.__config_load_lookup_table_orientation()
101
111
        self.__config_load_show()
102
112
        self.__config_load_custom_font()
 
113
        self.__config_load_show_im_name()
103
114
        # self.__bus.request_name(ibus.panel.IBUS_SERVICE_PANEL, 0)
104
115
 
105
116
    def set_cursor_location(self, x, y, w, h):
174
185
        else:
175
186
            self.__status_icon.set_from_icon_name(icon_name)
176
187
 
 
188
    def __set_im_name(self, name):
 
189
        self.__language_bar.set_im_name(name)
 
190
 
177
191
    def focus_in(self, ic):
178
192
        self.reset()
179
193
        self.__focus_ic = ibus.InputContext(self.__bus, ic)
182
196
 
183
197
        if not enabled:
184
198
            self.__set_im_icon(self.__ibus_icon)
 
199
            self.__set_im_name(None)
185
200
        else:
186
201
            engine = self.__focus_ic.get_engine()
187
202
            if engine:
188
203
                self.__set_im_icon(engine.icon)
 
204
                self.__set_im_name(engine.longname)
189
205
            else:
190
206
                self.__set_im_icon(self.__ibus_icon)
 
207
                self.__set_im_name(None)
191
208
        self.__language_bar.focus_in()
192
209
 
193
210
    def focus_out(self, ic):
196
213
        self.__language_bar.set_enabled(False)
197
214
        self.__language_bar.focus_out()
198
215
        self.__set_im_icon(self.__ibus_icon)
 
216
        self.__set_im_name(None)
199
217
 
200
218
    def state_changed(self):
201
219
        if not self.__focus_ic:
207
225
        if enabled == False:
208
226
            self.reset()
209
227
            self.__set_im_icon(self.__ibus_icon)
 
228
            self.__set_im_name(None)
210
229
        else:
211
230
            engine = self.__focus_ic.get_engine()
212
231
            if engine:
213
232
                self.__set_im_icon(engine.icon)
 
233
                self.__set_im_name(engine.longname)
214
234
            else:
215
235
                self.__set_im_icon(self.__ibus_icon)
 
236
                self.__set_im_name(None)
216
237
 
217
238
 
218
239
    def reset(self):
255
276
        settings = gtk.settings_get_default()
256
277
        gtk.rc_reset_styles(settings)
257
278
 
 
279
    def __config_load_show_im_name(self):
 
280
        value = self.__config.get_value("panel", "show_im_name", False)
 
281
        self.__language_bar.set_show_im_name(value)
 
282
 
258
283
    def __config_value_changed_cb(self, bus, section, name, value):
259
284
        if section != "panel":
260
285
            return
264
289
            self.__config_load_show()
265
290
        elif name == "use_custom_font" or name == "custom_font":
266
291
            self.__config_load_custom_font()
 
292
        elif name == "show_im_name":
 
293
            self.__config_load_show_im_name()
 
294
        else:
 
295
            print >> sys.stderr, "Unknown config item [%s]" % name
267
296
 
268
297
    def __config_reloaded_cb(self, bus):
269
298
        pass
347
376
        menu = self.__create_im_menu()
348
377
        return menu
349
378
 
 
379
    def __show_engine_about_cb(self, langiagebar):
 
380
        try:
 
381
            engine = self.__focus_ic.get_engine()
 
382
            dlg = EngineAbout(engine)
 
383
            dlg.run()
 
384
            dlg.destroy()
 
385
        except:
 
386
            pass
 
387
 
350
388
    def __status_icon_popup_menu_cb(self, status_icon, button, active_time):
351
389
        menu = self.__create_sys_menu()
352
390
        menu.popup(None, None,
396
434
            print >> sys.stderr, "Unknown command %s" % command
397
435
    
398
436
    def __sigchld_cb(self, sig, sf):
399
 
        pid, status = os.wait()
400
 
        if self.__setup_pid == pid:
401
 
            self.__setup_pid = 0
 
437
        try:
 
438
            pid, status = os.wait()
 
439
            if self.__setup_pid == pid:
 
440
                self.__setup_pid = 0
 
441
        except:
 
442
            pass
402
443
 
403
444
    def __start_setup(self):
404
445
        if self.__setup_pid != 0:
405
446
            pid, state = os.waitpid(self.__setup_pid, os.P_NOWAIT)
406
447
            if pid != self.__setup_pid:
 
448
                os.kill(self.__setup_pid, signal.SIGUSR1)
407
449
                return
408
450
            self.__setup_pid = 0
409
451
        self.__setup_pid = os.spawnl(os.P_NOWAIT, self.__setup_cmd, "ibus-setup")