All pastes #40617 Raw Edit

Miscellany

public text v1 · immutable
#40617 ·published 2006-02-07 22:33 UTC
rendered paste body
Index: tools/manager.py
===================================================================
RCS file: /cvs/gnome/gedit/plugins/externaltools/tools/manager.py,v
retrieving revision 1.2
diff -u -p -r1.2 manager.py
--- tools/manager.py	21 Jan 2006 16:40:09 -0000	1.2
+++ tools/manager.py	7 Feb 2006 22:32:49 -0000
@@ -100,7 +100,7 @@ class Manager:
 		for item in self.tools:
 			self.model.append([item.get('label'), item])
 		
-		self.model.connect('row-changed', self.on_tools_model_row_changed)
+		self.row_changed_id = self.model.connect('row-changed', self.on_tools_model_row_changed)
 
 	def __init_tools_view(self):
 		# Tools column
@@ -112,7 +112,7 @@ class Manager:
 		self.view.append_column(column)
 		
 		renderer.connect('edited', self.on_view_label_cell_edited)
-		self.view.get_selection().connect('changed', self.on_view_selection_changed, None)
+		self.selection_changed_id = self.view.get_selection().connect('changed', self.on_view_selection_changed, None)
 			
 	def __init_combobox(self, name):
 		combo = self[name]
@@ -181,19 +181,26 @@ class Manager:
 		                                Manager.combobox_items['applicability'][0][0]))
 		self['title'].set_label(_('Edit tool <i>%s</i>:') % node.get('label'))
 
-	
 	def on_new_tool_button_clicked(self, button):
 		self.save_current_tool()
+
+		# block handlers while inserting a new item
+		self.model.handler_block(self.row_changed_id)
+		self.view.get_selection().handler_block(self.selection_changed_id)
+
 		self.current_node = et.Element('tool');
 		self.current_node.set('label', _('New tool'))
 		self.tools.root.append(self.current_node)
 		piter = self.model.append([self.current_node.get('label'),
 		                           self.current_node])
-		self.view.set_cursor(self.model.get_path(piter), 
+		self.view.set_cursor(self.model.get_path(piter),
 		                     self.view.get_column(self.LABEL_COLUMN),
 		                     True)
 		self.fill_fields()
-	
+
+		self.view.get_selection().handler_unblock(self.selection_changed_id)
+		self.model.handler_unblock(self.row_changed_id)
+
 	def on_remove_tool_button_clicked(self, button):
 		piter, node = self.get_selected_tool()
 		self.tools.root.remove(node)