From ea5a9a16bb202859a77f86372fb0f002ac364c95 Mon Sep 17 00:00:00 2001 From: Martyn Gigg Date: Fri, 28 Nov 2014 10:18:32 +0000 Subject: [PATCH] Add normalization options to graph context menu. Refs #10639 --- .../MantidPlot/src/ApplicationWindow.cpp | 5 +++ Code/Mantid/MantidPlot/src/Graph.cpp | 32 ++++++++++++++++++- Code/Mantid/MantidPlot/src/Graph.h | 6 +++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp b/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp index 192f47ea37e6..2a600dd7da30 100644 --- a/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp +++ b/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp @@ -10054,6 +10054,7 @@ void ApplicationWindow::showGraphContextMenu() QMenu axes(this); QMenu colour(this); + QMenu normalization(this); QMenu exports(this); QMenu copy(this); QMenu prints(this); @@ -10097,6 +10098,10 @@ void ApplicationWindow::showGraphContextMenu() colour.insertItem(tr("&Linear"), ag, SLOT(linColor())); cm.insertItem(tr("&Color Bar"), &colour); + normalization.insertItem(tr("N&one"), ag,SLOT(noNormalization())); + normalization.insertItem(tr("&Bin Width"), ag, SLOT(binWidthNormalization())); + cm.insertItem(tr("&Normalization"), &normalization); + cm.insertSeparator(); copy.insertItem(tr("&Layer"), this, SLOT(copyActiveLayer())); copy.insertItem(tr("&Window"), plot, SLOT(copyAllLayers())); diff --git a/Code/Mantid/MantidPlot/src/Graph.cpp b/Code/Mantid/MantidPlot/src/Graph.cpp index 3c87a1bc851d..1c4a3d36e96b 100644 --- a/Code/Mantid/MantidPlot/src/Graph.cpp +++ b/Code/Mantid/MantidPlot/src/Graph.cpp @@ -5978,7 +5978,33 @@ void Graph::enableFixedAspectRatio(bool on) } #else UNUSED_ARG(on) -#endif + #endif +} + +/** + * Turn off any normalization + */ +void Graph::noNormalization() +{ + if(!m_isDistribution) return; // Nothing to do + + m_isDistribution = false; + updateDataCurves(); + d_plot->updateAxes(); + notifyChanges(); +} + +/** + * Turn on normalization by bin width if it is appropriate + */ +void Graph::binWidthNormalization() +{ + if(m_isDistribution) return; // Nothing to do + + m_isDistribution = true; + updateDataCurves(); + d_plot->updateAxes(); + notifyChanges(); } void Graph::setWaterfallXOffset(int offset) @@ -6089,7 +6115,11 @@ void Graph::updateDataCurves() if (DataCurve *c = dynamic_cast(pc)) c->loadData(); else if (MantidMatrixCurve *mc = dynamic_cast(pc)) + { + mc->setDrawAsDistribution(m_isDistribution); + mc->invalidateBoundingRect(); mc->loadData(); + } } QApplication::restoreOverrideCursor(); } diff --git a/Code/Mantid/MantidPlot/src/Graph.h b/Code/Mantid/MantidPlot/src/Graph.h index 7ea336593f21..c9c2b8229645 100644 --- a/Code/Mantid/MantidPlot/src/Graph.h +++ b/Code/Mantid/MantidPlot/src/Graph.h @@ -198,9 +198,13 @@ public slots: void enablePanningMagnifier(bool on = true); bool isFixedAspectRatioEnabled(); void enableFixedAspectRatio(bool on); + + void noNormalization(); + void binWidthNormalization(); + // Are MantidCurves plotted as distributions in this Graph bool isDistribution()const{return m_isDistribution;} - + //! Accessor method for #d_plot. Plot* plotWidget(){return d_plot;};