[nemiver/varobjs-support: 3/3] Support variable value editing in LocalVarsInspector2 (Closes: #581169)
- From: Dodji Seketeli <dodji src gnome org>
- To: svn-commits-list gnome org
- Subject: [nemiver/varobjs-support: 3/3] Support variable value editing in LocalVarsInspector2 (Closes: #581169)
- Date: Sun, 3 May 2009 05:24:26 -0400 (EDT)
commit de925dbac74b64d4991e5563de9c65239d5608e1
Author: Dodji Seketeli <dodji redhat com>
Date: Sun May 3 10:57:34 2009 +0200
Support variable value editing in LocalVarsInspector2 (Closes: #581169)
* src/persp/dbgperspective/nmv-local-vars-inspector2.cc:
(LocalVarsInspector2::Priv::init_graphical_signals): Install the
Priv::on_cell_edited_signal slot.
(LocalVarsInspector2::Priv::on_tree_view_selection_changed_signal):
If the selected variable is editable, then make the cell editable.
(LocalVarsInspector2::Priv::on_cell_edited_signal): New slot.
Assign the variable according to what the user typed.
(LocalVarsInspector2::Priv::on_variable_assigned_signal): New slot.
Graphically update the variable value upon assignment.
---
.../dbgperspective/nmv-local-vars-inspector2.cc | 65 ++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/src/persp/dbgperspective/nmv-local-vars-inspector2.cc b/src/persp/dbgperspective/nmv-local-vars-inspector2.cc
index a4e46d8..f07bd8f 100644
--- a/src/persp/dbgperspective/nmv-local-vars-inspector2.cc
+++ b/src/persp/dbgperspective/nmv-local-vars-inspector2.cc
@@ -209,6 +209,15 @@ public:
(sigc::mem_fun (this, &Priv::on_button_press_signal));
tree_view->signal_expose_event ().connect_notify
(sigc::mem_fun (this, &Priv::on_expose_event_signal));
+
+ Gtk::CellRenderer *r = tree_view->get_column_cell_renderer
+ (VarsTreeView::VARIABLE_VALUE_COLUMN_INDEX);
+ THROW_IF_FAIL (r);
+
+ Gtk::CellRendererText *t =
+ dynamic_cast<Gtk::CellRendererText*> (r);
+ t->signal_edited ().connect (sigc::mem_fun
+ (*this, &Priv::on_cell_edited_signal));
}
void
@@ -687,6 +696,22 @@ public:
Glib::RefPtr<Gtk::TreeSelection> sel = tree_view->get_selection ();
THROW_IF_FAIL (sel);
cur_selected_row = sel->get_selected ();
+ if (!cur_selected_row)
+ return;
+
+ IDebugger::VariableSafePtr var =
+ (*cur_selected_row)[vutil::get_variable_columns ().variable];
+ if (!var)
+ return;
+
+ cur_selected_row->set_value
+ (vutil::get_variable_columns ().variable_value_editable,
+ debugger->is_variable_editable (var));
+
+ // Dump some log about the variable that got selected.
+ UString qname;
+ var->build_qname (qname);
+ LOG_DD ("row of variable '" << qname << "'");
NEMIVER_CATCH
}
@@ -761,6 +786,46 @@ public:
}
NEMIVER_CATCH
}
+
+ void
+ on_cell_edited_signal (const Glib::ustring &a_path,
+ const Glib::ustring &a_text)
+ {
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ NEMIVER_TRY
+
+ Gtk::TreeModel::iterator row = tree_store->get_iter (a_path);
+ IDebugger::VariableSafePtr var =
+ (*row)[vutil::get_variable_columns ().variable];
+ THROW_IF_FAIL (var);
+
+ debugger->assign_variable
+ (var, a_text,
+ sigc::bind (sigc::mem_fun
+ (*this, &Priv::on_variable_assigned_signal),
+ a_path));
+
+ NEMIVER_CATCH
+ }
+
+ void
+ on_variable_assigned_signal (const IDebugger::VariableSafePtr a_var,
+ const UString &a_var_path)
+ {
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ NEMIVER_TRY
+
+ Gtk::TreeModel::iterator var_row
+ = tree_store->get_iter (a_var_path);
+ THROW_IF_FAIL (var_row);
+ THROW_IF_FAIL (tree_view);
+ vutil::update_a_variable_node (a_var, *tree_view,
+ var_row, false, false);
+
+ NEMIVER_CATCH
+ }
};//end LocalVarsInspector2::Priv
LocalVarsInspector2::LocalVarsInspector2 (IDebuggerSafePtr &a_debugger,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]