diff options
author | Peng Huang <shawn.p.huang@gmail.com> | 2009-02-23 15:05:50 +0800 |
---|---|---|
committer | Peng Huang <shawn.p.huang@gmail.com> | 2009-02-23 15:05:50 +0800 |
commit | f86438bf0ee2f83f4744226e4d640503ff985b12 (patch) | |
tree | 7f73098d0132966f223a620fa466c694ca71e068 | |
parent | 4c180f55b8e485aa0ac1bc1af2aa0d1b99886470 (diff) | |
download | ibus-f86438bf0ee2f83f4744226e4d640503ff985b12.tar.gz ibus-f86438bf0ee2f83f4744226e4d640503ff985b12.tar.xz ibus-f86438bf0ee2f83f4744226e4d640503ff985b12.zip |
Add Disable menu item on Input Menu. Use it to disable InputContext.
-rw-r--r-- | bus/inputcontext.c | 36 | ||||
-rw-r--r-- | ibus/inputcontext.py | 6 | ||||
-rw-r--r-- | ibus/interface/iinputcontext.py | 6 | ||||
-rw-r--r-- | ui/gtk/panel.py | 13 |
4 files changed, 58 insertions, 3 deletions
diff --git a/bus/inputcontext.c b/bus/inputcontext.c index 866c837..6ba7322 100644 --- a/bus/inputcontext.c +++ b/bus/inputcontext.c @@ -799,6 +799,40 @@ _ic_set_capabilities (BusInputContext *context, } static IBusMessage * +_ic_enable (BusInputContext *context, + IBusMessage *message, + BusConnection *connection) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + g_assert (message != NULL); + g_assert (BUS_IS_CONNECTION (connection)); + + IBusMessage *reply; + + bus_input_context_enable (context); + + reply = ibus_message_new_method_return (message); + return reply; +} + +static IBusMessage * +_ic_disable (BusInputContext *context, + IBusMessage *message, + BusConnection *connection) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + g_assert (message != NULL); + g_assert (BUS_IS_CONNECTION (connection)); + + IBusMessage *reply; + + bus_input_context_disable (context); + + reply = ibus_message_new_method_return (message); + return reply; +} + +static IBusMessage * _ic_is_enabled (BusInputContext *context, IBusMessage *message, BusConnection *connection) @@ -945,6 +979,8 @@ bus_input_context_ibus_message (BusInputContext *context, { IBUS_INTERFACE_INPUT_CONTEXT, "FocusOut", _ic_focus_out }, { IBUS_INTERFACE_INPUT_CONTEXT, "Reset", _ic_reset }, { IBUS_INTERFACE_INPUT_CONTEXT, "SetCapabilities", _ic_set_capabilities }, + { IBUS_INTERFACE_INPUT_CONTEXT, "Enable", _ic_enable }, + { IBUS_INTERFACE_INPUT_CONTEXT, "Disable", _ic_disable }, { IBUS_INTERFACE_INPUT_CONTEXT, "IsEnabled", _ic_is_enabled }, { IBUS_INTERFACE_INPUT_CONTEXT, "SetEngine", _ic_set_engine }, { IBUS_INTERFACE_INPUT_CONTEXT, "GetEngine", _ic_get_engine }, diff --git a/ibus/inputcontext.py b/ibus/inputcontext.py index 10233da..c9aa634 100644 --- a/ibus/inputcontext.py +++ b/ibus/inputcontext.py @@ -197,6 +197,12 @@ class InputContext(object.Object): def reset(self): return self.__context.Reset() + def enable(self): + return self.__context.Enable() + + def disable(self): + return self.__context.Disable() + def is_enabled(self): return self.__context.IsEnabled() diff --git a/ibus/interface/iinputcontext.py b/ibus/interface/iinputcontext.py index e5cf129..d88a9c1 100644 --- a/ibus/interface/iinputcontext.py +++ b/ibus/interface/iinputcontext.py @@ -57,6 +57,12 @@ class IInputContext(dbus.service.Object): @method() def Reset(self): pass + @method() + def Enable(self): pass + + @method() + def Disable(self): pass + @method(out_signature="b") def IsEnabled(self): pass diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py index ee29ea0..fb9ae6e 100644 --- a/ui/gtk/panel.py +++ b/ui/gtk/panel.py @@ -314,11 +314,11 @@ class Panel(ibus.PanelBase): langs.remove(_("Other")) langs.append(_("Other")) + size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) for lang in langs: if len(tmp[lang]) == 1: engine = tmp[lang][0] item = gtk.ImageMenuItem("%s - %s" % (lang, engine.longname)) - size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) if engine.icon: item.set_image (_icon.IconWidget(engine.icon, size[0])) else: @@ -332,7 +332,6 @@ class Panel(ibus.PanelBase): item.set_submenu(submenu) for engine in tmp[lang]: item = gtk.ImageMenuItem(engine.longname) - size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) if engine.icon: item.set_image (_icon.IconWidget(engine.icon, size[0])) else: @@ -340,6 +339,11 @@ class Panel(ibus.PanelBase): item.connect("activate", self.__im_menu_item_activate_cb, engine) submenu.add(item) + item = gtk.ImageMenuItem(_("Disable")) + item.set_image (_icon.IconWidget("gtk-close", size[0])) + item.connect("activate", self.__im_menu_item_activate_cb, None) + menu.add (item) + menu.show_all() menu.set_take_focus(False) return menu @@ -367,7 +371,10 @@ class Panel(ibus.PanelBase): self.__status_icon) def __im_menu_item_activate_cb(self, item, engine): - self.__focus_ic.set_engine(engine) + if engine: + self.__focus_ic.set_engine(engine) + else: + self.__focus_ic.disable() def __sys_menu_item_activate_cb(self, item, command): if command == gtk.STOCK_PREFERENCES: |