summaryrefslogtreecommitdiffstats
path: root/grapher/GraphWidget.hxx
diff options
context:
space:
mode:
authorTim Moore <timoore@redhat.com>2009-07-27 12:46:30 +0200
committerTim Moore <timoore@redhat.com>2009-07-28 11:21:15 +0200
commit364ad890e341bb60ae169af69933a382d4bf9f81 (patch)
tree4b2fb5eb5644bdebc38b935077fa96ace8d831c5 /grapher/GraphWidget.hxx
parenta030ced8c0b8109ba7b23bbbc65deddf88154a2f (diff)
downloadsystemtap-steved-364ad890e341bb60ae169af69933a382d4bf9f81.tar.gz
systemtap-steved-364ad890e341bb60ae169af69933a382d4bf9f81.tar.xz
systemtap-steved-364ad890e341bb60ae169af69933a382d4bf9f81.zip
Support for presenting multiple graphs
* grapher/Graph.hxx: New file; class for single graph display. * grapher/Graph.cxx: New file. * grapher/GraphData.hxx: Associate title and axis labels with graph data and not a graph display. * grapher/GraphWidget.hxx: Move graph-related members to Graph class. * grapher/GraphWidget.cxx (getExtents, setExtents): Move to Graph class (on_expose_event): Move graph rendering to Graph. (on_button_press_event): Delegate to Graph. (on_motion_notify_event, on_scroll_event): Modify "active" graph. * grapher/StapParser.cxx (findTaggedValue): New parsing helper function. (io_callback): Support new syntax where properties are attached to graph data and not the entire graph. * grapher/grapher.cxx (GrapherWindow): Don't set graph values. * grapher/Makefile.am: Add Graph.cxx. * testsuite/systemtap.examples/general/grapher.stp: New property syntax.
Diffstat (limited to 'grapher/GraphWidget.hxx')
-rw-r--r--grapher/GraphWidget.hxx36
1 files changed, 9 insertions, 27 deletions
diff --git a/grapher/GraphWidget.hxx b/grapher/GraphWidget.hxx
index 86ba771d..c15f8fcd 100644
--- a/grapher/GraphWidget.hxx
+++ b/grapher/GraphWidget.hxx
@@ -6,7 +6,7 @@
#include <tr1/memory>
#include <gtkmm/drawingarea.h>
-#include "GraphData.hxx"
+#include <Graph.hxx>
namespace systemtap
{
@@ -18,19 +18,15 @@ namespace systemtap
GraphWidget();
virtual ~GraphWidget();
void addGraphData(std::tr1::shared_ptr<GraphDataBase> data);
- void getExtents(double& left, double& right, double& top, double& bottom) const;
- void setExtents(double left, double right, double top, double bottom);
- double getLineWidth() { return _lineWidth; }
- void setLineWidth(double lineWidth) { _lineWidth = lineWidth; }
- bool getAutoScaling() const { return _autoScaling; }
- void setAutoScaling(bool val) { _autoScaling = val; }
- std::string getTitle() const { return _title; }
- void setTitle(const std::string& title) { _title = title; }
- std::string getXAxisText() const { return _xAxisText; }
- void setXAxisText(const std::string& text) { _xAxisText = text; }
- std::string getYAxisText() const { return _yAxisText; }
- void setYAxisText(const std::string& text) { _yAxisText = text; }
+
protected:
+ typedef std::vector<std::tr1::shared_ptr<Graph> > GraphList;
+ GraphList _graphs;
+ // For click and drag
+ std::tr1::shared_ptr<Graph> _activeGraph;
+ // Dragging all graphs simultaneously, or perhaps seperately
+ typedef std::vector<std::pair<double, double> > DragList;
+ DragList dragCoords;
//Override default signal handler:
virtual bool on_expose_event(GdkEventExpose* event);
virtual bool on_motion_notify_event(GdkEventMotion* event);
@@ -38,25 +34,11 @@ namespace systemtap
virtual bool on_button_release_event(GdkEventButton* event);
virtual bool on_scroll_event(GdkEventScroll* event);
bool on_timeout();
- typedef std::vector<std::tr1::shared_ptr<GraphDataBase> > DatasetList;
- DatasetList _datasets;
- double _left;
- double _right;
- double _top;
- double _bottom;
- double _lineWidth;
- bool _autoScaling;
- bool _autoScrolling;
- double _zoomFactor;
bool _trackingDrag;
double _dragOriginX;
double _dragOriginY;
double _dragOrigLeft;
double _dragOrigRight;
- std::string _title;
- std::string _xAxisText;
- std::string _yAxisText;
- std::tr1::shared_ptr<CairoPlayButton> _playButton;
};
}
#endif // SYSTEMTAP_GRAPHWIDGET_H