GraphPanel widget: use the same axis optimisation algorithm for linear and logarithmic axes (#1412). We used to try to be too ‘clever’, but it wasn’t working (!!). Indeed, say that you had an axis with values between 14.896525 and 49.408874, then our old optimisation would tell us to use an axis range of [10; 60] while ideally it would be [14; 50], as for a linear axis. In the end, the algorithm for optimising linear axes seems to also work for logarithmic axes, so we are going to use that algorithm instead (unless we eventually find out it’s not working in some cases). (commit: bfa0143)
SimulationExperiment view: don't update a graph plot's axes when changing some of the simulation parameters (#1412). Indeed, this makes things unnecessarily difficult if we want to support log scales. (commit: 7486c95)
SimulationExperiment view: don't update a graph plot's axes when changing some of the simulation parameters (#1412). Indeed, this makes things unnecessarily difficult if we want to support log scales. (commit: c3e5934)
Reverted commits 7486c95 and c3e5934 (#1412). I clearly didn’t think it through. The first commit made things quite worse when it comes to running some simulations. By default, the X axis would have a range of [0; 1000], but if the user was to specify a simulation that goes from 0 to 100,000, then the X axis would keep growing as the simulation would be run… which would make things unnecessarily slow and not graphically pleasant… (commit: 5abb1ad)
GraphPanel widget: added support for log scales in GraphPanelPlotWidget::updateActions() and GraphPanelPlotWidget::checkAxisValues() (#1412). (commit: 8cf64f4)
GraphPanel widget: simplified the optimisation of axes (#1412). We used to optimise an axis' values by making sure that they would fall onto a factor of its minor step. This was working fine with linear axes, but this is next to impossible to get to work with log axes. So, now, the only 'optimisation' is to handle the case where the minimum and maximum values of an axis are the same. (commit: e88ef6f)
Slight reworking of SimulationExperimentViewSimulationWidget::simulationPropertyChanged() (#1412). This is so that if the user changes the point interval and that we are using a log scale, then the axes can be updated accordingly, if needed. For example, say that the X axis uses the [0; 1000] range and that we have a point interval of 0.1, then a log scale will result in the X axis actually using the [0.1; 1000] range. (commit: 3f8a632)
GraphPanel widget: get GraphPanelPlotWidget::dataRect() and GraphPanelPlotWidget::dataLogRect() to tell us whether they are returning something meaningful (#1412). Indeed, the problem was that when running a simulation with a big simulation delay, then the first time we would call GraphPanelPlotWidget::dataRect() or GraphPanelPlotWidget::dataLogRect(), we would end up with QRectF(minX, minY, maxX-minX, maxY-minY) where minX = maxX and minY = maxY, which when tested using QRectF::isNull() would return true while we didn't want that. Although the values result in 'null', they are actually meaningful to us. (commit: 6e90896)
GraphPanel widget: get GraphPanelPlotWidget::dataRect() and GraphPanelPlotWidget::dataLogRect() to tell us whether they are returning something meaningful (#1412). Indeed, the problem was that when running a simulation with a big simulation delay, then the first time we would call GraphPanelPlotWidget::dataRect() or GraphPanelPlotWidget::dataLogRect(), we would end up with QRectF(minX, minY, maxX-minX, maxY-minY) where minX = maxX and minY = maxY, which when tested using QRectF::isNull() would return true while we didn't want that. Although the values result in 'null', they are actually meaningful to us. (commit: 9f7429f)