From d295fde64a1a95de3df72a0dc918be9e8432c37f Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Sun, 7 Jun 2009 11:32:20 +0800 Subject: [PATCH] Add About button in language bar. --- ui/gtk/languagebar.py | 23 +++++++++++++++++++++-- ui/gtk/panel.py | 12 ++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ui/gtk/languagebar.py b/ui/gtk/languagebar.py index 9acb0f1..5012733 100644 --- a/ui/gtk/languagebar.py +++ b/ui/gtk/languagebar.py @@ -25,6 +25,7 @@ import gobject import ibus from handle import Handle from menu import menu_position +from engineabout import EngineAbout from toolitem import ToolButton,\ ToggleToolButton, \ SeparatorToolItem, \ @@ -46,6 +47,11 @@ class LanguageBar(gtk.Toolbar): gobject.SIGNAL_RUN_LAST, gobject.TYPE_PYOBJECT, ()), + "show-engine-about" : ( + gobject.SIGNAL_RUN_LAST, + gobject.TYPE_PYOBJECT, + ()), + } def __init__ (self): @@ -87,6 +93,12 @@ class LanguageBar(gtk.Toolbar): self.__im_menu.connect("toggled", self.__im_menu_toggled_cb) self.insert(self.__im_menu, -1) + self.__about_button = gtk.ToolButton(gtk.STOCK_ABOUT) + self.__about_button.set_no_show_all(True) + self.__about_button.set_tooltip_text(_("About the Input Method")) + self.__about_button.connect("clicked", self.__about_button_clicked_cb) + self.insert(self.__about_button, -1) + def __im_menu_toggled_cb(self, widget): if self.__im_menu.get_active(): menu = self.emit("get-im-menu") @@ -96,6 +108,11 @@ class LanguageBar(gtk.Toolbar): 0, gtk.get_current_event_time(), widget) + + def __about_button_clicked_cb(self, widget): + if self.__enabled: + self.emit("show-engine-about") + def __im_menu_deactivate_cb(self, menu): self.__im_menu.set_active(False) @@ -135,11 +152,13 @@ class LanguageBar(gtk.Toolbar): def set_enabled(self, enabled): self.__enabled = enabled if self.__enabled: + self.__about_button.show() self.__set_opacity(1.0) if self.__has_focus: if self.__show in (1, 2): self.show_all() else: + self.__about_button.hide() self.__set_opacity(0.5) if self.__show in (1, 0): self.hide_all() @@ -162,7 +181,7 @@ class LanguageBar(gtk.Toolbar): def register_properties(self, props): self.__remove_properties() # create new properties - for prop in props: + for i, prop in enumerate(props): if prop.type == ibus.PROP_TYPE_NORMAL: item = ToolButton(prop = prop) elif prop.type == ibus.PROP_TYPE_TOGGLE: @@ -187,7 +206,7 @@ class LanguageBar(gtk.Toolbar): item.hide() self.__properties.append(item) - self.insert(item, -1) + self.insert(item, i + 2) def update_property(self, prop): map(lambda x: x.update_property(prop), self.__properties) diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py index 3c5158b..fc5fa70 100644 --- a/ui/gtk/panel.py +++ b/ui/gtk/panel.py @@ -31,6 +31,7 @@ from os import path from ibus import interface from languagebar import LanguageBar from candidatepanel import CandidatePanel +from engineabout import EngineAbout from gettext import dgettext _ = lambda a : dgettext("ibus", a) @@ -81,6 +82,8 @@ class Panel(ibus.PanelBase): lambda widget, prop_name, prop_state: self.property_activate(prop_name, prop_state)) self.__language_bar.connect("get-im-menu", self.__get_im_menu_cb) + self.__language_bar.connect("show-engine-about", + self.__show_engine_about_cb) self.__language_bar.focus_out() self.__language_bar.show_all() @@ -347,6 +350,15 @@ class Panel(ibus.PanelBase): menu = self.__create_im_menu() return menu + def __show_engine_about_cb(self, langiagebar): + try: + engine = self.__focus_ic.get_engine() + dlg = EngineAbout(engine) + dlg.run() + dlg.destroy() + except: + pass + def __status_icon_popup_menu_cb(self, status_icon, button, active_time): menu = self.__create_sys_menu() menu.popup(None, None, -- 2.7.4