rendered paste bodyIndex: 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 23:21:21 -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]
@@ -163,7 +163,17 @@ class Manager:
combo.get_model().get_value(
combo.get_active_iter(),
self.NAME_COLUMN))
-
+
+ def clear_fields(self):
+ self['description'].set_text('')
+ self['accelerator'].set_text('')
+ self['commands'].get_buffer().set_text('')
+
+ self.set_active_by_name('input', Manager.combobox_items['input'][0][0])
+ self.set_active_by_name('output', Manager.combobox_items['output'][0][0])
+ self.set_active_by_name('applicability', Manager.combobox_items['applicability'][0][0])
+ self['title'].set_label(_('Edit tool <i>%s</i>:') % '') # a bit ugly, but we're string frozen
+
def fill_fields(self):
node = self.current_node
self['description'].set_text(default(node.get('description'), _('A Brand New Tool')))
@@ -181,25 +191,37 @@ 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['tool-table'].set_sensitive(True)
+
+ 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)
self.current_node = None
- self.model.remove(piter)
-
+ if self.model.remove(piter):
+ self.view.set_cursor(self.model.get_path(piter),
+ self.view.get_column(self.LABEL_COLUMN),
+ False)
+ self.view.grab_focus()
+
def on_view_label_cell_edited(self, cell, path, new_text):
if new_text != '':
piter = self.model.get_iter(path)
@@ -213,13 +235,14 @@ class Manager:
piter, node = self.get_selected_tool()
self['remove-tool-button'].set_sensitive(piter is not None)
-
+
if node is not None:
self.current_node = node
self.fill_fields()
+ self['tool-table'].set_sensitive(True)
else:
- # :TODO: Config panel should be grayed
- pass
+ self.clear_fields()
+ self['tool-table'].set_sensitive(False)
def on_tools_model_row_changed(self, model, path, piter):
tool = model.get_value(piter, self.NODE_COLUMN)
Index: tools/tools.glade
===================================================================
RCS file: /cvs/gnome/gedit/plugins/externaltools/tools/tools.glade,v
retrieving revision 1.2
diff -u -p -r1.2 tools.glade
--- tools/tools.glade 21 Jan 2006 16:40:09 -0000 1.2
+++ tools/tools.glade 7 Feb 2006 23:21:22 -0000
@@ -343,7 +343,7 @@
</child>
<child>
- <widget class="GtkTable" id="table2">
+ <widget class="GtkTable" id="tool-table">
<property name="visible">True</property>
<property name="n_rows">7</property>
<property name="n_columns">2</property>