summaryrefslogtreecommitdiffstats
path: root/grapher
diff options
context:
space:
mode:
authorTim Moore <timoore@redhat.com>2009-12-07 16:50:44 +0100
committerTim Moore <timoore@redhat.com>2009-12-07 16:50:44 +0100
commitb930d6ec364e35bb04a0860b1a5f2fbdee6effe3 (patch)
tree14e5b2a40e699715f924ead1d2fbc3b84cbb3a42 /grapher
parent9156a0f81ec0316b11a7f5ad4db2bd92083e1614 (diff)
downloadsystemtap-steved-b930d6ec364e35bb04a0860b1a5f2fbdee6effe3.tar.gz
systemtap-steved-b930d6ec364e35bb04a0860b1a5f2fbdee6effe3.tar.xz
systemtap-steved-b930d6ec364e35bb04a0860b1a5f2fbdee6effe3.zip
Change data set list display to use a check box for inclusion in a graph
Incidently, this supports removing a data set from a graph. Also, remove the Add, Remove, and Cancel buttons from the data set dialog. * grapher/GraphWidget.hxx (DataModelColumns::_dataEnabled): new member _listConnection: new member * grapher/GraphWidget.cxx (GraphWidget): Delete connections for removed buttons. Connect to dialog show and hide signals instead of map. Add "Enabled" column to dialog list. (onDataAdd, onDataRemove): delete (onDataDialogOpen): Initialize list store with all data sets and hook up row_changed signal (onDataDialogClose, onRowChanged): new functions * grapher/graph-dialog.glade: Remove obsolete buttons (Add, Remove, Cancel).
Diffstat (limited to 'grapher')
-rw-r--r--grapher/GraphWidget.cxx68
-rw-r--r--grapher/GraphWidget.hxx8
-rw-r--r--grapher/graph-dialog.glade71
3 files changed, 47 insertions, 100 deletions
diff --git a/grapher/GraphWidget.cxx b/grapher/GraphWidget.cxx
index 9d5e12f8..db325d83 100644
--- a/grapher/GraphWidget.cxx
+++ b/grapher/GraphWidget.cxx
@@ -52,26 +52,19 @@ namespace systemtap
_refXmlDataDialog = Gnome::Glade::Xml::create(PKGDATADIR "/graph-dialog.glade");
_refXmlDataDialog->get_widget("dialog1", _dataDialog);
Gtk::Button* button = 0;
- _refXmlDataDialog->get_widget("cancelbutton1", button);
+ _refXmlDataDialog->get_widget("closebutton1", button);
button->signal_clicked()
.connect(sigc::mem_fun(*this, &GraphWidget::onDataDialogCancel),
false);
- // XXX
- _refXmlDataDialog->get_widget("okbutton1", button);
- button->signal_clicked()
- .connect(sigc::mem_fun(*this, &GraphWidget::onDataDialogCancel),
- false);
- _refXmlDataDialog->get_widget("button1", button);
- button->signal_clicked()
- .connect(sigc::mem_fun(*this, &GraphWidget::onDataAdd), false);
- _refXmlDataDialog->get_widget("button2", button);
- button->signal_clicked()
- .connect(sigc::mem_fun(*this, &GraphWidget::onDataRemove), false);
_refXmlDataDialog->get_widget("treeview1", _dataTreeView);
- _dataDialog->signal_map()
+ _dataDialog->signal_show()
.connect(sigc::mem_fun(*this, &GraphWidget::onDataDialogOpen));
+ _dataDialog->signal_hide()
+ .connect(sigc::mem_fun(*this, &GraphWidget::onDataDialogClose));
_listStore = Gtk::ListStore::create(_dataColumns);
_dataTreeView->set_model(_listStore);
+ _dataTreeView->append_column_editable("Enabled",
+ _dataColumns._dataEnabled);
_dataTreeView->append_column("Data", _dataColumns._dataName);
_dataTreeView->append_column("Title", _dataColumns._dataTitle);
_refXmlDataDialog->get_widget("checkbutton1", _relativeTimesButton);
@@ -275,23 +268,6 @@ namespace systemtap
_dataDialog->hide();
}
- void GraphWidget::onDataAdd()
- {
- Glib::RefPtr<Gtk::TreeSelection> treeSelection =
- _dataTreeView->get_selection();
- Gtk::TreeModel::iterator iter = treeSelection->get_selected();
- if (iter)
- {
- Gtk::TreeModel::Row row = *iter;
- shared_ptr<GraphDataBase> data = row[_dataColumns._graphData];
- _activeGraph->addGraphData(data);
- }
- }
-
- void GraphWidget::onDataRemove()
- {
- }
-
void GraphWidget::onDataDialogOpen()
{
_listStore->clear();
@@ -306,7 +282,20 @@ namespace systemtap
if (!(*itr)->title.empty())
row[_dataColumns._dataTitle] = (*itr)->title;
row[_dataColumns._graphData] = *itr;
+ Graph::DatasetList& gsets = _activeGraph->getDatasets();
+ Graph::DatasetList::iterator setItr
+ = find(gsets.begin(), gsets.end(), *itr);
+ row[_dataColumns._dataEnabled] = (setItr != gsets.end());
}
+ _listConnection =_listStore->signal_row_changed()
+ .connect(sigc::mem_fun(*this, &GraphWidget::onRowChanged));
+
+ }
+
+ void GraphWidget::onDataDialogClose()
+ {
+ if (_listConnection.connected())
+ _listConnection.disconnect();
}
bool GraphWidget::onHoverTimeout()
@@ -364,4 +353,23 @@ namespace systemtap
_displayRelativeTimes = _relativeTimesButton->get_active();
queue_draw();
}
+
+ void GraphWidget::onRowChanged(const Gtk::TreeModel::Path&,
+ const Gtk::TreeModel::iterator& litr)
+ {
+ Gtk::TreeModel::Row row = *litr;
+ bool val = row[_dataColumns._dataEnabled];
+ shared_ptr<GraphDataBase> data = row[_dataColumns._graphData];
+ Graph::DatasetList& graphData = _activeGraph->getDatasets();
+ if (val
+ && find(graphData.begin(), graphData.end(), data) == graphData.end())
+ {
+ _activeGraph->addGraphData(data);
+ }
+ else if (!val)
+ {
+ graphData.erase(remove(graphData.begin(), graphData.end(), data),
+ graphData.end());
+ }
+ }
}
diff --git a/grapher/GraphWidget.hxx b/grapher/GraphWidget.hxx
index ea10720c..146a08c3 100644
--- a/grapher/GraphWidget.hxx
+++ b/grapher/GraphWidget.hxx
@@ -18,10 +18,12 @@ namespace systemtap
public:
DataModelColumns()
{
+ add(_dataEnabled);
add(_dataName);
add(_dataTitle);
add(_graphData);
}
+ Gtk::TreeModelColumn<bool> _dataEnabled;
Gtk::TreeModelColumn<Glib::ustring> _dataName;
Gtk::TreeModelColumn<Glib::ustring> _dataTitle;
Gtk::TreeModelColumn<std::tr1::shared_ptr<GraphDataBase> > _graphData;
@@ -64,9 +66,8 @@ namespace systemtap
Gtk::Dialog* _dataDialog;
Gtk::TreeView* _dataTreeView;
void onDataDialogCancel();
- void onDataAdd();
- void onDataRemove();
void onDataDialogOpen();
+ void onDataDialogClose();
bool onHoverTimeout();
DataModelColumns _dataColumns;
Glib::RefPtr<Gtk::ListStore> _listStore;
@@ -81,6 +82,9 @@ namespace systemtap
Gtk::CheckButton* _relativeTimesButton;
bool _displayRelativeTimes;
void onRelativeTimesButtonClicked();
+ void onRowChanged(const Gtk::TreeModel::Path&,
+ const Gtk::TreeModel::iterator&);
+ sigc::connection _listConnection;
};
}
#endif // SYSTEMTAP_GRAPHWIDGET_H
diff --git a/grapher/graph-dialog.glade b/grapher/graph-dialog.glade
index 85c10128..8076d2b0 100644
--- a/grapher/graph-dialog.glade
+++ b/grapher/graph-dialog.glade
@@ -31,29 +31,15 @@
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="cancelbutton1">
+ <widget class="GtkButton" id="closebutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
+ <property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
- <property name="response_id">-6</property>
- <signal name="clicked" handler="on_cancelbutton1_clicked" last_modification_time="Fri, 07 Aug 2009 10:05:21 GMT"/>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="okbutton1">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-5</property>
+ <property name="response_id">-7</property>
<signal name="clicked" handler="on_okbutton1_clicked" last_modification_time="Fri, 07 Aug 2009 10:05:04 GMT"/>
</widget>
</child>
@@ -128,57 +114,6 @@
<property name="fill">True</property>
</packing>
</child>
-
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkButton" id="button1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="on_button1_clicked" last_modification_time="Fri, 07 Aug 2009 10:05:30 GMT"/>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkButton" id="button2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="on_button2_clicked" last_modification_time="Fri, 07 Aug 2009 10:05:46 GMT"/>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
</widget>
<packing>
<property name="padding">0</property>