summaryrefslogtreecommitdiff
blob: 5886532210623bdf68aa21785109ae082cf09afc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
From ad60cf271784d10aa6fadf9bef6254f8f1df82ad Mon Sep 17 00:00:00 2001
From: Jesse van den Kieboom <jesse.vandenkieboom@epfl.ch>
Date: Mon, 03 May 2010 11:46:58 +0000
Subject: Added commander toggle menu item

---
diff --git a/plugins/commander/commander/windowhelper.py b/plugins/commander/commander/windowhelper.py
index 15dc787..9c71f28 100644
--- a/plugins/commander/commander/windowhelper.py
+++ b/plugins/commander/commander/windowhelper.py
@@ -2,43 +2,79 @@ import gedit
 import gtk
 from entry import Entry
 from info import Info
+from gpdefs import *
+
+try:
+    gettext.bindtextdomain(GETTEXT_PACKAGE, GP_LOCALEDIR)
+    _ = lambda s: gettext.dgettext(GETTEXT_PACKAGE, s);
+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 WindowHelper:
 	def __init__(self, plugin, window):
 		self._window = window
 		self._plugin = plugin
 		self._entry = None
-		accel_path = '<gedit>/plugins/commander/activate'
+		self._view = None
 
-		accel = gtk.accel_map_lookup_entry(accel_path)
+		self.install_ui()
 
-		if accel == None:
-			gtk.accel_map_add_entry(accel_path, gtk.keysyms.period, gtk.gdk.CONTROL_MASK)
+	def install_ui(self):
+		manager = self._window.get_ui_manager()
+
+		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)
+
+	def uninstall_ui(self):
+		manager = self._window.get_ui_manager()
+		manager.remove_ui(self._merge_id)
+		manager.remove_action_group(self._action_group)
+
+		manager.ensure_update()
 
-		self._accel = gtk.AccelGroup()
-		self._accel.connect_by_path(accel_path, self._do_command)
-		self._window.add_accel_group(self._accel)
-	
 	def deactivate(self):
-		self._window.remove_accel_group(self._accel)
+		self.uninstall_ui()
+
 		self._window = None
 		self._plugin = None
 
 	def update_ui(self):
 		pass
-	
-	def _do_command(self, group, obj, keyval, mod):
+
+	def on_commander_mode(self, action):
 		view = self._window.get_active_view()
 		
 		if not view:
 			return False
 
-		if not self._entry:
-			self._entry = Entry(self._window.get_active_view())
-			self._entry.connect('destroy', self.on_entry_destroy)
+		if action.get_active():
+			if not self._entry or view != self._view:
+				self._entry = Entry(view)
+				self._entry.connect('destroy', self.on_entry_destroy)
+
+			self._entry.grab_focus()
+			self._view = view
+		elif self._entry:
+			self._entry.destroy()
+			self._view = None
 
-		self._entry.grab_focus()
 		return True
 	
 	def on_entry_destroy(self, widget):
 		self._entry = None
+		self._action_group.get_action('CommanderModeAction').set_active(False)
--
cgit v0.8.3.1