[gedit-plugins] Port commander to new menu api
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-plugins] Port commander to new menu api
- Date: Thu, 9 Jan 2014 13:29:27 +0000 (UTC)
commit 648aec4fe9111402852745e11ad52ee5fae2fbcc
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Thu Jan 9 13:04:35 2014 +0100
Port commander to new menu api
plugins/commander/commander/__init__.py | 6 ++-
plugins/commander/commander/windowactivatable.py | 49 ++++++++-------------
2 files changed, 24 insertions(+), 31 deletions(-)
---
diff --git a/plugins/commander/commander/__init__.py b/plugins/commander/commander/__init__.py
index c81028e..d925a61 100644
--- a/plugins/commander/commander/__init__.py
+++ b/plugins/commander/commander/__init__.py
@@ -27,7 +27,7 @@ path = os.path.dirname(__file__)
if not path in sys.path:
sys.path.insert(0, path)
-from windowactivatable import WindowActivatable
+from windowactivatable import CommanderWindowActivatable
import commander.commands as commands
from gi.repository import GObject, GLib, Gedit
@@ -50,10 +50,14 @@ class CommanderPlugin(GObject.Object, Gedit.AppActivatable):
os.path.join(self.plugin_info.get_data_dir(), 'modules')
])
+ self.app.add_accelerator("<Primary>period", "win.commander", None)
+
def deactivate(self):
commands.Commands().stop()
if self._path in sys.path:
sys.path.remove(self._path)
+ self.app.remove_accelerator("win.commander", None)
+
# vi:ex:ts=4:et
diff --git a/plugins/commander/commander/windowactivatable.py
b/plugins/commander/commander/windowactivatable.py
index dd5daaa..b921ac6 100644
--- a/plugins/commander/commander/windowactivatable.py
+++ b/plugins/commander/commander/windowactivatable.py
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
-from gi.repository import GObject, Gtk, Gedit
+from gi.repository import GLib, GObject, Gio, Gtk, Gedit
from entry import Entry
from info import Info
from gpdefs import *
@@ -30,20 +30,7 @@ try:
except:
_ = lambda s: s
-ui_str = """
-<ui>
- <menubar name="MenuBar">
- <menu name="EditMenu" action="Edit">
- <placeholder name="EditOps_5">
- <menuitem name="CommanderEditMode" action="CommanderModeAction"/>
- </placeholder>
- </menu>
- </menubar>
-</ui>
-"""
-
-class WindowActivatable(GObject.Object, Gedit.WindowActivatable):
- __gtype_name__ = "CommanderWindowActivatable"
+class CommanderWindowActivatable(GObject.Object, Gedit.WindowActivatable):
window = GObject.property(type=Gedit.Window)
@@ -63,30 +50,30 @@ class WindowActivatable(GObject.Object, Gedit.WindowActivatable):
pass
def install_ui(self):
- manager = self.window.get_ui_manager()
+ action = Gio.SimpleAction.new_stateful("commander", None, GLib.Variant.new_boolean(False))
+ action.connect('activate', self.activate_toggle)
+ action.connect('change-state', self.commander_mode)
+ self.window.add_action(action)
- self._action_group = Gtk.ActionGroup("GeditCommanderPluginActions")
- self._action_group.add_toggle_actions([('CommanderModeAction', None,
- _('Commander Mode'), '<Ctrl>period',
- _('Start commander mode'), self.on_commander_mode)])
-
- manager.insert_action_group(self._action_group, -1)
- self._merge_id = manager.add_ui_from_string(ui_str)
+ self.menu = self.extend_gear_menu("ext9")
+ item = Gio.MenuItem.new(_('Commander Mode'), "win.commander")
+ self.menu.append_menu_item(item)
def uninstall_ui(self):
- manager = self.window.get_ui_manager()
- manager.remove_ui(self._merge_id)
- manager.remove_action_group(self._action_group)
+ self.window.remove_action("commander")
- manager.ensure_update()
+ def activate_toggle(self, action, parameter):
+ state = action.get_state()
+ action.change_state(GLib.Variant.new_boolean(not state.get_boolean()))
- def on_commander_mode(self, action, user_data=None):
+ def commander_mode(self, action, state):
view = self.window.get_active_view()
if not view:
return False
- if action.get_active():
+ active = state.get_boolean()
+ if active:
if not self._entry or view != self._view:
self._entry = Entry(view)
self._entry.connect('destroy', self.on_entry_destroy)
@@ -97,10 +84,12 @@ class WindowActivatable(GObject.Object, Gedit.WindowActivatable):
self._entry.destroy()
self._view = None
+ action.set_state(GLib.Variant.new_boolean(active))
+
return True
def on_entry_destroy(self, widget, user_data=None):
self._entry = None
- self._action_group.get_action('CommanderModeAction').set_active(False)
+ self.window.lookup_action("commander").change_state(GLib.Variant.new_boolean(False))
# vi:ex:ts=4:et
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]