summaryrefslogtreecommitdiffstats
path: root/grapher/GraphWidget.cxx
Commit message (Collapse)AuthorAgeFilesLines
* grapher: remove _zoomFactor from horizontal scaling calculationTim Moore2009-12-231-4/+12
| | | | | | | | | | | | This makes zooming more consistent and less buggy. * grapher/Graph.cxx (Graph::draw): Set graph time spread using _zoomFactor. * grapher/Graph.hxx (Graph::getHorizontalScale): no _zoomFactor * grapher/GraphWidget.cxx (on_motion_notify_event): Dragging increment uses _zoomFactor. (on_scroll_event): Set extents after changing the zoom factor with the scroll wheel.
* grapher: scroll continuously with timeTim Moore2009-12-231-20/+5
| | | | | | | | | | | | | | | Don't scale graph based on how much data will fit. This didn't work very well and resulted in distracting, weird scale changes. We now assume that scripts output their time (x axis) in milliseconds. * grapher/Graph.hxx (setCurrentTime): New function. * grapher/Graph.cxx (Graph::draw): Assume a fixed default scale of 1 pixel = 5 milliseconds and don't do any autoscaling. * grapher/GraphWidget.cxx (GraphWidget constructor): Set global time base on startup. (on_expose_event): Don't search graphs for earliest time. * grapher/GraphWidget.hxx (_timeBaseInitialized): delete * grapher/Time.hxx: new file; interface to timeval.
* change namespace indentation to 0Tim Moore2009-12-211-355/+355
| | | | | A silly change, but this works better with other tools, like git diff. I should have started the C++ files this way.
* refactor list of data sets out of GraphWidget into a global data structure.Tim Moore2009-12-081-14/+38
| | | | | | | | | | | | | | Also, add a sigc signal for broadcasting data set changes. * grapher/GraphData.hxx (GraphDataList) new typedef (getGraphData, graphDataSignal): new functions * grapher/Graph.hxx (DatasetList): remove typedef in favor of systemtap::GraphDataList * grapher/GraphWidget.cxx (GraphWidget, onGraphDataChanged): Use graphDataSignal to notice new data sets that need to be added. Use the global data set list instead of one embedded in GraphWidget. * grapher/StapParser.hxx: delete the _widget member; use signals to broadcast that there are new data sets instead of calling into the widget.
* add copyright and license to grapher filesTim Moore2009-12-071-0/+8
|
* make the list items in the data set list unselectableTim Moore2009-12-071-1/+7
| | | | | | | | | | The checkbox selects the list, so it is just sloppy to allow the item to be selected. * grapher/GraphWidget.hxx (no_select_fun): New function; just returns false. * grapher/GraphWidget.cxx (GraphWidget): Connect list store selection to function that prevents selection.
* Change data set list display to use a check box for inclusion in a graphTim Moore2009-12-071-30/+38
| | | | | | | | | | | | | | | | | 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).
* option to display graph times relative to the start timeTim Moore2009-12-071-4/+42
| | | | | | | | | | | | | | | | | | | | | | | This avoids having humongous numbers displayed on the graphs' x axis. Also, the dialog for adding a data set to a graph was cleaned up. * grapher/graph-dialog.glade: Add check box for display of relative time and a label for the data set list. Force the list of data sets to be larger. * grapher/Graph.hxx (_timeBase): new member * grapher/Graph.cxx (draw): Subtract _timeBase from displayed time value. * grapher/GraphWidget.hxx (DataModelColumns): Add a column for a data set's title, which is optional at the moment. * grapher/GraphWidget.hxx (_globalTimeBase, _timeBaseInitialized, _relativeTimesButton, _displayRelativeTimes): new members * grapher/GraphWidget.hxx (GraphWidget): Hook up check button for displaying relative time. (on_expose_event): Determine base time if needed; set base time in graphs. (onDataDialogOpen): Insert graph data set's name (key) and title into the list of data sets.
* Add a missing cairo context restore()Tim Moore2009-12-071-0/+1
| | | | | | | It's not clear if this was causing any ill effects, but it is certainly bad form. * grapher/GraphWidget.cxx (on_expose_event): add missing cr->restore().
* Add new graph output to the last graphTim Moore2009-12-041-1/+1
|
* hover text on the additional graphsTim Moore2009-12-041-1/+9
| | | | | | | | | * grapher/Graph.cxx (window2GraphCoords): Take the entire graph's position into account too. * grapher/GraphWidget.cxx (GraphWidget): Hook up the data dialog's OK button. (onDataDialogOpen): If a data set doesn't have a title, use it's name (key) instead.
* support multiline data output from scripts run under the grapherTim Moore2009-12-041-1/+1
| | | | | | | | | | | | | | This is accompanied by support for multiline output in hover text. * grapher/StapParser.cxx (ioCallback): Read data 'til the end of line character, not just '\n'. Be careful to use I/O functions that don't treat '\n' specially. * grapher/StapParser.hxx: ditto * grapher/CairoWidget.cxx (CairoTextBox::draw): Perform line breaks for hover text. * testsuite/systemtap.examples/general/grapher.stp: Do multiline output of keyboard events. Also, fix longstanding breaking in the pty probe.
* Make the hover text conform to data displayed.Tim Moore2009-12-021-12/+15
| | | | | | | | | Start of code to be more selective about the association between the hover text and the underling graph. Also, show the data set name in hover text. * grapher/GraphStyle.hxx (dataIndexAtPoint): New virtual function. * grapher/GraphStyle.cxx (dataIndexAtPoint): Implementation for bar graphs * grapher/GraphWidget.cxx (onHoverTimeout): Use dataIndexAtPoint.
* Add hover text to the graph.Tim Moore2009-12-011-38/+70
| | | | | | | | | | | | | | When the graph display is paused, leaving the mouse stationary over the graph will display the data point under the pointer. * grapher/CairoWidget.hxx (CairoTextBox): new class (CairoWidget, CairoPlayButton): refector some play button-specific things from CairoWidget to CairoPlayButton. * grapher/CairoWidget.cxx (CairoTextBox::draw): new function. * grapher/GraphWidget.hxx (GraphWidget): new members for supporting hover text. * grapher/GraphWidget.cxx (on_motion_notify_event): Set up hover text box. (establishHoverTimeout, onHoverTimeout, getGraphUnderPoint): new functions.
* cleanup of graph data parser, using Boost functions where usefulTim Moore2009-10-141-1/+1
| | | | | | * grapher/StapParser.cxx (commaSplit): Use Boost string split function (findTaggedValue): Return bool instead of position (ioCallback): Avoid using hard-coded string lengths
* cleanup of graph data dialogTim Moore2009-09-301-3/+16
| | | | | * grapher/GraphWidget.cxx (on_button_release_event, onDataAdd): tweaks for graph data dialog
* Create lists of graph data to chooseTim Moore2009-09-301-0/+15
|
* Add graph data chooser window, based on gladeTim Moore2009-09-301-3/+59
| | | | | | | | | | | | | * configure.ac: Test for libglademm * grapher/GraphWidget.hxx (DataModelColumns): new class (onDataDialogCancel, void onDataAdd, onDataRemove, onDataDialogOpen): new methods * grapher/GraphWidget.cxx: ditto; methods for the graph data dialog. * grapher/graph-dialog.glade: New file. * grapher/graph-dialog.gladep: New file. * grapher/Makefile.am (dist_pkgdata_DATA): add graph-dialog.glade to installation. * grapher/GraphWidget.cxx (GraphWidget constructor): Use PKGDATADIR
* more multiple graph fixesTim Moore2009-09-301-3/+7
| | | | | | * grapher/Graph.cxx (Graph constructor): set _drawX, _drawY * grapher/GraphWidget.cxx (addGraph): Fix graph layout (on_button_press_event): Fix test of play button in multiple graphs
* Draw multiple graphsTim Moore2009-09-301-3/+23
| | | | | | | | | | | | | | * grapher/Graph.cxx (Graph constructor): Initialize graph dimensions. (draw): Don't clear the drawing area. * grapher/GraphWidget.hxx (GraphWidget): Add dimensions and on_size_request() method. * grapher/GraphWidget.cxx (GraphWidget constructor): Initialize dimensions. (addGraph): New method. (on_size_request): New method to pass widget's size to parent widgets * grapher/grapher.cxx (GrapherWindow constructor): add "add graph" action. (addGraph): New method.
* Initialize CairoWidget origin of graphTim Moore2009-09-161-1/+3
| | | | | | | * grapher/Graph.hxx (Graph constructor): add origin arguments * grapher/Graph.cxx: ditto * grapher/GraphWidget.cxx (on_expose_event): Use CairoWidget origin to position graphs.
* Fix grapher compilation warnings from rpm buildJosh Stone2009-08-041-7/+0
| | | | | | * grapher/Graph.cxx (Graph::Graph): Initialize in declaration order. * grapher/GraphWidget.cxx (GraphWidget::on_expose_event): Remove several unused local variables.
* Support for presenting multiple graphsTim Moore2009-07-281-241/+53
| | | | | | | | | | | | | | | | | | | | * 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.
* Templatize GraphDataTim Moore2009-07-281-23/+62
| | | | | | | | | | | | | | | | * grapher/GraphData.hxx (GraphDataBase): new superclass for GraphData. Split time data out as a separate vector. (GraphData): Rewrite as template. * grapher/GraphWidget.cxx (on_expose_event): Reflect GraphData templatization. Handle events with string values. * grapher/GraphWidget.hxx (GraphWidget): Keep pointers to GraphDataBase objects instead of GraphData. * grapher/StapParser.cxx (parseData): new member function (ioCallback): Handle new discreet event * grapher/StapParser.hxx (StapParser): keep pointers to GraphDataBase objects instead of GraphData * testsuite/systemtap.examples/general/grapher.stp: Display actual key pressed for keyboard event
* Tweaks to grapher axis drawingTim Moore2009-07-281-7/+15
| | | | | * grapher/GraphWidget.cxx (on_expose_event): Don't draw axis labels that would overlap others.
* Initialize variables in GraphWidget::on_motion_notify_event().William Cohen2009-05-141-2/+2
|
* Have appropriate types and cast to allow compilation on RHEL-5.William Cohen2009-04-201-4/+4
|
* Move grapher to subdirectoryTim Moore2009-04-201-0/+323