Implement minor ticks.
There is lots of duplicated code in the derived classes that could be moved to the base.
Should implemented method hasSelectedViews() since in a number of places the implementation calls selectedViews only to ask if vector is empty.
@@ Be able to ask canvas if it is saved from Python.
Make it a setting if the Inspector window comes up automatically or not.
Respond to Page Up and Page Down keys.
Needs something to display on the canvas for values only seen in the Inspector. One example is the name of a DataSource file file. This is so that the document when printed can be more useful as a stand alone.
Use Qt's network example ftpclient to open files via ftp.
This is the only place where know we are using Qt XML support. It would be abstracted to a factory. Should also be in the CanvasView and not this class so it could be used by other windows.
Probably should remove this method or make it private.
Unlike the class it inherits from, this class doesn't currently support the drawing of error bars. Or, maybe a class that can draw error bars should be a derived class of one that only draws symbols.
This implementation depends on parent widget being CanvasWindow, thus making a circular dependency. There ought to be a way to fix it. Or at least depend only on QMainWindow.
The implementation uses QtView, thus should be moved to CanvasView.
The implementation uses QtView, thus should be moved to CanvasView.
Fix it so that more than one white space could be in string.
Check of DISTANCE_DEFECT workaround works or find better way.
Only QtDisplay uses this class, maybe it could be eliminated.
Expand to data types other than double.
Provide a numeric method for doing this calculation that will be the default. Derived classes should provide more efficient analytic method if available.
DisplayController shouldn't need to know about the DataRepFactory. Should probably move methods that use it to DataRepController.
Shouldn't const_cast<BinToColor *> the return value from getValueRep() of the plotter object in the setValueBrkPt member function. A member function returning a non const pointer to a BinToColor object should be implemented in the PlotterBase class and that should be used in the setValueBrkPt member function.
This method has a lot of duplicated code from the one with the same name but only one color. One should remove the duplication.
The draw triangle methods have duplicated code which could be removed.
Determine if this member function is no longer needed.
The draw triangle methods have duplicated code which could be removed.
Determine if this member function is no longer needed.
The draw triangle methods have duplicated code which could be removed.
Determine if this member function is no longer needed.
The draw triangle methods have duplicated code which could be removed.
Determine if this member function is no longer needed.
We may have function like this that takes pointer to member function of QPainter as first argument.
Should style and color arguments be used?
Report any error conditions.
One error condition is saving on top of existing file.
Need ability to group and un-group items.
add page by adding another standard size page (either A4 or US Letter depending on preferences set somewhere.
Add the `.ps' subscript to the file name if missing.
Add the `.ps' subscript to the file name if missing.
The error on the value has needs to be tested.
The scaling needs to be tested.
Handle too many ticks better, rather than doing nothing. See more detailed comment in code.
Do not use sprintf, it cause warnings from VS 8.
This is an ugly way to display scientific notation. Can we improve it?
Use C++ stringstream insted of sprintf().
Remove duplicated code that is also in NTupleProjector.
Fetch the column vector by binding instead of label.
Should be able to reuse global functions instead of implementation here.
this should be computed externally with the iterators
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Resolve if this method should be done exterior to the projector class by a functor using iterators.
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Should be changed to getDatSource().
Return positive value from the binner.
Redesign to avoid duplicated code with Hist1DProjector.
In Stats tabbed panel, should add a feature of a composite text rep that combines the single TextRep objects into a composite.
When the size of the labels of the function parameters changes, the sliders change as well. GUI bug. low priority to fix.
In cuts tabbed panel, the upper box gets updated when cut range changed even when it hasn't changed.
Replace the ComboBox objects in the Cut inspector with lists. Then the user can see in one glance all the cuts on a plot. There usually will not be that many of them.
For check boxes, should use clicked signal instead of toggled so that the check box can be set to a value without emitting a signal.
On the Cuts tabbed pane, does the Replace button make sense. What if selected plot has multiple cuts, which one to replace.
On the Inspector data tabbed panel, should leave the four binding options on all the time and disable the ones that are not used. This way there would be less flicker.
In Inspector stats tabbed panel, add average Z if plot has Z axis.
The multicative factor the implementation might be considered a kludge. Might there be a better way.
The final solution for the comparison works when the depth is a very small number compared the the values. Is there a better numeric way.
Write a FileIconProvider so that QFileDialog can highlight known file types.
Could implement addRow()
Generalize the containment of axis model to n-dimension.
This class should probably inherit from DataSource controller as it delegates some member functions to that class and uses it often. However, DataSourceController wants to be singleton, so can we have derived classes of singleton?
We don't have a copy constructor. Determine if that a problem?
This class is too big for the base class. For example, TextRepBase is implementing functions it doesn't have to. Should have a RepBase class.
Must of the implementation is the same ash the Hist2DProjector. One should be able to make a BinningProjector class which is the overlap of the current two and differ in only the kind of binner they have.
Could make this a derived class of FunctionRep so that methods that do not need wrapping could be called directly.
Too may try/catch blocks. All exception inherit from std::exception, so why not put one static function to take care of the exceptions and qApp lock/unlock.
This class can go away.
Change design: this method is identical to one in Hist2DProjector.
Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.
Avoid duplicated code in Hist2DProjector.
This function should go away in favor of one taking string for axis argument.
Check that display can do it.
Use Axes::convert.
Remove duplicated code compared to DisplayController::setBinWidth.
Change design: this method is identical to one in Hist2DProjector.
use Axes::convert.
Had to put std:: in here for Sun's CC, but not in AxisModelxxx. So there must be a better fix.
Could add diamond.
The amount of stuff this class inherits and doesn't use is another sign that the PlotterBase is too heavy. For example, everything dealing with the axes are only needed by the XYPlotter.
When a Coordinate class is implemented, we can replace many functions below with ones that take a Coordinate as an argument.
Resolve if this method should be here.
Why doesn't getXXXRect() return reference?
There are circular references between WindowController and CanvasWindow. Probably, WindowController should be an observer of CanvasWindow or the methods of the WindowController should be static methods of the CanvasWindow.
When multiple DataRep objects are contained by the plotter, one could set the title from one of them.
This class should go away.
Fix a bug in reading a document as the point size does not get restored.
Allow one to use another column as the error on a value. Don't forget to implement hasErrorDisplay() after doing so.