All pastes #116466 Raw Edit

jessevdk

public text v1 · immutable
·published 2006-08-05 08:32 UTC
rendered paste body
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gedit/ChangeLog,v
retrieving revision 1.799
diff -u -p -r1.799 ChangeLog
--- ChangeLog	5 Aug 2006 07:43:10 -0000	1.799
+++ ChangeLog	5 Aug 2006 08:30:56 -0000
@@ -1,5 +1,12 @@
 2006-08-05  Jesse van den Kieboom  <jesse@icecrew.nl>
 
+	* gedit/gedit-window.c: added calling update_ui when editability 
+	changes
+	* plugins/snippets/snippets/SnippetController.py: added honoring the
+	editability of the buffer
+	
+2006-08-05  Jesse van den Kieboom  <jesse@icecrew.nl>
+
 	* plugins/filebrowser/gedit-file-browser-plugin.c:
 	
 	Fixed restoring of remote location (problem introduced by previous
Index: gedit/gedit-window.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/gedit-window.c,v
retrieving revision 1.30
diff -u -p -r1.30 gedit-window.c
--- gedit/gedit-window.c	18 Jun 2006 09:05:20 -0000	1.30
+++ gedit/gedit-window.c	5 Aug 2006 08:30:56 -0000
@@ -2268,6 +2268,14 @@ doc_saved (GeditDocument *doc,
 }
 
 static void
+editable_changed (GeditView  *view,
+                  GParamSpec  *arg1,
+                  GeditWindow *window)
+{
+	gedit_plugins_engine_update_plugins_ui (window, FALSE);
+}
+
+static void
 notebook_tab_added (GeditNotebook *notebook,
 		    GeditTab      *tab,
 		    GeditWindow   *window)
@@ -2344,6 +2352,10 @@ notebook_tab_added (GeditNotebook *noteb
 			  "toggle_overwrite",
 			  G_CALLBACK (update_overwrite_mode_statusbar),
 			  window);
+	g_signal_connect (view,
+			  "notify::editable",
+			  G_CALLBACK (editable_changed),
+			  window);
 
 	update_documents_list_menu (window);
 	
@@ -2427,6 +2439,9 @@ notebook_tab_removed (GeditNotebook *not
 					      window);					      				      
 	g_signal_handlers_disconnect_by_func (view, 
 					      G_CALLBACK (update_overwrite_mode_statusbar),
+					      window);
+	g_signal_handlers_disconnect_by_func (view, 
+					      G_CALLBACK (editable_changed),
 					      window);
 	g_signal_handlers_disconnect_by_func (view, 
 					      G_CALLBACK (drag_data_received_cb),
Index: plugins/snippets/snippets/SnippetController.py
===================================================================
RCS file: /cvs/gnome/gedit/plugins/snippets/snippets/SnippetController.py,v
retrieving revision 1.11
diff -u -p -r1.11 SnippetController.py
--- plugins/snippets/snippets/SnippetController.py	24 Jul 2006 20:31:44 -0000	1.11
+++ plugins/snippets/snippets/SnippetController.py	5 Aug 2006 08:30:56 -0000
@@ -68,16 +68,14 @@ class SnippetController:
 	# all currently active snippets and disconnect all current signals. So
 	# self.set_view(None) will effectively remove all the control from the
 	# current view
-	def set_view(self, view):
-		if view == self.view:
-			return
-
+	def _set_view(self, view):
 		if self.view:
 			buf = self.view.get_buffer()
 			
 			self.disconnect_signal(self.view, 'key-press-event')
 			self.disconnect_signal(self.view, 'destroy')
 			self.disconnect_signal(buf, 'notify::language')
+			self.disconnect_signal(self.view, 'notify::editable')
 			self.disconnect_signal(buf, 'changed')
 			self.disconnect_signal(buf, 'cursor-moved')
 			
@@ -92,14 +90,25 @@ class SnippetController:
 			
 			self.signal_ids['destroy'] = view.connect('destroy', \
 					self.on_view_destroy)
-			self.signal_ids['key-press-event'] = view.connect( \
-					'key_press_event', self.on_view_key_press)
+
+			if view.get_editable():
+				self.signal_ids['key-press-event'] = view.connect( \
+						'key_press_event', self.on_view_key_press)
+
 			self.signal_ids['notify::language'] = buf.connect( \
 					'notify::language', self.on_notify_language)
+			self.signal_ids['notify::editable'] = view.connect( \
+					'notify::editable', self.on_notify_editable)
 			
 			self.update_language()
 		elif self.language_id != 0:
 			SnippetsLibrary().unref(self.language_id)
+	
+	def set_view(self, view):
+		if view == self.view:
+			return
+		
+		self._set_view(view)
 
 	# Call this whenever the language in the view changes. This makes sure that
 	# the correct language is used when finding snippets
@@ -123,6 +132,9 @@ class SnippetController:
 		SnippetsLibrary().ref(self.language_id)
 
 	def accelerator_activate(self, keyval, mod):
+		if not self.view or not self.view.get_editable():
+			return
+
 		accelerator = gtk.accelerator_name(keyval, mod)
 		snippets = SnippetsLibrary().from_accelerator(accelerator, \
 				self.language_id)
@@ -606,7 +618,10 @@ class SnippetController:
 	
 	def on_notify_language(self, buf, spec):
 		self.update_language()
-		
+
+	def on_notify_editable(self, view, spec):
+		self._set_view(view)
+	
 	def on_view_key_press(self, view, event):
 		library = SnippetsLibrary()