[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot/histogram_chart] src: removing unwanted functions from histogram files
From: Anu Mittal <anu22mittal () gmail ! com>
Date: 2016-06-27 14:09:18
Message-ID: E1bHXDy-0000QE-Gj () code ! kde ! org
[Download RAW message or body]
Git commit 3caee898c73a9ab2a840acfca4b988e3858e45b2 by Anu Mittal.
Committed on 27/06/2016 at 14:08.
Pushed by anumittal into branch 'histogram_chart'.
removing unwanted functions from histogram files
M +1 -0 src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
M +126 -1012 src/backend/worksheet/plots/cartesian/Histogram.cpp
M +11 -94 src/backend/worksheet/plots/cartesian/Histogram.h
M +11 -47 src/backend/worksheet/plots/cartesian/HistogramPrivate.h
M +339 -357 src/kdefrontend/dockwidgets/HistogramDock.cpp
M +10 -82 src/kdefrontend/dockwidgets/HistogramDock.h
http://commits.kde.org/labplot/3caee898c73a9ab2a840acfca4b988e3858e45b2
diff --git a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp \
b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp index be3abac..9d3ae7f \
100644
--- a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
+++ b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
@@ -31,6 +31,7 @@
#include "CartesianPlotPrivate.h"
#include "Axis.h"
#include "XYCurve.h"
+#include "Histogram.h"
#include "XYEquationCurve.h"
#include "XYFitCurve.h"
#include "XYFourierFilterCurve.h"
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.cpp \
b/src/backend/worksheet/plots/cartesian/Histogram.cpp index efa8d05..46be04f 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.cpp
+++ b/src/backend/worksheet/plots/cartesian/Histogram.cpp
@@ -39,8 +39,10 @@
#include "backend/worksheet/plots/AbstractCoordinateSystem.h"
#include "backend/worksheet/plots/cartesian/CartesianCoordinateSystem.h"
#include "backend/worksheet/plots/cartesian/CartesianPlot.h"
+#include "backend/worksheet/plots/AbstractPlotPrivate.h"
#include "backend/lib/commandtemplates.h"
#include "backend/worksheet/Worksheet.h"
+#include "backend/core/Project.h"
#include "backend/lib/XmlStreamReader.h"
#include <QGraphicsDropShadowEffect>
@@ -87,30 +89,6 @@ void Histogram::init(){
d->xColumn = NULL;
d->yColumn = NULL;
- d->lineType = (Histogram::LineType) group.readEntry("LineType", \
(int)Histogram::Line);
- d->lineSkipGaps = group.readEntry("SkipLineGaps", false);
- d->lineInterpolationPointsCount = group.readEntry("LineInterpolationPointsCount", \
1);
- d->linePen.setStyle( (Qt::PenStyle) group.readEntry("LineStyle", \
(int)Qt::SolidLine) );
- d->linePen.setColor( group.readEntry("LineColor", QColor(Qt::black)) );
- d->linePen.setWidthF( group.readEntry("LineWidth", \
Worksheet::convertToSceneUnits(1.0, Worksheet::Point)) );
- d->lineOpacity = group.readEntry("LineOpacity", 1.0);
-
- d->dropLineType = (Histogram::DropLineType) group.readEntry("DropLineType", \
(int)Histogram::NoLine);
- d->dropLinePen.setStyle( (Qt::PenStyle) group.readEntry("DropLineStyle", \
(int)Qt::SolidLine) );
- d->dropLinePen.setColor( group.readEntry("DropLineColor", QColor(Qt::black)));
- d->dropLinePen.setWidthF( group.readEntry("DropLineWidth", \
Worksheet::convertToSceneUnits(1.0, Worksheet::Point)) );
- d->dropLineOpacity = group.readEntry("DropLineOpacity", 1.0);
-
- d->symbolsStyle = (Symbol::Style)group.readEntry("SymbolStyle", \
(int)Symbol::NoSymbols);
- d->symbolsSize = group.readEntry("SymbolSize", Worksheet::convertToSceneUnits(5, \
Worksheet::Point));
- d->symbolsRotationAngle = group.readEntry("SymbolRotation", 0.0);
- d->symbolsOpacity = group.readEntry("SymbolOpacity", 1.0);
- d->symbolsBrush.setStyle( (Qt::BrushStyle)group.readEntry("SymbolFillingStyle", \
(int)Qt::NoBrush) );
- d->symbolsBrush.setColor( group.readEntry("SymbolFillingColor", \
QColor(Qt::black)) );
- d->symbolsPen.setStyle( (Qt::PenStyle)group.readEntry("SymbolBorderStyle", \
(int)Qt::SolidLine) );
- d->symbolsPen.setColor( group.readEntry("SymbolBorderColor", QColor(Qt::black)) \
);
- d->symbolsPen.setWidthF( group.readEntry("SymbolBorderWidth", \
Worksheet::convertToSceneUnits(0.0, Worksheet::Point)) );
-
d->valuesType = (Histogram::ValuesType) group.readEntry("ValuesType", \
(int)Histogram::NoValues); d->valuesColumn = NULL;
d->valuesPosition = (Histogram::ValuesPosition) group.readEntry("ValuesPosition", \
(int)Histogram::ValuesAbove); @@ -133,19 +111,6 @@ void Histogram::init(){
d->fillingSecondColor = group.readEntry("FillingSecondColor", QColor(Qt::black));
d->fillingOpacity = group.readEntry("FillingOpacity", 1.0);
- d->xErrorType = (Histogram::ErrorType) group.readEntry("XErrorType", \
(int)Histogram::NoError);
- d->xErrorPlusColumn = NULL;
- d->xErrorMinusColumn = NULL;
- d->yErrorType = (Histogram::ErrorType) group.readEntry("YErrorType", \
(int)Histogram::NoError);
- d->yErrorPlusColumn = NULL;
- d->yErrorMinusColumn = NULL;
- d->errorBarsType = (Histogram::ErrorBarsType) group.readEntry("ErrorBarsType", \
(int)Histogram::ErrorBarsSimple);
- d->errorBarsCapSize = group.readEntry( "ErrorBarsCapSize", \
Worksheet::convertToSceneUnits(10, Worksheet::Point) );
- d->errorBarsPen.setStyle( (Qt::PenStyle)group.readEntry("ErrorBarsStyle", \
(int)Qt::SolidLine) );
- d->errorBarsPen.setColor( group.readEntry("ErrorBarsColor", QColor(Qt::black)) );
- d->errorBarsPen.setWidthF( group.readEntry("ErrorBarsWidth", \
Worksheet::convertToSceneUnits(0.0, Worksheet::Point)) );
- d->errorBarsOpacity = group.readEntry("ErrorBarsOpacity", 1.0);
-
this->initActions();
}
@@ -198,26 +163,6 @@ BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, \
yColumn, yColumn) QString& Histogram::xColumnPath() const { return \
d_ptr->xColumnPath; } QString& Histogram::yColumnPath() const { return \
d_ptr->yColumnPath; }
-//line
-BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::LineType, lineType, lineType)
-BASIC_SHARED_D_READER_IMPL(Histogram, bool, lineSkipGaps, lineSkipGaps)
-BASIC_SHARED_D_READER_IMPL(Histogram, int, lineInterpolationPointsCount, \
lineInterpolationPointsCount)
-CLASS_SHARED_D_READER_IMPL(Histogram, QPen, linePen, linePen)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, lineOpacity, lineOpacity)
-
-//droplines
-BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::DropLineType, dropLineType, \
dropLineType)
-CLASS_SHARED_D_READER_IMPL(Histogram, QPen, dropLinePen, dropLinePen)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, dropLineOpacity, dropLineOpacity)
-
-//symbols
-BASIC_SHARED_D_READER_IMPL(Histogram, Symbol::Style, symbolsStyle, symbolsStyle)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, symbolsOpacity, symbolsOpacity)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, symbolsRotationAngle, \
symbolsRotationAngle)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, symbolsSize, symbolsSize)
-CLASS_SHARED_D_READER_IMPL(Histogram, QBrush, symbolsBrush, symbolsBrush)
-CLASS_SHARED_D_READER_IMPL(Histogram, QPen, symbolsPen, symbolsPen)
-
//values
BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::ValuesType, valuesType, valuesType)
BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn *, valuesColumn, \
valuesColumn) @@ -242,24 +187,6 @@ CLASS_SHARED_D_READER_IMPL(Histogram, QColor, \
fillingSecondColor, fillingSecondC CLASS_SHARED_D_READER_IMPL(Histogram, QString, \
fillingFileName, fillingFileName) BASIC_SHARED_D_READER_IMPL(Histogram, qreal, \
fillingOpacity, fillingOpacity)
-//error bars
-BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::ErrorType, xErrorType, xErrorType)
-BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, xErrorPlusColumn, \
xErrorPlusColumn)
-QString& Histogram::xErrorPlusColumnPath() const { return \
d_ptr->xErrorPlusColumnPath; }
-BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, xErrorMinusColumn, \
xErrorMinusColumn)
-QString& Histogram::xErrorMinusColumnPath() const { return \
d_ptr->xErrorMinusColumnPath; }
-
-BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::ErrorType, yErrorType, yErrorType)
-BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, yErrorPlusColumn, \
yErrorPlusColumn)
-QString& Histogram::yErrorPlusColumnPath() const { return \
d_ptr->yErrorPlusColumnPath; }
-BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, yErrorMinusColumn, \
yErrorMinusColumn)
-QString& Histogram::yErrorMinusColumnPath() const { return \
d_ptr->yErrorMinusColumnPath; }
-
-BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::ErrorBarsType, errorBarsType, \
errorBarsType)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, errorBarsCapSize, errorBarsCapSize)
-CLASS_SHARED_D_READER_IMPL(Histogram, QPen, errorBarsPen, errorBarsPen)
-BASIC_SHARED_D_READER_IMPL(Histogram, qreal, errorBarsOpacity, errorBarsOpacity)
-
//##############################################################################
//################# setter methods and undo commands ##########################
//##############################################################################
@@ -269,10 +196,10 @@ void Histogram::setXColumn(const AbstractColumn* column) {
if (column != d->xColumn) {
exec(new HistogramSetXColumnCmd(d, column, i18n("%1: assign x values")));
- //emit xDataChanged() in order to notify the plot about the changes
- emit xDataChanged();
+ //emit xHistogramDataChanged() in order to notify the plot about the changes
+ emit xHistogramDataChanged();
if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SIGNAL(xDataChanged())); + connect(column, SIGNAL(dataChanged(const \
AbstractColumn*)), this, SIGNAL(xHistogramDataChanged()));
//update the curve itself on changes
connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(retransform())); @@ -289,10 +216,10 @@ void Histogram::setYColumn(const \
AbstractColumn* column) { if (column != d->yColumn) {
exec(new HistogramSetYColumnCmd(d, column, i18n("%1: assign y values")));
- //emit yDataChanged() in order to notify the plot about the changes
- emit yDataChanged();
+ //emit yHistogramDataChanged() in order to notify the plot about the changes
+ emit yHistogramDataChanged();
if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SIGNAL(yDataChanged())); + connect(column, SIGNAL(dataChanged(const \
AbstractColumn*)), this, SIGNAL(yHistogramDataChanged()));
//update the curve itself on changes
connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(retransform())); @@ -303,107 +230,6 @@ void Histogram::setYColumn(const \
AbstractColumn* column) { }
}
-//Line
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetLineType, Histogram::LineType, lineType, \
updateLines)
-void Histogram::setLineType(LineType type) {
- Q_D(Histogram);
- if (type != d->lineType)
- exec(new HistogramSetLineTypeCmd(d, type, i18n("%1: line type changed")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetLineSkipGaps, bool, lineSkipGaps, updateLines)
-void Histogram::setLineSkipGaps(bool skip) {
- Q_D(Histogram);
- if (skip != d->lineSkipGaps)
- exec(new HistogramSetLineSkipGapsCmd(d, skip, i18n("%1: set skip line gaps")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetLineInterpolationPointsCount, int, \
lineInterpolationPointsCount, updateLines)
-void Histogram::setLineInterpolationPointsCount(int count) {
- Q_D(Histogram);
- if (count != d->lineInterpolationPointsCount)
- exec(new HistogramSetLineInterpolationPointsCountCmd(d, count, i18n("%1: set the \
number of interpolation points")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetLinePen, QPen, linePen, \
recalcShapeAndBoundingRect)
-void Histogram::setLinePen(const QPen &pen) {
- Q_D(Histogram);
- if (pen != d->linePen)
- exec(new HistogramSetLinePenCmd(d, pen, i18n("%1: set line style")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetLineOpacity, qreal, lineOpacity, update);
-void Histogram::setLineOpacity(qreal opacity) {
- Q_D(Histogram);
- if (opacity != d->lineOpacity)
- exec(new HistogramSetLineOpacityCmd(d, opacity, i18n("%1: set line opacity")));
-}
-
-//Drop lines
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetDropLineType, Histogram::DropLineType, \
dropLineType, updateDropLines)
-void Histogram::setDropLineType(DropLineType type) {
- Q_D(Histogram);
- if (type != d->dropLineType)
- exec(new HistogramSetDropLineTypeCmd(d, type, i18n("%1: drop line type \
changed")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetDropLinePen, QPen, dropLinePen, \
recalcShapeAndBoundingRect)
-void Histogram::setDropLinePen(const QPen &pen) {
- Q_D(Histogram);
- if (pen != d->dropLinePen)
- exec(new HistogramSetDropLinePenCmd(d, pen, i18n("%1: set drop line style")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetDropLineOpacity, qreal, dropLineOpacity, \
updatePixmap)
-void Histogram::setDropLineOpacity(qreal opacity) {
- Q_D(Histogram);
- if (opacity != d->dropLineOpacity)
- exec(new HistogramSetDropLineOpacityCmd(d, opacity, i18n("%1: set drop line \
opacity")));
-}
-
-// Symbols-Tab
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsStyle, Symbol::Style, symbolsStyle, \
updateSymbols)
-void Histogram::setSymbolsStyle(Symbol::Style style) {
- Q_D(Histogram);
- if (style != d->symbolsStyle)
- exec(new HistogramSetSymbolsStyleCmd(d, style, i18n("%1: set symbol style")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsSize, qreal, symbolsSize, \
updateSymbols)
-void Histogram::setSymbolsSize(qreal size) {
- Q_D(Histogram);
- if (!qFuzzyCompare(1 + size, 1 + d->symbolsSize))
- exec(new HistogramSetSymbolsSizeCmd(d, size, i18n("%1: set symbol size")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsRotationAngle, qreal, \
symbolsRotationAngle, updateSymbols)
-void Histogram::setSymbolsRotationAngle(qreal angle) {
- Q_D(Histogram);
- if (!qFuzzyCompare(1 + angle, 1 + d->symbolsRotationAngle))
- exec(new HistogramSetSymbolsRotationAngleCmd(d, angle, i18n("%1: rotate \
symbols")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsBrush, QBrush, symbolsBrush, \
updatePixmap)
-void Histogram::setSymbolsBrush(const QBrush &brush) {
- Q_D(Histogram);
- if (brush != d->symbolsBrush)
- exec(new HistogramSetSymbolsBrushCmd(d, brush, i18n("%1: set symbol filling")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsPen, QPen, symbolsPen, updateSymbols)
-void Histogram::setSymbolsPen(const QPen &pen) {
- Q_D(Histogram);
- if (pen != d->symbolsPen)
- exec(new HistogramSetSymbolsPenCmd(d, pen, i18n("%1: set symbol outline style")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetSymbolsOpacity, qreal, symbolsOpacity, \
updatePixmap)
-void Histogram::setSymbolsOpacity(qreal opacity) {
- Q_D(Histogram);
- if (opacity != d->symbolsOpacity)
- exec(new HistogramSetSymbolsOpacityCmd(d, opacity, i18n("%1: set symbols \
opacity")));
-}
-
//Values-Tab
STD_SETTER_CMD_IMPL_F_S(Histogram, SetValuesType, Histogram::ValuesType, valuesType, \
updateValues) void Histogram::setValuesType(Histogram::ValuesType type) {
@@ -547,106 +373,6 @@ void Histogram::setFillingOpacity(qreal opacity) {
exec(new HistogramSetFillingOpacityCmd(d, opacity, i18n("%1: set filling \
opacity"))); }
-//Error bars
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetXErrorType, Histogram::ErrorType, xErrorType, \
updateErrorBars)
-void Histogram::setXErrorType(ErrorType type) {
- Q_D(Histogram);
- if (type != d->xErrorType)
- exec(new HistogramSetXErrorTypeCmd(d, type, i18n("%1: x-error type changed")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetXErrorPlusColumn, const AbstractColumn*, \
xErrorPlusColumn, updateErrorBars)
-void Histogram::setXErrorPlusColumn(const AbstractColumn* column) {
- Q_D(Histogram);
- if (column != d->xErrorPlusColumn) {
- exec(new HistogramSetXErrorPlusColumnCmd(d, column, i18n("%1: set x-error \
column")));
- if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(updateErrorBars()));
- connect(column->parentAspect(), SIGNAL(aspectAboutToBeRemoved(const \
AbstractAspect*)),
- this, SLOT(xErrorPlusColumnAboutToBeRemoved(const AbstractAspect*)));
- }
- }
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetXErrorMinusColumn, const AbstractColumn*, \
xErrorMinusColumn, updateErrorBars)
-void Histogram::setXErrorMinusColumn(const AbstractColumn* column) {
- Q_D(Histogram);
- if (column != d->xErrorMinusColumn) {
- exec(new HistogramSetXErrorMinusColumnCmd(d, column, i18n("%1: set x-error \
column")));
- if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(updateErrorBars()));
- connect(column->parentAspect(), SIGNAL(aspectAboutToBeRemoved(const \
AbstractAspect*)),
- this, SLOT(xErrorMinusColumnAboutToBeRemoved(const AbstractAspect*)));
- }
- }
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetYErrorType, Histogram::ErrorType, yErrorType, \
updateErrorBars)
-void Histogram::setYErrorType(ErrorType type) {
- Q_D(Histogram);
- if (type != d->yErrorType)
- exec(new HistogramSetYErrorTypeCmd(d, type, i18n("%1: y-error type changed")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetYErrorPlusColumn, const AbstractColumn*, \
yErrorPlusColumn, updateErrorBars)
-void Histogram::setYErrorPlusColumn(const AbstractColumn* column) {
- Q_D(Histogram);
- if (column != d->yErrorPlusColumn) {
- exec(new HistogramSetYErrorPlusColumnCmd(d, column, i18n("%1: set y-error \
column")));
- if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(updateErrorBars()));
- connect(column->parentAspect(), SIGNAL(aspectAboutToBeRemoved(const \
AbstractAspect*)),
- this, SLOT(yErrorPlusColumnAboutToBeRemoved(const AbstractAspect*)));
- }
- }
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetYErrorMinusColumn, const AbstractColumn*, \
yErrorMinusColumn, updateErrorBars)
-void Histogram::setYErrorMinusColumn(const AbstractColumn* column) {
- Q_D(Histogram);
- if (column != d->yErrorMinusColumn) {
- exec(new HistogramSetYErrorMinusColumnCmd(d, column, i18n("%1: set y-error \
column")));
- if (column) {
- connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
SLOT(updateErrorBars()));
- connect(column->parentAspect(), SIGNAL(aspectAboutToBeRemoved(const \
AbstractAspect*)),
- this, SLOT(yErrorMinusColumnAboutToBeRemoved(const AbstractAspect*)));
- }
- }
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetErrorBarsCapSize, qreal, errorBarsCapSize, \
updateErrorBars)
-void Histogram::setErrorBarsCapSize(qreal size) {
- Q_D(Histogram);
- if (size != d->errorBarsCapSize)
- exec(new HistogramSetErrorBarsCapSizeCmd(d, size, i18n("%1: set error bar cap \
size")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetErrorBarsType, Histogram::ErrorBarsType, \
errorBarsType, updateErrorBars)
-void Histogram::setErrorBarsType(ErrorBarsType type) {
- Q_D(Histogram);
- if (type != d->errorBarsType)
- exec(new HistogramSetErrorBarsTypeCmd(d, type, i18n("%1: error bar type \
changed")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetErrorBarsPen, QPen, errorBarsPen, \
recalcShapeAndBoundingRect)
-void Histogram::setErrorBarsPen(const QPen& pen) {
- Q_D(Histogram);
- if (pen != d->errorBarsPen)
- exec(new HistogramSetErrorBarsPenCmd(d, pen, i18n("%1: set error bar style")));
-}
-
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetErrorBarsOpacity, qreal, errorBarsOpacity, \
updatePixmap)
-void Histogram::setErrorBarsOpacity(qreal opacity) {
- Q_D(Histogram);
- if (opacity != d->errorBarsOpacity)
- exec(new HistogramSetErrorBarsOpacityCmd(d, opacity, i18n("%1: set error bar \
opacity")));
-}
-
-void Histogram::suppressRetransform(bool b) {
- Q_D(Histogram);
- d->m_suppressRetransform = b;
-}
-
//##############################################################################
//################################# SLOTS ####################################
//##############################################################################
@@ -654,28 +380,10 @@ void Histogram::retransform() {
d_ptr->retransform();
}
-void Histogram::updateValues() {
- d_ptr->updateValues();
-}
-
-void Histogram::updateErrorBars() {
- d_ptr->updateErrorBars();
-}
-
//TODO
void Histogram::handlePageResize(double horizontalRatio, double verticalRatio){
Q_D(const Histogram);
- setSymbolsSize(d->symbolsSize * horizontalRatio);
-
- QPen pen = d->symbolsPen;
- pen.setWidthF(pen.widthF() * (horizontalRatio + verticalRatio) / 2.0);
- setSymbolsPen(pen);
-
- pen = d->linePen;
- pen.setWidthF(pen.widthF() * (horizontalRatio + verticalRatio) / 2.0);
- setLinePen(pen);
-
//setValuesDistance(d->distance*);
QFont font=d->valuesFont;
font.setPointSizeF(font.pointSizeF()*horizontalRatio);
@@ -684,6 +392,10 @@ void Histogram::handlePageResize(double horizontalRatio, double \
verticalRatio){ retransform();
}
+void Histogram::updateValues() {
+ d_ptr->updateValues();
+}
+
void Histogram::xColumnAboutToBeRemoved(const AbstractAspect* aspect) {
Q_D(Histogram);
if (aspect == d->xColumn) {
@@ -708,35 +420,120 @@ void Histogram::valuesColumnAboutToBeRemoved(const \
AbstractAspect* aspect) { }
}
-void Histogram::xErrorPlusColumnAboutToBeRemoved(const AbstractAspect* aspect) {
+
+void Histogram::scaleAutoX(){
Q_D(Histogram);
- if (aspect == d->xErrorPlusColumn) {
- d->xErrorPlusColumn = 0;
- d->updateErrorBars();
+
+ //loop over all xy-curves and determine the maximum x-value
+ if (d->curvesXMinMaxIsDirty) {
+ d->curvesXMin = INFINITY;
+ d->curvesXMax = -INFINITY;
+ QList<const Histogram*> children = this->children<const Histogram>();
+ foreach(const Histogram* curve, children) {
+ if (!curve->isVisible())
+ continue;
+ if (!curve->xColumn())
+ continue;
+
+ if (curve->xColumn()->minimum() != INFINITY){
+ if (curve->xColumn()->minimum() < d->curvesXMin)
+ d->curvesXMin = curve->xColumn()->minimum();
+ }
+
+ if (curve->xColumn()->maximum() != -INFINITY){
+ if (curve->xColumn()->maximum() > d->curvesXMax)
+ d->curvesXMax = curve->xColumn()->maximum();
+ }
+ }
+
+ d->curvesXMinMaxIsDirty = false;
}
-}
-void Histogram::xErrorMinusColumnAboutToBeRemoved(const AbstractAspect* aspect) {
- Q_D(Histogram);
- if (aspect == d->xErrorMinusColumn) {
- d->xErrorMinusColumn = 0;
- d->updateErrorBars();
+ bool update = false;
+ if (d->curvesXMin != d->xMin && d->curvesXMin != INFINITY){
+ d->xMin = d->curvesXMin;
+ update = true;
}
-}
-void Histogram::yErrorPlusColumnAboutToBeRemoved(const AbstractAspect* aspect) {
- Q_D(Histogram);
- if (aspect == d->yErrorPlusColumn) {
- d->yErrorPlusColumn = 0;
- d->updateErrorBars();
+ if (d->curvesXMax != d->xMax && d->curvesXMax != -INFINITY){
+ d->xMax = d->curvesXMax;
+ update = true;
+ }
+
+ if(update){
+ if (d->xMax == d->xMin){
+ //in case min and max are equal (e.g. if we plot a single point), subtract/add \
10% of the value + if (d->xMax!=0){
+ d->xMax = d->xMax*1.1;
+ d->xMin = d->xMin*0.9;
+ }else{
+ d->xMax = 0.1;
+ d->xMin = -0.1;
+ }
+ }else{
+ /* float offset = (d->xMax - d->xMin)*d->autoScaleOffsetFactor;
+ d->xMin -= offset;
+ d->xMax += offset;
+ */}
+ //d->retransformScales();
}
}
-void Histogram::yErrorMinusColumnAboutToBeRemoved(const AbstractAspect* aspect) {
+void Histogram::scaleAutoY(){
Q_D(Histogram);
- if (aspect == d->yErrorMinusColumn) {
- d->yErrorMinusColumn = 0;
- d->updateErrorBars();
+
+ //loop over all xy-curves and determine the maximum y-value
+ if (d->curvesYMinMaxIsDirty) {
+ d->curvesYMin = INFINITY;
+ d->curvesYMax = -INFINITY;
+ QList<const Histogram*> children = this->children<const Histogram>();
+ foreach(const Histogram* curve, children) {
+ if (!curve->isVisible())
+ continue;
+ if (!curve->yColumn())
+ continue;
+
+ if (curve->yColumn()->minimum() != INFINITY){
+ if (curve->yColumn()->minimum() < d->curvesYMin)
+ d->curvesYMin = curve->yColumn()->minimum();
+ }
+
+ if (curve->yColumn()->maximum() != -INFINITY){
+ if (curve->yColumn()->maximum() > d->curvesYMax)
+ d->curvesYMax = curve->yColumn()->maximum();
+ }
+ }
+
+ d->curvesYMinMaxIsDirty = false;
+ }
+
+ bool update = false;
+ if (d->curvesYMin != d->yMin && d->curvesYMin != INFINITY){
+ d->yMin = d->curvesYMin;
+ update = true;
+ }
+
+ if (d->curvesYMax != d->yMax && d->curvesYMax != -INFINITY){
+ d->yMax = d->curvesYMax;
+ update = true;
+ }
+
+ if(update){
+ if (d->yMax == d->yMin){
+ //in case min and max are equal (e.g. if we plot a single point), subtract/add \
10% of the value + if (d->yMax!=0){
+ d->yMax = d->yMax*1.1;
+ d->yMin = d->yMin*0.9;
+ }else{
+ d->yMax = 0.1;
+ d->yMin = -0.1;
+ }
+ }else{
+ /* float offset = (d->yMax - d->yMin)*d->autoScaleOffsetFactor;
+ d->yMin -= offset;
+ d->yMax += offset;
+ */ }
+ //d->retransformScales();
}
}
@@ -798,11 +595,7 @@ void HistogramPrivate::retransform(){
connectedPointsLogical.clear();
if ( (NULL == xColumn) || (NULL == yColumn) ){
- linePath = QPainterPath();
- dropLinePath = QPainterPath();
- symbolsPath = QPainterPath();
valuesPath = QPainterPath();
- errorBarsPath = QPainterPath();
recalcShapeAndBoundingRect();
return;
}
@@ -863,329 +656,8 @@ void HistogramPrivate::retransform(){
cSystem->mapLogicalToScene(symbolPointsLogical, symbolPointsScene, visiblePoints);
m_suppressRecalc = true;
- updateLines();
- updateDropLines();
- updateSymbols();
updateValues();
m_suppressRecalc = false;
- updateErrorBars();
-}
-
-/*!
- recalculates the painter path for the lines connecting the data points.
- Called each time when the type of this connection is changed.
-*/
-void HistogramPrivate::updateLines(){
- linePath = QPainterPath();
- lines.clear();
- if (lineType == Histogram::NoLine){
- updateFilling();
- recalcShapeAndBoundingRect();
- return;
- }
-
- const int count=symbolPointsLogical.count();
-
- //nothing to do, if no data points available
- if (count<=1){
- recalcShapeAndBoundingRect();
- return;
- }
-
- //calculate the lines connecting the data points
- QPointF tempPoint1, tempPoint2;
- QPointF curPoint, nextPoint;
- switch(lineType){
- case Histogram::NoLine:
- break;
- case Histogram::Line:{
- for (int i=0; i<count-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
- lines.append(QLineF(symbolPointsLogical.at(i), symbolPointsLogical.at(i+1)));
- }
- break;
- }
- case Histogram::StartHorizontal:{
- for (int i=0; i<count-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
- curPoint=symbolPointsLogical.at(i);
- nextPoint=symbolPointsLogical.at(i+1);
- tempPoint1=QPointF(nextPoint.x(), curPoint.y());
- lines.append(QLineF(curPoint, tempPoint1));
- lines.append(QLineF(tempPoint1, nextPoint));
- }
- break;
- }
- case Histogram::StartVertical:{
- for (int i=0; i<count-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
- curPoint=symbolPointsLogical.at(i);
- nextPoint=symbolPointsLogical.at(i+1);
- tempPoint1=QPointF(curPoint.x(), nextPoint.y());
- lines.append(QLineF(curPoint, tempPoint1));
- lines.append(QLineF(tempPoint1,nextPoint));
- }
- break;
- }
- case Histogram::MidpointHorizontal:{
- for (int i=0; i<count-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
- curPoint=symbolPointsLogical.at(i);
- nextPoint=symbolPointsLogical.at(i+1);
- tempPoint1=QPointF(curPoint.x() + (nextPoint.x()-curPoint.x())/2, curPoint.y());
- tempPoint2=QPointF(curPoint.x() + (nextPoint.x()-curPoint.x())/2, \
nextPoint.y());
- lines.append(QLineF(curPoint, tempPoint1));
- lines.append(QLineF(tempPoint1, tempPoint2));
- lines.append(QLineF(tempPoint2, nextPoint));
- }
- break;
- }
- case Histogram::MidpointVertical:{
- for (int i=0; i<count-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
- curPoint=symbolPointsLogical.at(i);
- nextPoint=symbolPointsLogical.at(i+1);
- tempPoint1=QPointF(curPoint.x(), curPoint.y() + (nextPoint.y()-curPoint.y())/2);
- tempPoint2=QPointF(nextPoint.x(), curPoint.y() + \
(nextPoint.y()-curPoint.y())/2);
- lines.append(QLineF(curPoint, tempPoint1));
- lines.append(QLineF(tempPoint1, tempPoint2));
- lines.append(QLineF(tempPoint2, nextPoint));
- }
- break;
- }
- case Histogram::Segments2:{
- int skip=0;
- for (int i=0; i<count-1; i++){
- if (skip!=1){
- if (!lineSkipGaps && !connectedPointsLogical[i]) {skip=0; continue;}
- lines.append(QLineF(symbolPointsLogical.at(i), symbolPointsLogical.at(i+1)));
- skip++;
- }else{
- skip=0;
- }
- }
- break;
- }
- case Histogram::Segments3:{
- int skip=0;
- for (int i=0; i<count-1; i++){
- if (skip!=2){
- if (!lineSkipGaps && !connectedPointsLogical[i]) {skip=0; continue;}
- lines.append(QLineF(symbolPointsLogical.at(i), symbolPointsLogical.at(i+1)));
- skip++;
- }else{
- skip=0;
- }
- }
- break;
- }
- case Histogram::SplineCubicNatural:
- case Histogram::SplineCubicPeriodic:
- case Histogram::SplineAkimaNatural:
- case Histogram::SplineAkimaPeriodic:{
- //TODO: optimize! try to omit the copying from the column to the arrays of \
doubles.
- //TODO: forward the error message to the UI.
- gsl_interp_accel *acc = gsl_interp_accel_alloc();
- gsl_spline *spline=0;
-
- double x[count], y[count];
- for (int i=0; i<count; i++){
- x[i]=symbolPointsLogical.at(i).x();
- y[i]=symbolPointsLogical.at(i).y();
- }
-
- gsl_set_error_handler_off();
- if (lineType==Histogram::SplineCubicNatural){
- spline = gsl_spline_alloc(gsl_interp_cspline, count);
- }else if (lineType==Histogram::SplineCubicPeriodic){
- spline = gsl_spline_alloc(gsl_interp_cspline_periodic, count);
- }else if (lineType==Histogram::SplineAkimaNatural){
- spline = gsl_spline_alloc(gsl_interp_akima, count);
- }else if (lineType==Histogram::SplineAkimaPeriodic){
- spline = gsl_spline_alloc(gsl_interp_akima_periodic, count);
- }
-
- if (!spline) {
- QString msg;
- if ( (lineType==Histogram::SplineAkimaNatural || \
lineType==Histogram::SplineAkimaPeriodic) && count<5)
- msg=i18n("Error: Akima spline interpolation requires a minimum of 5 points.");
- else
- msg =i18n("Couldn't initialize spline function");
- qDebug()<<msg;
- recalcShapeAndBoundingRect();
- return;
- }
-
- int status = gsl_spline_init (spline, x, y, count);
- if (status ) {
- //TODO: check in gsl/interp.c when GSL_EINVAL is thrown
- QString gslError;
- if (status == GSL_EINVAL)
- gslError = "x values must be monotonically increasing.";
- else
- gslError = gsl_strerror (status);
-
- qDebug() << "Error in spline calculation. " << gslError;
-
- recalcShapeAndBoundingRect();
- return;
- }
-
- //create interpolating points
- std::vector<double> xinterp, yinterp;
- double step;
- double xi, yi, x1, x2;
- for (int i=0; i<count-1; i++){
- x1 = x[i];
- x2 = x[i+1];
- step=fabs(x2-x1)/(lineInterpolationPointsCount+1);
-
- for (xi=x1; xi<x2; xi += step){
- yi = gsl_spline_eval (spline, xi, acc);
- xinterp.push_back(xi);
- yinterp.push_back(yi);
- }
- }
-
- for (unsigned int i=0; i<xinterp.size()-1; i++){
- lines.append(QLineF(xinterp[i], yinterp[i], xinterp[i+1], yinterp[i+1]));
- }
- lines.append(QLineF(xinterp[xinterp.size()-1], yinterp[yinterp.size()-1], \
x[count-1], y[count-1]));
-
- gsl_spline_free (spline);
- gsl_interp_accel_free (acc);
- break;
- }
- default:
- break;
- }
-
- //map the lines to scene coordinates
- const CartesianPlot* plot = dynamic_cast<const CartesianPlot*>(q->parentAspect());
- const AbstractCoordinateSystem* cSystem = plot->coordinateSystem();
- lines = cSystem->mapLogicalToScene(lines);
-
- //new line path
- foreach (const QLineF& line, lines){
- linePath.moveTo(line.p1());
- linePath.lineTo(line.p2());
- }
-
- updateFilling();
- recalcShapeAndBoundingRect();
-}
-
-/*!
- recalculates the painter path for the drop lines.
- Called each time when the type of the drop lines is changed.
-*/
-void HistogramPrivate::updateDropLines(){
- dropLinePath = QPainterPath();
- if (dropLineType == Histogram::NoDropLine){
- recalcShapeAndBoundingRect();
- return;
- }
-
- //calculate drop lines
- const CartesianPlot* plot = dynamic_cast<const CartesianPlot*>(q->parentAspect());
- QList<QLineF> lines;
- float xMin = 0;
- float yMin = 0;
-
- xMin = plot->xMin();
- yMin = plot->yMin();
- switch(dropLineType){
- case Histogram::NoDropLine:
- break;
- case Histogram::DropLineX:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append(QLineF(point, QPointF(point.x(), yMin)));
- }
- break;
- }
- case Histogram::DropLineY:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append(QLineF(point, QPointF(xMin, point.y())));
- }
- break;
- }
- case Histogram::DropLineXY:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append(QLineF(point, QPointF(point.x(), yMin)));
- lines.append(QLineF(point, QPointF(xMin, point.y())));
- }
- break;
- }
- case Histogram::DropLineXZeroBaseline:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append(QLineF(point, QPointF(point.x(), 0)));
- }
- break;
- }
- case Histogram::DropLineXMinBaseline:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append( QLineF(point, QPointF(point.x(), dynamic_cast<const \
Column*>(yColumn)->minimum())) );
- }
- break;
- }
- case Histogram::DropLineXMaxBaseline:{
- for(int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i]) continue;
- const QPointF& point = symbolPointsLogical.at(i);
- lines.append( QLineF(point, QPointF(point.x(), dynamic_cast<const \
Column*>(yColumn)->maximum())) );
- }
- break;
- }
- default:
- break;
- }
-
- //map the drop lines to scene coordinates
- const AbstractCoordinateSystem* cSystem = plot->coordinateSystem();
- lines = cSystem->mapLogicalToScene(lines);
-
- //new painter path for the drop lines
- foreach (const QLineF& line, lines){
- dropLinePath.moveTo(line.p1());
- dropLinePath.lineTo(line.p2());
- }
-
- recalcShapeAndBoundingRect();
-}
-
-void HistogramPrivate::updateSymbols(){
- symbolsPath = QPainterPath();
- if (symbolsStyle != Symbol::NoSymbols){
- QPainterPath path = Symbol::pathFromStyle(symbolsStyle);
-
- QTransform trafo;
- trafo.scale(symbolsSize, symbolsSize);
- path = trafo.map(path);
- trafo.reset();
-
- if (symbolsRotationAngle != 0) {
- trafo.rotate(symbolsRotationAngle);
- path = trafo.map(path);
- }
-
- foreach (const QPointF& point, symbolPointsScene) {
- trafo.reset();
- trafo.translate(point.x(), point.y());
- symbolsPath.addPath(trafo.map(path));
- }
- }
-
- recalcShapeAndBoundingRect();
}
/*!
@@ -1350,7 +822,6 @@ void HistogramPrivate::updateFilling() {
fillLines = lines;
} else {
for (int i=0; i<symbolPointsLogical.count()-1; i++){
- if (!lineSkipGaps && !connectedPointsLogical[i]) continue;
fillLines.append(QLineF(symbolPointsLogical.at(i), \
symbolPointsLogical.at(i+1))); }
fillLines = cSystem->mapLogicalToScene(fillLines);
@@ -1566,147 +1037,6 @@ void HistogramPrivate::updateFilling() {
recalcShapeAndBoundingRect();
}
-void HistogramPrivate::updateErrorBars(){
- errorBarsPath = QPainterPath();
- if (xErrorType==Histogram::NoError && yErrorType==Histogram::NoError){
- recalcShapeAndBoundingRect();
- return;
- }
-
- QList<QLineF> lines;
- float errorPlus, errorMinus;
- const CartesianPlot* plot = dynamic_cast<const CartesianPlot*>(q->parentAspect());
- const AbstractCoordinateSystem* cSystem = plot->coordinateSystem();
-
- //the cap size for the errorbars is given in scene units.
- //determine first the (half of the) cap size in logical units:
- // * take the first visible point in logical units
- // * convert it to scene units
- // * add to this point an offset corresponding to the cap size in scene units
- // * convert this point back to logical units
- // * subtract from this point the original coordinates (without the new offset)
- // to determine the cap size in logical units.
- float capSizeX = 0;
- float capSizeY = 0;
- if (errorBarsType != Histogram::ErrorBarsSimple && !symbolPointsLogical.isEmpty()) \
{
- //determine the index of the first visible point
- size_t i = 0;
- while( i<visiblePoints.size() && !visiblePoints[i])
- i++;
-
- if (i==visiblePoints.size())
- return; //no visible points -> no error bars to draw
-
- //cap size for x-error bars
- QPointF pointScene = cSystem->mapLogicalToScene(symbolPointsLogical.at(i));
- pointScene.setY(pointScene.y()-errorBarsCapSize);
- QPointF pointLogical = cSystem->mapSceneToLogical(pointScene);
- capSizeX = (pointLogical.y() - symbolPointsLogical.at(i).y())/2;
-
- //cap size for y-error bars
- pointScene = cSystem->mapLogicalToScene(symbolPointsLogical.at(i));
- pointScene.setX(pointScene.x()+errorBarsCapSize);
- pointLogical = cSystem->mapSceneToLogical(pointScene);
- capSizeY = (pointLogical.x() - symbolPointsLogical.at(i).x())/2;
- }
-
- for (int i=0; i<symbolPointsLogical.size(); ++i){
- if (!visiblePoints[i])
- continue;
-
- const QPointF& point = symbolPointsLogical.at(i);
-
- //error bars for x
- if (xErrorType!=Histogram::NoError) {
- //determine the values for the errors
- if (xErrorPlusColumn && xErrorPlusColumn->isValid(i) && \
!xErrorPlusColumn->isMasked(i))
- errorPlus = xErrorPlusColumn->valueAt(i);
- else
- errorPlus = 0;
-
- if (xErrorType==Histogram::SymmetricError) {
- errorMinus = errorPlus;
- } else {
- if (xErrorMinusColumn && xErrorMinusColumn->isValid(i) && \
!xErrorMinusColumn->isMasked(i))
- errorMinus = xErrorMinusColumn->valueAt(i);
- else
- errorMinus = 0;
- }
-
- //draw the error bars
- switch(errorBarsType) {
- case Histogram::ErrorBarsSimple:
- lines.append(QLineF(QPointF(point.x()-errorMinus, point.y()),
- QPointF(point.x()+errorPlus, point.y())));
- break;
- case Histogram::ErrorBarsWithEnds: {
- lines.append(QLineF(QPointF(point.x()-errorMinus, point.y()),
- QPointF(point.x()+errorPlus, point.y())));
- if (errorMinus!=0) {
- lines.append(QLineF(QPointF(point.x()-errorMinus, point.y()-capSizeX),
- QPointF(point.x()-errorMinus, point.y()+capSizeX)));
- }
- if (errorPlus!=0) {
- lines.append(QLineF(QPointF(point.x()+errorPlus, point.y()-capSizeX),
- QPointF(point.x()+errorPlus, point.y()+capSizeX)));
- }
- break;
- }
- }
- }
-
- //error bars for y
- if (yErrorType!=Histogram::NoError) {
- //determine the values for the errors
- if (yErrorPlusColumn && yErrorPlusColumn->isValid(i) && \
!yErrorPlusColumn->isMasked(i))
- errorPlus = yErrorPlusColumn->valueAt(i);
- else
- errorPlus = 0;
-
- if (yErrorType==Histogram::SymmetricError) {
- errorMinus = errorPlus;
- } else {
- if (yErrorMinusColumn && yErrorMinusColumn->isValid(i) && \
!yErrorMinusColumn->isMasked(i) )
- errorMinus = yErrorMinusColumn->valueAt(i);
- else
- errorMinus = 0;
- }
-
- //draw the error bars
- switch(errorBarsType) {
- case Histogram::ErrorBarsSimple:
- lines.append(QLineF(QPointF(point.x(), point.y()-errorMinus),
- QPointF(point.x(), point.y()+errorPlus)));
- break;
- case Histogram::ErrorBarsWithEnds: {
- lines.append(QLineF(QPointF(point.x(), point.y()-errorMinus),
- QPointF(point.x(), point.y()+errorPlus)));
- if (errorMinus!=0) {
- lines.append(QLineF(QPointF(point.x()-capSizeY, point.y()-errorMinus),
- QPointF(point.x()+capSizeY, point.y()-errorMinus)));
- }
- if (errorPlus!=0) {
- lines.append(QLineF(QPointF(point.x()-capSizeY, point.y()+errorPlus),
- QPointF(point.x()+capSizeY, point.y()+errorPlus)));
- }
- break;
- }
- }
- }
- }
-
- //map the error bars to scene coordinates
- lines = cSystem->mapLogicalToScene(lines);
-
- //new painter path for the drop lines
- foreach (const QLineF& line, lines){
- errorBarsPath.moveTo(line.p1());
- errorBarsPath.lineTo(line.p2());
- }
-
- recalcShapeAndBoundingRect();
-}
-
/*!
recalculates the outer bounds and the shape of the curve.
*/
@@ -1716,26 +1046,10 @@ void HistogramPrivate::recalcShapeAndBoundingRect() {
prepareGeometryChange();
curveShape = QPainterPath();
- if (lineType != Histogram::NoLine){
- curveShape.addPath(WorksheetElement::shapeFromPath(linePath, linePen));
- }
-
- if (dropLineType != Histogram::NoDropLine){
- curveShape.addPath(WorksheetElement::shapeFromPath(dropLinePath, dropLinePen));
- }
-
- if (symbolsStyle != Symbol::NoSymbols){
- curveShape.addPath(symbolsPath);
- }
if (valuesType != Histogram::NoValues){
curveShape.addPath(valuesPath);
}
-
- if (xErrorType != Histogram::NoError || yErrorType != Histogram::NoError){
- curveShape.addPath(WorksheetElement::shapeFromPath(errorBarsPath, errorBarsPen));
- }
-
boundingRectangle = curveShape.boundingRect();
foreach(const QPolygonF& pol, fillPolygons)
@@ -1757,38 +1071,6 @@ void HistogramPrivate::draw(QPainter *painter) {
drawFilling(painter);
}
- //draw lines
- if (lineType != Histogram::NoLine){
- painter->setOpacity(lineOpacity);
- painter->setPen(linePen);
- painter->setBrush(Qt::NoBrush);
- painter->drawPath(linePath);
- }
-
- //draw drop lines
- if (dropLineType != Histogram::NoDropLine){
- painter->setOpacity(dropLineOpacity);
- painter->setPen(dropLinePen);
- painter->setBrush(Qt::NoBrush);
- painter->drawPath(dropLinePath);
- }
-
- //draw error bars
- if ( (xErrorType != Histogram::NoError) || (yErrorType != Histogram::NoError) ){
- painter->setOpacity(errorBarsOpacity);
- painter->setPen(errorBarsPen);
- painter->setBrush(Qt::NoBrush);
- painter->drawPath(errorBarsPath);
- }
-
- //draw symbols
- if (symbolsStyle != Symbol::NoSymbols){
- painter->setOpacity(symbolsOpacity);
- painter->setPen(symbolsPen);
- painter->setBrush(symbolsBrush);
- drawSymbols(painter);
- }
-
//draw values
if (valuesType != Histogram::NoValues){
painter->setOpacity(valuesOpacity);
@@ -1953,23 +1235,6 @@ void HistogramPrivate::paint(QPainter* painter, const \
QStyleOptionGraphicsItem* Drawing of symbolsPath is very slow, so we draw every \
symbol in the loop which us much faster (factor 10)
*/
-void HistogramPrivate::drawSymbols(QPainter* painter) {
- QPainterPath path = Symbol::pathFromStyle(symbolsStyle);
-
- QTransform trafo;
- trafo.scale(symbolsSize, symbolsSize);
- path = trafo.map(path);
- trafo.reset();
- if (symbolsRotationAngle != 0) {
- trafo.rotate(symbolsRotationAngle);
- path = trafo.map(path);
- }
- foreach (const QPointF& point, symbolPointsScene) {
- trafo.reset();
- trafo.translate(point.x(), point.y());
- painter->drawPath(trafo.map(path));
- }
-}
void HistogramPrivate::drawValues(QPainter* painter) {
QTransform trafo;
@@ -2078,21 +1343,21 @@ void HistogramPrivate::drawFilling(QPainter* painter) {
}
void HistogramPrivate::hoverEnterEvent(QGraphicsSceneHoverEvent*) {
- const CartesianPlot* plot = dynamic_cast<const CartesianPlot*>(q->parentAspect());
- if (plot->mouseMode() == CartesianPlot::SelectionMode && !isSelected()) {
+ /*const Histogram* plot = dynamic_cast<const Histogram*>(q->parentAspect());
+ if (plot->mouseMode() == Histogram::SelectionMode && !isSelected()) {
m_hovered = true;
q->hovered();
update();
- }
+ }*/
}
void HistogramPrivate::hoverLeaveEvent(QGraphicsSceneHoverEvent*) {
- const CartesianPlot* plot = dynamic_cast<const CartesianPlot*>(q->parentAspect());
- if (plot->mouseMode() == CartesianPlot::SelectionMode && m_hovered) {
+ /*const Histogram* plot = dynamic_cast<const Histogram*>(q->parentAspect());
+ if (plot->mouseMode() == Histogram::SelectionMode && m_hovered) {
m_hovered = false;
q->unhovered();
update();
- }
+ }*/
}
//##############################################################################
@@ -2113,31 +1378,7 @@ void Histogram::save(QXmlStreamWriter* writer) const{
writer->writeAttribute( "visible", QString::number(d->isVisible()) );
writer->writeEndElement();
- //Line
- writer->writeStartElement( "lines" );
- writer->writeAttribute( "type", QString::number(d->lineType) );
- writer->writeAttribute( "skipGaps", QString::number(d->lineSkipGaps) );
- writer->writeAttribute( "interpolationPointsCount", \
QString::number(d->lineInterpolationPointsCount) );
- WRITE_QPEN(d->linePen);
- writer->writeAttribute( "opacity", QString::number(d->lineOpacity) );
- writer->writeEndElement();
-
- //Drop lines
- writer->writeStartElement( "dropLines" );
- writer->writeAttribute( "type", QString::number(d->dropLineType) );
- WRITE_QPEN(d->dropLinePen);
- writer->writeAttribute( "opacity", QString::number(d->dropLineOpacity) );
- writer->writeEndElement();
-
- //Symbols
- writer->writeStartElement( "symbols" );
- writer->writeAttribute( "symbolsStyle", QString::number(d->symbolsStyle) );
- writer->writeAttribute( "opacity", QString::number(d->symbolsOpacity) );
- writer->writeAttribute( "rotation", QString::number(d->symbolsRotationAngle) );
- writer->writeAttribute( "size", QString::number(d->symbolsSize) );
- WRITE_QBRUSH(d->symbolsBrush);
- WRITE_QPEN(d->symbolsPen);
- writer->writeEndElement();
+
//Values
writer->writeStartElement( "values" );
@@ -2171,20 +1412,6 @@ void Histogram::save(QXmlStreamWriter* writer) const{
writer->writeAttribute( "opacity", QString::number(d->fillingOpacity) );
writer->writeEndElement();
- //Error bars
- writer->writeStartElement( "errorBars" );
- writer->writeAttribute( "xErrorType", QString::number(d->xErrorType) );
- WRITE_COLUMN(d->xErrorPlusColumn, xErrorPlusColumn);
- WRITE_COLUMN(d->xErrorMinusColumn, xErrorMinusColumn);
- writer->writeAttribute( "yErrorType", QString::number(d->yErrorType) );
- WRITE_COLUMN(d->yErrorPlusColumn, yErrorPlusColumn);
- WRITE_COLUMN(d->yErrorMinusColumn, yErrorMinusColumn);
- writer->writeAttribute( "type", QString::number(d->errorBarsType) );
- writer->writeAttribute( "capSize", QString::number(d->errorBarsCapSize) );
- WRITE_QPEN(d->errorBarsPen);
- writer->writeAttribute( "opacity", QString::number(d->errorBarsOpacity) );
- writer->writeEndElement();
-
writer->writeEndElement(); //close "Histogram" section
}
@@ -2225,79 +1452,6 @@ bool Histogram::load(XmlStreamReader* reader){
reader->raiseWarning(attributeWarning.arg("'visible'"));
else
d->setVisible(str.toInt());
- }else if (reader->name() == "lines"){
- attribs = reader->attributes();
-
- str = attribs.value("type").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'type'"));
- else
- d->lineType = (Histogram::LineType)str.toInt();
-
- str = attribs.value("skipGaps").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'skipGps'"));
- else
- d->lineSkipGaps = str.toInt();
-
- str = attribs.value("interpolationPointsCount").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'interpolationPointsCount'"));
- else
- d->lineInterpolationPointsCount = str.toInt();
-
- READ_QPEN(d->linePen);
-
- str = attribs.value("opacity").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'opacity'"));
- else
- d->lineOpacity = str.toDouble();
- }else if (reader->name() == "dropLines"){
- attribs = reader->attributes();
-
- str = attribs.value("type").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'type'"));
- else
- d->dropLineType = (Histogram::DropLineType)str.toInt();
-
- READ_QPEN(d->dropLinePen);
-
- str = attribs.value("opacity").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'opacity'"));
- else
- d->dropLineOpacity = str.toDouble();
- }else if (reader->name() == "symbols"){
- attribs = reader->attributes();
-
- str = attribs.value("symbolsStyle").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'symbolsStyle'"));
- else
- d->symbolsStyle = (Symbol::Style)str.toInt();
-
- str = attribs.value("opacity").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'opacity'"));
- else
- d->symbolsOpacity = str.toDouble();
-
- str = attribs.value("rotation").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'rotation'"));
- else
- d->symbolsRotationAngle = str.toDouble();
-
- str = attribs.value("size").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'size'"));
- else
- d->symbolsSize = str.toDouble();
-
- READ_QBRUSH(d->symbolsBrush);
- READ_QPEN(d->symbolsPen);
}else if (reader->name() == "values"){
attribs = reader->attributes();
@@ -2422,48 +1576,8 @@ bool Histogram::load(XmlStreamReader* reader){
reader->raiseWarning(attributeWarning.arg("opacity"));
else
d->fillingOpacity = str.toDouble();
- }else if (reader->name() == "errorBars"){
- attribs = reader->attributes();
-
- str = attribs.value("xErrorType").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'xErrorType'"));
- else
- d->xErrorType = (Histogram::ErrorType)str.toInt();
-
- READ_COLUMN(xErrorPlusColumn);
- READ_COLUMN(xErrorMinusColumn);
-
- str = attribs.value("yErrorType").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'yErrorType'"));
- else
- d->yErrorType = (Histogram::ErrorType)str.toInt();
-
- READ_COLUMN(yErrorPlusColumn);
- READ_COLUMN(yErrorMinusColumn);
-
- str = attribs.value("type").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'type'"));
- else
- d->errorBarsType = (Histogram::ErrorBarsType)str.toInt();
-
- str = attribs.value("capSize").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'capSize'"));
- else
- d->errorBarsCapSize = str.toDouble();
-
- READ_QPEN(d->errorBarsPen);
-
- str = attribs.value("opacity").toString();
- if(str.isEmpty())
- reader->raiseWarning(attributeWarning.arg("'opacity'"));
- else
- d->errorBarsOpacity = str.toDouble();
- }
+
+ }
}
-
return true;
}
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.h \
b/src/backend/worksheet/plots/cartesian/Histogram.h index 9bff497..72de473 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.h
+++ b/src/backend/worksheet/plots/cartesian/Histogram.h
@@ -65,23 +65,12 @@ class Histogram: public WorksheetElement {
POINTER_D_ACCESSOR_DECL(const AbstractColumn, yColumn, YColumn)
QString& xColumnPath() const;
QString& yColumnPath() const;
+
+ BASIC_D_ACCESSOR_DECL(float, xMin, XMin)
+ BASIC_D_ACCESSOR_DECL(float, xMax, XMax)
+ BASIC_D_ACCESSOR_DECL(float, yMin, YMin)
+ BASIC_D_ACCESSOR_DECL(float, yMax, YMax)
- BASIC_D_ACCESSOR_DECL(LineType, lineType, LineType)
- BASIC_D_ACCESSOR_DECL(bool, lineSkipGaps, LineSkipGaps)
- BASIC_D_ACCESSOR_DECL(int, lineInterpolationPointsCount, \
LineInterpolationPointsCount)
- CLASS_D_ACCESSOR_DECL(QPen, linePen, LinePen)
- BASIC_D_ACCESSOR_DECL(qreal, lineOpacity, LineOpacity)
-
- BASIC_D_ACCESSOR_DECL(DropLineType, dropLineType, DropLineType)
- CLASS_D_ACCESSOR_DECL(QPen, dropLinePen, DropLinePen)
- BASIC_D_ACCESSOR_DECL(qreal, dropLineOpacity, DropLineOpacity)
-
- BASIC_D_ACCESSOR_DECL(Symbol::Style, symbolsStyle, SymbolsStyle)
- BASIC_D_ACCESSOR_DECL(qreal, symbolsOpacity, SymbolsOpacity)
- BASIC_D_ACCESSOR_DECL(qreal, symbolsRotationAngle, SymbolsRotationAngle)
- BASIC_D_ACCESSOR_DECL(qreal, symbolsSize, SymbolsSize)
- CLASS_D_ACCESSOR_DECL(QBrush, symbolsBrush, SymbolsBrush)
- CLASS_D_ACCESSOR_DECL(QPen, symbolsPen, SymbolsPen)
BASIC_D_ACCESSOR_DECL(ValuesType, valuesType, ValuesType)
POINTER_D_ACCESSOR_DECL(const AbstractColumn, valuesColumn, ValuesColumn)
@@ -104,22 +93,7 @@ class Histogram: public WorksheetElement {
CLASS_D_ACCESSOR_DECL(QColor, fillingSecondColor, FillingSecondColor)
CLASS_D_ACCESSOR_DECL(QString, fillingFileName, FillingFileName)
BASIC_D_ACCESSOR_DECL(qreal, fillingOpacity, FillingOpacity)
-
- BASIC_D_ACCESSOR_DECL(ErrorType, xErrorType, XErrorType)
- POINTER_D_ACCESSOR_DECL(const AbstractColumn, xErrorPlusColumn, XErrorPlusColumn)
- QString& xErrorPlusColumnPath() const;
- POINTER_D_ACCESSOR_DECL(const AbstractColumn, xErrorMinusColumn, \
XErrorMinusColumn)
- QString& xErrorMinusColumnPath() const;
- BASIC_D_ACCESSOR_DECL(ErrorType, yErrorType, YErrorType)
- POINTER_D_ACCESSOR_DECL(const AbstractColumn, yErrorPlusColumn, YErrorPlusColumn)
- QString& yErrorPlusColumnPath() const;
- POINTER_D_ACCESSOR_DECL(const AbstractColumn, yErrorMinusColumn, \
YErrorMinusColumn)
- QString& yErrorMinusColumnPath() const;
- BASIC_D_ACCESSOR_DECL(ErrorBarsType, errorBarsType, ErrorBarsType)
- BASIC_D_ACCESSOR_DECL(qreal, errorBarsCapSize, ErrorBarsCapSize)
- CLASS_D_ACCESSOR_DECL(QPen, errorBarsPen, ErrorBarsPen)
- BASIC_D_ACCESSOR_DECL(qreal, errorBarsOpacity, ErrorBarsOpacity)
-
+
virtual void setVisible(bool on);
virtual bool isVisible() const;
virtual void setPrinting(bool on);
@@ -131,18 +105,14 @@ class Histogram: public WorksheetElement {
public slots:
virtual void retransform();
virtual void handlePageResize(double horizontalRatio, double verticalRatio);
-
+ void scaleAutoX();
+ void scaleAutoY();
+
private slots:
void updateValues();
- void updateErrorBars();
void xColumnAboutToBeRemoved(const AbstractAspect*);
void yColumnAboutToBeRemoved(const AbstractAspect*);
void valuesColumnAboutToBeRemoved(const AbstractAspect*);
- void xErrorPlusColumnAboutToBeRemoved(const AbstractAspect*);
- void xErrorMinusColumnAboutToBeRemoved(const AbstractAspect*);
- void yErrorPlusColumnAboutToBeRemoved(const AbstractAspect*);
- void yErrorMinusColumnAboutToBeRemoved(const AbstractAspect*);
-
//SLOTs for changes triggered via QActions in the context menu
void visibilityChanged();
@@ -160,8 +130,8 @@ class Histogram: public WorksheetElement {
signals:
//General-Tab
void dataChanged();
- void xDataChanged();
- void yDataChanged();
+ void xHistogramDataChanged();
+ void yHistogramDataChanged();
void visibilityChanged(bool);
friend class HistogramSetXColumnCmd;
@@ -169,38 +139,6 @@ class Histogram: public WorksheetElement {
void xColumnChanged(const AbstractColumn*);
void yColumnChanged(const AbstractColumn*);
- //Line-Tab
- friend class HistogramSetLineTypeCmd;
- friend class HistogramSetLineSkipGapsCmd;
- friend class HistogramSetLineInterpolationPointsCountCmd;
- friend class HistogramSetLinePenCmd;
- friend class HistogramSetLineOpacityCmd;
- friend class HistogramSetDropLineTypeCmd;
- friend class HistogramSetDropLinePenCmd;
- friend class HistogramSetDropLineOpacityCmd;
- void lineTypeChanged(Histogram::LineType);
- void lineSkipGapsChanged(bool);
- void lineInterpolationPointsCountChanged(int);
- void linePenChanged(const QPen&);
- void lineOpacityChanged(qreal);
- void dropLineTypeChanged(Histogram::DropLineType);
- void dropLinePenChanged(const QPen&);
- void dropLineOpacityChanged(qreal);
-
- //Symbol-Tab
- friend class HistogramSetSymbolsStyleCmd;
- friend class HistogramSetSymbolsSizeCmd;
- friend class HistogramSetSymbolsRotationAngleCmd;
- friend class HistogramSetSymbolsOpacityCmd;
- friend class HistogramSetSymbolsBrushCmd;
- friend class HistogramSetSymbolsPenCmd;
- void symbolsStyleChanged(Symbol::Style);
- void symbolsSizeChanged(qreal);
- void symbolsRotationAngleChanged(qreal);
- void symbolsOpacityChanged(qreal);
- void symbolsBrushChanged(QBrush);
- void symbolsPenChanged(const QPen&);
-
//Values-Tab
friend class HistogramSetValuesColumnCmd;
friend class HistogramSetValuesTypeCmd;
@@ -243,27 +181,6 @@ class Histogram: public WorksheetElement {
void fillingFileNameChanged(QString&);
void fillingOpacityChanged(float);
- //Error bars
- friend class HistogramSetXErrorTypeCmd;
- friend class HistogramSetXErrorPlusColumnCmd;
- friend class HistogramSetXErrorMinusColumnCmd;
- friend class HistogramSetYErrorTypeCmd;
- friend class HistogramSetYErrorPlusColumnCmd;
- friend class HistogramSetYErrorMinusColumnCmd;
- friend class HistogramSetErrorBarsCapSizeCmd;
- friend class HistogramSetErrorBarsTypeCmd;
- friend class HistogramSetErrorBarsPenCmd;
- friend class HistogramSetErrorBarsOpacityCmd;
- void xErrorTypeChanged(Histogram::ErrorType);
- void xErrorPlusColumnChanged(const AbstractColumn*);
- void xErrorMinusColumnChanged(const AbstractColumn*);
- void yErrorTypeChanged(Histogram::ErrorType);
- void yErrorPlusColumnChanged(const AbstractColumn*);
- void yErrorMinusColumnChanged(const AbstractColumn*);
- void errorBarsCapSizeChanged(qreal);
- void errorBarsTypeChanged(Histogram::ErrorBarsType);
- void errorBarsPenChanged(QPen);
- void errorBarsOpacityChanged(qreal);
};
#endif
diff --git a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h \
b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h index a5a8da8..47f61b9 \
100644
--- a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
+++ b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
@@ -50,12 +50,8 @@ class HistogramPrivate: public QGraphicsItem {
bool m_selectionEffectImageIsDirty;
void retransform();
- void updateLines();
- void updateDropLines();
- void updateSymbols();
void updateValues();
void updateFilling();
- void updateErrorBars();
bool swapVisible(bool on);
void recalcShapeAndBoundingRect();
void drawSymbols(QPainter*);
@@ -63,6 +59,7 @@ class HistogramPrivate: public QGraphicsItem {
void drawFilling(QPainter*);
void draw(QPainter*);
void updatePixmap();
+ bool autoScaleX, autoScaleY;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* widget = \
0);
@@ -72,26 +69,6 @@ class HistogramPrivate: public QGraphicsItem {
QString xColumnPath;
QString yColumnPath;
- //line
- Histogram::LineType lineType;
- bool lineSkipGaps;
- int lineInterpolationPointsCount;
- QPen linePen;
- qreal lineOpacity;
-
- //drop lines
- Histogram::DropLineType dropLineType;
- QPen dropLinePen;
- qreal dropLineOpacity;
-
- //symbols
- Symbol::Style symbolsStyle;
- QBrush symbolsBrush;
- QPen symbolsPen;
- qreal symbolsOpacity;
- qreal symbolsRotationAngle;
- qreal symbolsSize;
-
//values
Histogram::ValuesType valuesType;
const AbstractColumn* valuesColumn;
@@ -116,29 +93,7 @@ class HistogramPrivate: public QGraphicsItem {
QString fillingFileName;
qreal fillingOpacity;
- //error bars
- Histogram::ErrorType xErrorType;
- const AbstractColumn* xErrorPlusColumn;
- QString xErrorPlusColumnPath;
- const AbstractColumn* xErrorMinusColumn;
- QString xErrorMinusColumnPath;
-
- Histogram::ErrorType yErrorType;
- const AbstractColumn* yErrorPlusColumn;
- QString yErrorPlusColumnPath;
- const AbstractColumn* yErrorMinusColumn;
- QString yErrorMinusColumnPath;
-
- Histogram::ErrorBarsType errorBarsType;
- double errorBarsCapSize;
- QPen errorBarsPen;
- qreal errorBarsOpacity;
-
- QPainterPath linePath;
- QPainterPath dropLinePath;
QPainterPath valuesPath;
- QPainterPath errorBarsPath;
- QPainterPath symbolsPath;
QRectF boundingRectangle;
QPainterPath curveShape;
QList<QLineF> lines;
@@ -150,8 +105,17 @@ class HistogramPrivate: public QGraphicsItem {
//false otherwise (don't connect because of a gap (NAN) \
in-between) QList<QString> valuesStrings;
QList<QPolygonF> fillPolygons;
-
+
+ //cached values of minimum and maximum for all visible curves
+ bool curvesXMinMaxIsDirty, curvesYMinMaxIsDirty;
+ double curvesXMin, curvesXMax, curvesYMin, curvesYMax;
+
+ float xMin, xMax, yMin, yMax;
+ float xMinPrev, xMaxPrev, yMinPrev, yMaxPrev;
+ bool autoScaleHistogramX, autoScaleHistogramY;
+
Histogram* const q;
+
private:
void contextMenuEvent(QGraphicsSceneContextMenuEvent*);
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.cpp \
b/src/kdefrontend/dockwidgets/HistogramDock.cpp index 933105d..e331644 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.cpp
+++ b/src/kdefrontend/dockwidgets/HistogramDock.cpp
@@ -76,21 +76,6 @@ HistogramDock::HistogramDock(QWidget *parent): QWidget(parent),
ui.kleFillingFileName->setCompletionObject(m_completion);
- //Tab "Error bars"
- gridLayout = qobject_cast<QGridLayout*>(ui.tabErrorBars->layout());
-
- cbXErrorPlusColumn = new TreeViewComboBox(ui.tabErrorBars);
- gridLayout->addWidget(cbXErrorPlusColumn, 2, 2, 1, 1);
-
- cbXErrorMinusColumn = new TreeViewComboBox(ui.tabErrorBars);
- gridLayout->addWidget(cbXErrorMinusColumn, 3, 2, 1, 1);
-
- cbYErrorPlusColumn = new TreeViewComboBox(ui.tabErrorBars);
- gridLayout->addWidget(cbYErrorPlusColumn, 7, 2, 1, 1);
-
- cbYErrorMinusColumn = new TreeViewComboBox(ui.tabErrorBars);
- gridLayout->addWidget(cbYErrorMinusColumn, 8, 2, 1, 1);
-
//adjust layouts in the tabs
for (int i=0; i<ui.tabWidget->count(); ++i){
QGridLayout* layout = \
dynamic_cast<QGridLayout*>(ui.tabWidget->widget(i)->layout()); @@ -102,36 +87,7 @@ \
HistogramDock::HistogramDock(QWidget *parent): QWidget(parent), \
layout->setVerticalSpacing(2); }
- //Slots
-
- //Lines
- connect( ui.cbLineType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(lineTypeChanged(int)) );
- connect( ui.sbLineInterpolationPointsCount, SIGNAL(valueChanged(int)), this, \
SLOT(lineInterpolationPointsCountChanged(int)) );
- connect( ui.chkLineSkipGaps, SIGNAL(clicked(bool)), this, \
SLOT(lineSkipGapsChanged(bool)) );
- connect( ui.cbLineStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(lineStyleChanged(int)) );
- connect( ui.kcbLineColor, SIGNAL(changed(QColor)), this, \
SLOT(lineColorChanged(QColor)) );
- connect( ui.sbLineWidth, SIGNAL(valueChanged(double)), this, \
SLOT(lineWidthChanged(double)) );
- connect( ui.sbLineOpacity, SIGNAL(valueChanged(int)), this, \
SLOT(lineOpacityChanged(int)) );
-
- connect( ui.cbDropLineType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(dropLineTypeChanged(int)) );
- connect( ui.cbDropLineStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(dropLineStyleChanged(int)) );
- connect( ui.kcbDropLineColor, SIGNAL(changed(QColor)), this, \
SLOT(dropLineColorChanged(QColor)) );
- connect( ui.sbDropLineWidth, SIGNAL(valueChanged(double)), this, \
SLOT(dropLineWidthChanged(double)) );
- connect( ui.sbDropLineOpacity, SIGNAL(valueChanged(int)), this, \
SLOT(dropLineOpacityChanged(int)) );
-
- //Symbol
- connect( ui.cbSymbolStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(symbolsStyleChanged(int)) );
- connect( ui.sbSymbolSize, SIGNAL(valueChanged(double)), this, \
SLOT(symbolsSizeChanged(double)) );
- connect( ui.sbSymbolRotation, SIGNAL(valueChanged(int)), this, \
SLOT(symbolsRotationChanged(int)) );
- connect( ui.sbSymbolOpacity, SIGNAL(valueChanged(int)), this, \
SLOT(symbolsOpacityChanged(int)) );
-
- connect( ui.cbSymbolFillingStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(symbolsFillingStyleChanged(int)) );
- connect( ui.kcbSymbolFillingColor, SIGNAL(changed(QColor)), this, \
SLOT(symbolsFillingColorChanged(QColor)) );
-
- connect( ui.cbSymbolBorderStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(symbolsBorderStyleChanged(int)) );
- connect( ui.kcbSymbolBorderColor, SIGNAL(changed(QColor)), this, \
SLOT(symbolsBorderColorChanged(QColor)) );
- connect( ui.sbSymbolBorderWidth, SIGNAL(valueChanged(double)), this, \
SLOT(symbolsBorderWidthChanged(double)) );
-
+ //Slots
//Values
connect( ui.cbValuesType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(valuesTypeChanged(int)) ); connect( cbValuesColumn, \
SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(valuesColumnChanged(QModelIndex)) ); @@ -159,22 +115,9 @@ \
HistogramDock::HistogramDock(QWidget *parent): QWidget(parent), connect( \
ui.kcbFillingSecondColor, SIGNAL(changed(QColor)), this, \
SLOT(fillingSecondColorChanged(QColor)) ); connect( ui.sbFillingOpacity, \
SIGNAL(valueChanged(int)), this, SLOT(fillingOpacityChanged(int)) );
- //Error bars
- connect( ui.cbXErrorType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(xErrorTypeChanged(int)) );
- connect( cbXErrorPlusColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(xErrorPlusColumnChanged(QModelIndex)) );
- connect( cbXErrorMinusColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(xErrorMinusColumnChanged(QModelIndex)) );
- connect( ui.cbYErrorType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(yErrorTypeChanged(int)) );
- connect( cbYErrorPlusColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(yErrorPlusColumnChanged(QModelIndex)) );
- connect( cbYErrorMinusColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(yErrorMinusColumnChanged(QModelIndex)) );
- connect( ui.cbErrorBarsType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(errorBarsTypeChanged(int)) );
- connect( ui.sbErrorBarsCapSize, SIGNAL(valueChanged(double)), this, \
SLOT(errorBarsCapSizeChanged(double)) );
- connect( ui.cbErrorBarsStyle, SIGNAL(currentIndexChanged(int)), this, \
SLOT(errorBarsStyleChanged(int)) );
- connect( ui.kcbErrorBarsColor, SIGNAL(changed(QColor)), this, \
SLOT(errorBarsColorChanged(QColor)) );
- connect( ui.sbErrorBarsWidth, SIGNAL(valueChanged(double)), this, \
SLOT(errorBarsWidthChanged(double)) );
- connect( ui.sbErrorBarsOpacity, SIGNAL(valueChanged(int)), this, \
SLOT(errorBarsOpacityChanged(int)) );
-
+
//template handler
- TemplateHandler* templateHandler = new TemplateHandler(this, \
TemplateHandler::XYCurve); + TemplateHandler* templateHandler = new \
TemplateHandler(this, TemplateHandler::Histogram); \
ui.verticalLayout->addWidget(templateHandler); templateHandler->show();
connect(templateHandler, SIGNAL(loadConfigRequested(KConfig&)), this, \
SLOT(loadConfigFromTemplate(KConfig&))); @@ -208,6 +151,14 @@ void \
HistogramDock::retranslateUi(){
//TODO updatePenStyles, updateBrushStyles for all comboboxes
}
+// "General"-tab
+void HistogramDock::nameChanged(){
+ if (m_initializing)
+ return;
+
+ m_curve->setName(uiGeneralTab.leName->text());
+}
+
void HistogramDock::init(){
dateStrings<<"yyyy-MM-dd";
dateStrings<<"yyyy/MM/dd";
@@ -229,174 +180,6 @@ void HistogramDock::init(){
timeStrings<<"mm:ss.zzz";
timeStrings<<"hhmmss";
- m_initializing = true;
-
- //Line
- ui.cbLineType->addItem(i18n("none"));
- ui.cbLineType->addItem(i18n("line"));
- ui.cbLineType->addItem(i18n("horiz. start"));
- ui.cbLineType->addItem(i18n("vert. start"));
- ui.cbLineType->addItem(i18n("horiz. midpoint"));
- ui.cbLineType->addItem(i18n("vert. midpoint"));
- ui.cbLineType->addItem(i18n("2-segments"));
- ui.cbLineType->addItem(i18n("3-segments"));
- ui.cbLineType->addItem(i18n("cubic spline (natural)"));
- ui.cbLineType->addItem(i18n("cubic spline (periodic)"));
- ui.cbLineType->addItem(i18n("Akima-spline (natural)"));
- ui.cbLineType->addItem(i18n("Akima-spline (periodic)"));
-
- QPainter pa;
- //TODO size of the icon depending on the actuall height of the combobox?
- int iconSize = 20;
- QPixmap pm(iconSize, iconSize);
- ui.cbLineType->setIconSize(QSize(iconSize, iconSize));
-
- QPen pen(Qt::SolidPattern, 0);
- pa.setPen( pen );
-
- //no line
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.end();
- ui.cbLineType->setItemIcon(0, pm);
-
- //line
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(1, pm);
-
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,17,3);
- pa.drawLine(17,3,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(2, pm);
-
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,3,17);
- pa.drawLine(3,17,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(3, pm);
-
- //horizontal midpoint
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,10,3);
- pa.drawLine(10,3,10,17);
- pa.drawLine(10,17,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(4, pm);
-
- //vertical midpoint
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,3,10);
- pa.drawLine(3,10,17,10);
- pa.drawLine(17,10,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(5, pm);
-
- //2-segments
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 8,8,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,10,10);
- pa.end();
- ui.cbLineType->setItemIcon(6, pm);
-
- //3-segments
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 8,8,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.drawLine(3,3,17,17);
- pa.end();
- ui.cbLineType->setItemIcon(7, pm);
-
- //natural spline
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawEllipse( 1,1,4,4);
- pa.drawEllipse( 15,15,4,4);
- pa.rotate(45);
- pa.drawArc(2*sqrt(2),-4,17*sqrt(2),20,30*16,120*16);
-
- pa.end();
- ui.cbLineType->setItemIcon(8, pm);
- ui.cbLineType->setItemIcon(9, pm);
- ui.cbLineType->setItemIcon(10, pm);
- ui.cbLineType->setItemIcon(11, pm);
-
- GuiTools::updatePenStyles(ui.cbLineStyle, Qt::black);
-
- //Drop lines
- ui.cbDropLineType->addItem(i18n("no drop lines"));
- ui.cbDropLineType->addItem(i18n("drop lines, X"));
- ui.cbDropLineType->addItem(i18n("drop lines, Y"));
- ui.cbDropLineType->addItem(i18n("drop lines, XY"));
- ui.cbDropLineType->addItem(i18n("drop lines, X, zero baseline"));
- ui.cbDropLineType->addItem(i18n("drop lines, X, min baseline"));
- ui.cbDropLineType->addItem(i18n("drop lines, X, max baseline"));
- GuiTools::updatePenStyles(ui.cbDropLineStyle, Qt::black);
-
- //Symbols
- GuiTools::updatePenStyles(ui.cbSymbolBorderStyle, Qt::black);
-
- ui.cbSymbolStyle->setIconSize(QSize(iconSize, iconSize));
- QTransform trafo;
- trafo.scale(15, 15);
-
- ui.cbSymbolStyle->addItem(i18n("none"));
- for (int i=1; i<19; ++i) {
- Symbol::Style style = (Symbol::Style)i;
- pm.fill(Qt::transparent);
- pa.begin(&pm);
- pa.setRenderHint(QPainter::Antialiasing);
- pa.translate(iconSize/2,iconSize/2);
- pa.drawPath(trafo.map(Symbol::pathFromStyle(style)));
- pa.end();
- ui.cbSymbolStyle->addItem(QIcon(pm), Symbol::nameFromStyle(style));
- }
-
- GuiTools::updateBrushStyles(ui.cbSymbolFillingStyle, Qt::black);
- m_initializing = false;
-
//Values
ui.cbValuesType->addItem(i18n("no values"));
ui.cbValuesType->addItem("x");
@@ -441,44 +224,11 @@ void HistogramDock::init(){
ui.cbFillingImageStyle->addItem(i18n("center tiled"));
GuiTools::updateBrushStyles(ui.cbFillingBrushStyle, Qt::SolidPattern);
- //Error-bars
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.drawLine(3,10,17,10);//vert. line
- pa.drawLine(10,3,10,17);//hor. line
- pa.end();
- ui.cbErrorBarsType->addItem(i18n("bars"));
- ui.cbErrorBarsType->setItemIcon(0, pm);
-
- pm.fill(Qt::transparent);
- pa.begin( &pm );
- pa.setRenderHint(QPainter::Antialiasing);
- pa.setBrush(Qt::SolidPattern);
- pa.drawLine(3,10,17,10); //vert. line
- pa.drawLine(10,3,10,17); //hor. line
- pa.drawLine(7,3,13,3); //upper cap
- pa.drawLine(7,17,13,17); //bottom cap
- pa.drawLine(3,7,3,13); //left cap
- pa.drawLine(17,7,17,13); //right cap
- pa.end();
- ui.cbErrorBarsType->addItem(i18n("bars with ends"));
- ui.cbErrorBarsType->setItemIcon(1, pm);
-
- ui.cbXErrorType->addItem(i18n("no"));
- ui.cbXErrorType->addItem(i18n("symmetric"));
- ui.cbXErrorType->addItem(i18n("asymmetric"));
-
- ui.cbYErrorType->addItem(i18n("no"));
- ui.cbYErrorType->addItem(i18n("symmetric"));
- ui.cbYErrorType->addItem(i18n("asymmetric"));
-
- GuiTools::updatePenStyles(ui.cbErrorBarsStyle, Qt::black);
}
void HistogramDock::setModel() {
QList<const char*> list;
list<<"Folder"<<"Workbook"<<"Datapicker"<<"DatapickerCurve"<<"Spreadsheet"
- <<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"
+ <<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"<< "Histogram"
<<"XYInterpolationCurve"<<"XYFitCurve"<<"XYFourierFilterCurve";
if (cbXColumn) {
@@ -486,10 +236,6 @@ void HistogramDock::setModel() {
cbYColumn->setTopLevelClasses(list);
}
cbValuesColumn->setTopLevelClasses(list);
- cbXErrorMinusColumn->setTopLevelClasses(list);
- cbXErrorPlusColumn->setTopLevelClasses(list);
- cbYErrorMinusColumn->setTopLevelClasses(list);
- cbYErrorPlusColumn->setTopLevelClasses(list);
list.clear();
list<<"Column";
@@ -499,20 +245,11 @@ void HistogramDock::setModel() {
cbYColumn->setSelectableClasses(list);
}
cbValuesColumn->setSelectableClasses(list);
- cbXErrorMinusColumn->setSelectableClasses(list);
- cbXErrorPlusColumn->setSelectableClasses(list);
- cbYErrorMinusColumn->setSelectableClasses(list);
- cbYErrorPlusColumn->setSelectableClasses(list);
-
if (cbXColumn) {
cbXColumn->setModel(m_aspectTreeModel);
cbYColumn->setModel(m_aspectTreeModel);
}
cbValuesColumn->setModel(m_aspectTreeModel);
- cbXErrorMinusColumn->setModel(m_aspectTreeModel);
- cbXErrorPlusColumn->setModel(m_aspectTreeModel);
- cbYErrorMinusColumn->setModel(m_aspectTreeModel);
- cbYErrorPlusColumn->setModel(m_aspectTreeModel);
}
void HistogramDock::setCurves(QList<Histogram*> list){
m_initializing=true;
@@ -569,6 +306,7 @@ void HistogramDock::initGeneralTab(){
//Slots
connect(m_curve, SIGNAL(aspectDescriptionChanged(const AbstractAspect*)),this, \
SLOT(curveDescriptionChanged(const AbstractAspect*))); +
connect(m_curve, SIGNAL(xColumnChanged(const AbstractColumn*)), this, \
SLOT(curveXColumnChanged(const AbstractColumn*))); connect(m_curve, \
SIGNAL(yColumnChanged(const AbstractColumn*)), this, SLOT(curveYColumnChanged(const \
AbstractColumn*))); connect(m_curve, SIGNAL(visibilityChanged(bool)), this, \
SLOT(curveVisibilityChanged(bool))); @@ -579,20 +317,111 @@ void \
HistogramDock::initGeneralTab(){
}
+//Values-Tab
+void HistogramDock::curveValuesTypeChanged(Histogram::ValuesType type) {
+ m_initializing = true;
+ ui.cbValuesType->setCurrentIndex((int) type);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesColumnChanged(const AbstractColumn* column) {
+ m_initializing = true;
+ this->setModelIndexFromColumn(cbValuesColumn, column);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesPositionChanged(Histogram::ValuesPosition position) {
+ m_initializing = true;
+ ui.cbValuesPosition->setCurrentIndex((int) position);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesDistanceChanged(qreal distance) {
+ m_initializing = true;
+ ui.sbValuesDistance->setValue( Worksheet::convertFromSceneUnits(distance, \
Worksheet::Point) ); + m_initializing = false;
+}
+void HistogramDock::curveValuesRotationAngleChanged(qreal angle) {
+ m_initializing = true;
+ ui.sbValuesRotation->setValue(angle);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesOpacityChanged(qreal opacity) {
+ m_initializing = true;
+ ui.sbValuesOpacity->setValue( round(opacity*100.0) );
+ m_initializing = false;
+}
+void HistogramDock::curveValuesPrefixChanged(QString prefix) {
+ m_initializing = true;
+ ui.leValuesPrefix->setText(prefix);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesSuffixChanged(QString suffix) {
+ m_initializing = true;
+ ui.leValuesSuffix->setText(suffix);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesFontChanged(QFont font) {
+ m_initializing = true;
+ font.setPointSizeF( round(Worksheet::convertFromSceneUnits(font.pixelSize(), \
Worksheet::Point)) ); + ui.kfrValuesFont->setFont(font);
+ m_initializing = false;
+}
+void HistogramDock::curveValuesColorChanged(QColor color) {
+ m_initializing = true;
+ ui.kcbValuesColor->setColor(color);
+ m_initializing = false;
+}
+
+//Filling
+void HistogramDock::curveFillingPositionChanged(Histogram::FillingPosition position) \
{ + m_initializing = true;
+ ui.cbFillingPosition->setCurrentIndex((int)position);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingTypeChanged(PlotArea::BackgroundType type){
+ m_initializing = true;
+ ui.cbFillingType->setCurrentIndex(type);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingColorStyleChanged(PlotArea::BackgroundColorStyle \
style){ + m_initializing = true;
+ ui.cbFillingColorStyle->setCurrentIndex(style);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingImageStyleChanged(PlotArea::BackgroundImageStyle \
style){ + m_initializing = true;
+ ui.cbFillingImageStyle->setCurrentIndex(style);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingBrushStyleChanged(Qt::BrushStyle style){
+ m_initializing = true;
+ ui.cbFillingBrushStyle->setCurrentIndex(style);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingFirstColorChanged(QColor& color){
+ m_initializing = true;
+ ui.kcbFillingFirstColor->setColor(color);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingSecondColorChanged(QColor& color){
+ m_initializing = true;
+ ui.kcbFillingSecondColor->setColor(color);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingFileNameChanged(QString& filename){
+ m_initializing = true;
+ ui.kleFillingFileName->setText(filename);
+ m_initializing = false;
+}
+void HistogramDock::curveFillingOpacityChanged(float opacity){
+ m_initializing = true;
+ ui.sbFillingOpacity->setValue( round(opacity*100.0) );
+ m_initializing = false;
+}
void HistogramDock::initTabs() {
//if there are more then one curve in the list, disable the tab "general"
if (m_curvesList.size()==1){
/*this->setModelIndexFromColumn(cbValuesColumn, m_curve->valuesColumn());
- this->setModelIndexFromColumn(cbXErrorPlusColumn, m_curve->xErrorPlusColumn());
- this->setModelIndexFromColumn(cbXErrorMinusColumn, m_curve->xErrorMinusColumn());
- this->setModelIndexFromColumn(cbYErrorPlusColumn, m_curve->yErrorPlusColumn());
- this->setModelIndexFromColumn(cbYErrorMinusColumn, m_curve->yErrorMinusColumn());
*/}else {
cbValuesColumn->setCurrentModelIndex(QModelIndex());
- cbXErrorPlusColumn->setCurrentModelIndex(QModelIndex());
- cbXErrorMinusColumn->setCurrentModelIndex(QModelIndex());
- cbYErrorPlusColumn->setCurrentModelIndex(QModelIndex());
- cbYErrorMinusColumn->setCurrentModelIndex(QModelIndex());
}
//show the properties of the first curve
@@ -600,25 +429,6 @@ void HistogramDock::initTabs() {
loadConfig(config);
//Slots
-
- //Line-Tab
- connect(m_curve, SIGNAL(lineTypeChanged(Histogram::LineType)), this, \
SLOT(curveLineTypeChanged(Histogram::LineType)));
- connect(m_curve, SIGNAL(lineSkipGapsChanged(bool)), this, \
SLOT(curveLineSkipGapsChanged(bool)));
- connect(m_curve, SIGNAL(lineInterpolationPointsCountChanged(int)), this, \
SLOT(curveLineInterpolationPointsCountChanged(int)));
- connect(m_curve, SIGNAL(linePenChanged(QPen)), this, \
SLOT(curveLinePenChanged(QPen)));
- connect(m_curve, SIGNAL(lineOpacityChanged(qreal)), this, \
SLOT(curveLineOpacityChanged(qreal)));
- connect(m_curve, SIGNAL(dropLineTypeChanged(Histogram::DropLineType)), this, \
SLOT(curveDropLineTypeChanged(Histogram::DropLineType)));
- connect(m_curve, SIGNAL(dropLinePenChanged(QPen)), this, \
SLOT(curveDropLinePenChanged(QPen)));
- connect(m_curve, SIGNAL(dropLineOpacityChanged(qreal)), this, \
SLOT(curveDropLineOpacityChanged(qreal)));
-
- //Symbol-Tab
- connect(m_curve, SIGNAL(symbolsStyleChanged(Symbol::Style)), this, \
SLOT(curveSymbolsStyleChanged(Symbol::Style)));
- connect(m_curve, SIGNAL(symbolsSizeChanged(qreal)), this, \
SLOT(curveSymbolsSizeChanged(qreal)));
- connect(m_curve, SIGNAL(symbolsRotationAngleChanged(qreal)), this, \
SLOT(curveSymbolsRotationAngleChanged(qreal)));
- connect(m_curve, SIGNAL(symbolsOpacityChanged(qreal)), this, \
SLOT(curveSymbolsOpacityChanged(qreal)));
- connect(m_curve, SIGNAL(symbolsBrushChanged(QBrush)), this, \
SLOT(curveSymbolsBrushChanged(QBrush)));
- connect(m_curve, SIGNAL(symbolsPenChanged(QPen)), this, \
SLOT(curveSymbolsPenChanged(QPen)));
-
//Values-Tab
connect(m_curve, SIGNAL(valuesTypeChanged(Histogram::ValuesType)), this, \
SLOT(curveValuesTypeChanged(Histogram::ValuesType))); connect(m_curve, \
SIGNAL(valuesColumnChanged(const AbstractColumn*)), this, \
SLOT(curveValuesColumnChanged(const AbstractColumn*))); @@ -641,20 +451,195 @@ void \
HistogramDock::initTabs() { connect( m_curve, \
SIGNAL(fillingSecondColorChanged(QColor&)), this, \
SLOT(curveFillingSecondColorChanged(QColor&)) ); connect( m_curve, \
SIGNAL(fillingFileNameChanged(QString&)), this, \
SLOT(curveFillingFileNameChanged(QString&)) ); connect( m_curve, \
SIGNAL(fillingOpacityChanged(float)), this, SLOT(curveFillingOpacityChanged(float)) \
); +}
- //"Error bars"-Tab
- connect(m_curve, SIGNAL(xErrorTypeChanged(Histogram::ErrorType)), this, \
SLOT(curveXErrorTypeChanged(Histogram::ErrorType)));
- connect(m_curve, SIGNAL(xErrorPlusColumnChanged(const AbstractColumn*)), this, \
SLOT(curveXErrorPlusColumnChanged(const AbstractColumn*)));
- connect(m_curve, SIGNAL(xErrorMinusColumnChanged(const AbstractColumn*)), this, \
SLOT(curveXErrorMinusColumnChanged(const AbstractColumn*)));
- connect(m_curve, SIGNAL(yErrorTypeChanged(Histogram::ErrorType)), this, \
SLOT(curveYErrorTypeChanged(Histogram::ErrorType)));
- connect(m_curve, SIGNAL(yErrorPlusColumnChanged(const AbstractColumn*)), this, \
SLOT(curveYErrorPlusColumnChanged(const AbstractColumn*)));
- connect(m_curve, SIGNAL(yErrorMinusColumnChanged(const AbstractColumn*)), this, \
SLOT(curveYErrorMinusColumnChanged(const AbstractColumn*)));
- connect(m_curve, SIGNAL(errorBarsCapSizeChanged(qreal)), this, \
SLOT(curveErrorBarsCapSizeChanged(qreal)));
- connect(m_curve, SIGNAL(errorBarsTypeChanged(Histogram::ErrorBarsType)), this, \
SLOT(curveErrorBarsTypeChanged(Histogram::ErrorBarsType)));
- connect(m_curve, SIGNAL(errorBarsPenChanged(QPen)), this, \
SLOT(curveErrorBarsPenChanged(QPen)));
- connect(m_curve, SIGNAL(errorBarsOpacityChanged(qreal)), this, \
SLOT(curveErrorBarsOpacityChanged(qreal))); +//Filling-tab
+void HistogramDock::fillingPositionChanged(int index){
+ Histogram::FillingPosition fillingPosition = Histogram::FillingPosition(index);
+
+ bool b = (fillingPosition != Histogram::NoFilling);
+ ui.cbFillingType->setEnabled(b);
+ ui.cbFillingColorStyle->setEnabled(b);
+ ui.cbFillingBrushStyle->setEnabled(b);
+ ui.cbFillingImageStyle->setEnabled(b);
+ ui.kcbFillingFirstColor->setEnabled(b);
+ ui.kcbFillingSecondColor->setEnabled(b);
+ ui.kleFillingFileName->setEnabled(b);
+ ui.bFillingOpen->setEnabled(b);
+ ui.sbFillingOpacity->setEnabled(b);
+
+ if (m_initializing)
+ return;
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingPosition(fillingPosition);
}
+void HistogramDock::fillingTypeChanged(int index){
+ PlotArea::BackgroundType type = (PlotArea::BackgroundType)index;
+
+ if (type == PlotArea::Color){
+ ui.lFillingColorStyle->show();
+ ui.cbFillingColorStyle->show();
+ ui.lFillingImageStyle->hide();
+ ui.cbFillingImageStyle->hide();
+ ui.lFillingBrushStyle->hide();
+ ui.cbFillingBrushStyle->hide();
+
+ ui.lFillingFileName->hide();
+ ui.kleFillingFileName->hide();
+ ui.bFillingOpen->hide();
+
+ ui.lFillingFirstColor->show();
+ ui.kcbFillingFirstColor->show();
+
+ PlotArea::BackgroundColorStyle style =
+ (PlotArea::BackgroundColorStyle) ui.cbFillingColorStyle->currentIndex();
+ if (style == PlotArea::SingleColor){
+ ui.lFillingFirstColor->setText(i18n("Color"));
+ ui.lFillingSecondColor->hide();
+ ui.kcbFillingSecondColor->hide();
+ }else{
+ ui.lFillingFirstColor->setText(i18n("First Color"));
+ ui.lFillingSecondColor->show();
+ ui.kcbFillingSecondColor->show();
+ }
+ }else if(type == PlotArea::Image){
+ ui.lFillingColorStyle->hide();
+ ui.cbFillingColorStyle->hide();
+ ui.lFillingImageStyle->show();
+ ui.cbFillingImageStyle->show();
+ ui.lFillingBrushStyle->hide();
+ ui.cbFillingBrushStyle->hide();
+ ui.lFillingFileName->show();
+ ui.kleFillingFileName->show();
+ ui.bFillingOpen->show();
+
+ ui.lFillingFirstColor->hide();
+ ui.kcbFillingFirstColor->hide();
+ ui.lFillingSecondColor->hide();
+ ui.kcbFillingSecondColor->hide();
+ }else if(type == PlotArea::Pattern) {
+ ui.lFillingFirstColor->setText(i18n("Color"));
+ ui.lFillingColorStyle->hide();
+ ui.cbFillingColorStyle->hide();
+ ui.lFillingImageStyle->hide();
+ ui.cbFillingImageStyle->hide();
+ ui.lFillingBrushStyle->show();
+ ui.cbFillingBrushStyle->show();
+ ui.lFillingFileName->hide();
+ ui.kleFillingFileName->hide();
+ ui.bFillingOpen->hide();
+
+ ui.lFillingFirstColor->show();
+ ui.kcbFillingFirstColor->show();
+ ui.lFillingSecondColor->hide();
+ ui.kcbFillingSecondColor->hide();
+ }
+
+ if (m_initializing)
+ return;
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingType(type);
+}
+
+void HistogramDock::fillingColorStyleChanged(int index){
+ PlotArea::BackgroundColorStyle style = (PlotArea::BackgroundColorStyle)index;
+
+ if (style == PlotArea::SingleColor){
+ ui.lFillingFirstColor->setText(i18n("Color"));
+ ui.lFillingSecondColor->hide();
+ ui.kcbFillingSecondColor->hide();
+ }else{
+ ui.lFillingFirstColor->setText(i18n("First Color"));
+ ui.lFillingSecondColor->show();
+ ui.kcbFillingSecondColor->show();
+ ui.lFillingBrushStyle->hide();
+ ui.cbFillingBrushStyle->hide();
+ }
+
+ if (m_initializing)
+ return;
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingColorStyle(style);
+}
+
+void HistogramDock::fillingImageStyleChanged(int index){
+ if (m_initializing)
+ return;
+
+ PlotArea::BackgroundImageStyle style = (PlotArea::BackgroundImageStyle)index;
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingImageStyle(style);
+}
+
+void HistogramDock::fillingBrushStyleChanged(int index){
+ if (m_initializing)
+ return;
+
+ Qt::BrushStyle style = (Qt::BrushStyle)index;
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingBrushStyle(style);
+}
+
+void HistogramDock::fillingFirstColorChanged(const QColor& c){
+ if (m_initializing)
+ return;
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingFirstColor(c);
+}
+
+void HistogramDock::fillingSecondColorChanged(const QColor& c){
+ if (m_initializing)
+ return;
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingSecondColor(c);
+}
+
+/*!
+ opens a file dialog and lets the user select the image file.
+*/
+void HistogramDock::selectFile() {
+ KConfigGroup conf(KSharedConfig::openConfig(), "HistogramDock");
+ QString dir = conf.readEntry("LastImageDir", "");
+ QString path = QFileDialog::getOpenFileName(this, i18n("Select the image file"), \
dir); + if (path.isEmpty())
+ return; //cancel was clicked in the file-dialog
+
+ int pos = path.lastIndexOf(QDir::separator());
+ if (pos!=-1) {
+ QString newDir = path.left(pos);
+ if (newDir!=dir)
+ conf.writeEntry("LastImageDir", newDir);
+ }
+
+ ui.kleFillingFileName->setText( path );
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingFileName(path);
+}
+
+void HistogramDock::fileNameChanged(){
+ if (m_initializing)
+ return;
+
+ QString fileName = ui.kleFillingFileName->text();
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingFileName(fileName);
+}
+
+void HistogramDock::fillingOpacityChanged(int value){
+ if (m_initializing)
+ return;
+
+ qreal opacity = (float)value/100.;
+ foreach(Histogram* curve, m_curvesList)
+ curve->setFillingOpacity(opacity);
+}
void HistogramDock::loadConfig(KConfig& config) {
KConfigGroup group = config.group( "Histogram" );
@@ -663,35 +648,7 @@ void HistogramDock::loadConfig(KConfig& config) {
//It doesn't make sense to load/save them in the template.
//This data is read in HistogramDock::setCurves().
- //Line
- ui.cbLineType->setCurrentIndex( group.readEntry("LineType", (int) \
m_curve->lineType()) );
- ui.chkLineSkipGaps->setChecked( group.readEntry("LineSkipGaps", \
m_curve->lineSkipGaps()) );
- ui.sbLineInterpolationPointsCount->setValue( \
group.readEntry("LineInterpolationPointsCount", \
m_curve->lineInterpolationPointsCount()) );
- ui.cbLineStyle->setCurrentIndex( group.readEntry("LineStyle", (int) \
m_curve->linePen().style()) );
- ui.kcbLineColor->setColor( group.readEntry("LineColor", m_curve->linePen().color()) \
);
- ui.sbLineWidth->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("LineWidth", \
m_curve->linePen().widthF()), Worksheet::Point) );
- ui.sbLineOpacity->setValue( round(group.readEntry("LineOpacity", \
m_curve->lineOpacity())*100.0) );
-
- //Drop lines
- ui.cbDropLineType->setCurrentIndex( group.readEntry("DropLineType", (int) \
m_curve->dropLineType()) );
- ui.cbDropLineStyle->setCurrentIndex( group.readEntry("DropLineStyle", (int) \
m_curve->dropLinePen().style()) );
- ui.kcbDropLineColor->setColor( group.readEntry("DropLineColor", \
m_curve->dropLinePen().color()) );
- ui.sbDropLineWidth->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("DropLineWidth", \
m_curve->dropLinePen().widthF()),Worksheet::Point) );
- ui.sbDropLineOpacity->setValue( round(group.readEntry("DropLineOpacity", \
m_curve->dropLineOpacity())*100.0) );
-
- //Symbols
- //TODO: character
- ui.cbSymbolStyle->setCurrentIndex( group.readEntry("SymbolStyle", \
(int)m_curve->symbolsStyle()) );
- ui.sbSymbolSize->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("SymbolSize", \
m_curve->symbolsSize()), Worksheet::Point) );
- ui.sbSymbolRotation->setValue( group.readEntry("SymbolRotation", \
m_curve->symbolsRotationAngle()) );
- ui.sbSymbolOpacity->setValue( round(group.readEntry("SymbolOpacity", \
m_curve->symbolsOpacity())*100.0) );
- ui.cbSymbolFillingStyle->setCurrentIndex( group.readEntry("SymbolFillingStyle", \
(int) m_curve->symbolsBrush().style()) );
- ui.kcbSymbolFillingColor->setColor( group.readEntry("SymbolFillingColor", \
m_curve->symbolsBrush().color()) );
- ui.cbSymbolBorderStyle->setCurrentIndex( group.readEntry("SymbolBorderStyle", \
(int) m_curve->symbolsPen().style()) );
- ui.kcbSymbolBorderColor->setColor( group.readEntry("SymbolBorderColor", \
m_curve->symbolsPen().color()) );
- ui.sbSymbolBorderWidth->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("SymbolBorderWidth",m_curve->symbolsPen().widthF()), \
Worksheet::Point) );
-
- //Values
+ //Values
ui.cbValuesType->setCurrentIndex( group.readEntry("ValuesType", (int) \
m_curve->valuesType()) ); ui.cbValuesPosition->setCurrentIndex( \
group.readEntry("ValuesPosition", (int) m_curve->valuesPosition()) ); \
ui.sbValuesDistance->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("ValuesDistance", \
m_curve->valuesDistance()), Worksheet::Point) ); @@ -715,22 +672,7 @@ void \
HistogramDock::loadConfig(KConfig& config) { ui.kcbFillingSecondColor->setColor( \
group.readEntry("FillingSecondColor", m_curve->fillingSecondColor()) ); \
ui.sbFillingOpacity->setValue( round(group.readEntry("FillingOpacity", \
m_curve->fillingOpacity())*100.0) );
- //Error bars
- ui.cbXErrorType->setCurrentIndex( group.readEntry("XErrorType", (int) \
m_curve->xErrorType()) );
- ui.cbYErrorType->setCurrentIndex( group.readEntry("YErrorType", (int) \
m_curve->yErrorType()) );
- ui.cbErrorBarsType->setCurrentIndex( group.readEntry("ErrorBarsType", (int) \
m_curve->errorBarsType()) );
- ui.sbErrorBarsCapSize->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("ErrorBarsCapSize", \
m_curve->errorBarsCapSize()), Worksheet::Point) );
- ui.cbErrorBarsStyle->setCurrentIndex( group.readEntry("ErrorBarsStyle", (int) \
m_curve->errorBarsPen().style()) );
- ui.kcbErrorBarsColor->setColor( group.readEntry("ErrorBarsColor", \
m_curve->errorBarsPen().color()) );
- ui.sbErrorBarsWidth->setValue( \
Worksheet::convertFromSceneUnits(group.readEntry("ErrorBarsWidth", \
m_curve->errorBarsPen().widthF()),Worksheet::Point) );
- ui.sbErrorBarsOpacity->setValue( round(group.readEntry("ErrorBarsOpacity", \
m_curve->errorBarsOpacity())*100.0) );
-
m_initializing=true;
- GuiTools::updatePenStyles(ui.cbLineStyle, ui.kcbLineColor->color());
- GuiTools::updatePenStyles(ui.cbDropLineStyle, ui.kcbDropLineColor->color());
- GuiTools::updateBrushStyles(ui.cbSymbolFillingStyle, \
ui.kcbSymbolFillingColor->color());
- GuiTools::updatePenStyles(ui.cbSymbolBorderStyle, \
ui.kcbSymbolBorderColor->color());
- GuiTools::updatePenStyles(ui.cbErrorBarsStyle, ui.kcbErrorBarsColor->color());
m_initializing=false;
}
void HistogramDock::setupGeneral() {
@@ -753,6 +695,46 @@ void HistogramDock::setupGeneral() {
connect( uiGeneralTab.leName, SIGNAL(returnPressed()), this, SLOT(nameChanged()) );
connect( uiGeneralTab.leComment, SIGNAL(returnPressed()), this, \
SLOT(commentChanged()) ); connect( uiGeneralTab.chkVisible, SIGNAL(clicked(bool)), \
this, SLOT(visibilityChanged(bool)) ); + qDebug() << "colo";
connect( cbXColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(xColumnChanged(QModelIndex)) ); + qDebug() << "colo1";
connect( cbYColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(yColumnChanged(QModelIndex)) ); +
+}
+
+void HistogramDock::xColumnChanged(const QModelIndex& index) {
+
+ qDebug() << "here";
+ if (m_initializing)
+ return;
+
+ qDebug() << "here";
+
+ AbstractAspect* aspect = static_cast<AbstractAspect*>(index.internalPointer());
+ AbstractColumn* column = 0;
+ if (aspect) {
+ qDebug() << "here as[ect";
+ column = dynamic_cast<AbstractColumn*>(aspect);
+ Q_ASSERT(column);
+ }
+
+ foreach(Histogram* curve, m_curvesList) {
+ qDebug() << "here as well";
+ curve->setXColumn(column);
+ }
}
+
+void HistogramDock::yColumnChanged(const QModelIndex& index) {
+ if (m_initializing)
+ return;
+
+ AbstractAspect* aspect = static_cast<AbstractAspect*>(index.internalPointer());
+ AbstractColumn* column = 0;
+ if (aspect) {
+ column = dynamic_cast<AbstractColumn*>(aspect);
+ Q_ASSERT(column);
+ }
+
+ foreach(Histogram* curve, m_curvesList)
+ curve->setYColumn(column);
+}
\ No newline at end of file
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.h \
b/src/kdefrontend/dockwidgets/HistogramDock.h index 90c55c8..48eb964 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.h
+++ b/src/kdefrontend/dockwidgets/HistogramDock.h
@@ -44,7 +44,7 @@ class Column;
class KUrlCompletion;
class HistogramDock : public QWidget {
- //Q_OBJECT
+ Q_OBJECT
public:
explicit HistogramDock(QWidget*);
@@ -61,10 +61,6 @@ private:
TreeViewComboBox* cbXColumn;
TreeViewComboBox* cbYColumn;
TreeViewComboBox* cbValuesColumn;
- TreeViewComboBox* cbXErrorPlusColumn;
- TreeViewComboBox* cbXErrorMinusColumn;
- TreeViewComboBox* cbYErrorPlusColumn;
- TreeViewComboBox* cbYErrorMinusColumn;
virtual void initGeneralTab();
void updateValuesFormatWidgets(const AbstractColumn::ColumnMode);
@@ -90,40 +86,15 @@ private slots:
//SLOTs for changes triggered in HistogramDock
void nameChanged();
- void commentChanged();
+ //void commentChanged();
void xColumnChanged(const QModelIndex&);
void yColumnChanged(const QModelIndex&);
- void visibilityChanged(bool);
+// void visibilityChanged(bool);
//Histogram-types
- void histogramTypeChanged(int);
- //Line-Tab
- void lineTypeChanged(int);
- void lineSkipGapsChanged(bool);
- void lineInterpolationPointsCountChanged(int);
- void lineStyleChanged(int);
- void lineColorChanged(const QColor&);
- void lineWidthChanged(double);
- void lineOpacityChanged(int);
-
- void dropLineTypeChanged(int);
- void dropLineStyleChanged(int);
- void dropLineColorChanged(const QColor&);
- void dropLineWidthChanged(double);
- void dropLineOpacityChanged(int);
-
- //Symbol-tab
- void symbolsStyleChanged(int);
- void symbolsSizeChanged(double);
- void symbolsRotationChanged(int);
- void symbolsOpacityChanged(int);
- void symbolsFillingStyleChanged(int);
- void symbolsFillingColorChanged(const QColor&);
- void symbolsBorderStyleChanged(int);
- void symbolsBorderColorChanged(const QColor&);
- void symbolsBorderWidthChanged(double);
+ //void histogramTypeChanged(int);
//Values-Tab
- void valuesTypeChanged(int);
+ /*void valuesTypeChanged(int);
void valuesColumnChanged(const QModelIndex&);
void valuesPositionChanged(int);
void valuesDistanceChanged(double);
@@ -132,7 +103,7 @@ private slots:
void valuesPrefixChanged();
void valuesSuffixChanged();
void valuesFontChanged(const QFont&);
- void valuesColorChanged(const QColor&);
+ void valuesColorChanged(const QColor&);*/
//Filling-tab
void fillingPositionChanged(int);
@@ -146,44 +117,12 @@ private slots:
void fileNameChanged();
void fillingOpacityChanged(int);
- //"Error bars"-Tab
- void xErrorTypeChanged(int) const;
- void yErrorTypeChanged(int) const;
- void xErrorPlusColumnChanged(const QModelIndex&) const;
- void xErrorMinusColumnChanged(const QModelIndex&) const;
- void yErrorPlusColumnChanged(const QModelIndex&) const;
- void yErrorMinusColumnChanged(const QModelIndex&) const;
- void errorBarsTypeChanged(int) const;
- void errorBarsCapSizeChanged(double) const;
- void errorBarsStyleChanged(int) const;
- void errorBarsColorChanged(const QColor&);
- void errorBarsWidthChanged(double) const;
- void errorBarsOpacityChanged(int) const;
-
//SLOTs for changes triggered in Histogram
//General-Tab
- void curveDescriptionChanged(const AbstractAspect*);
+ /*void curveDescriptionChanged(const AbstractAspect*);
void curveXColumnChanged(const AbstractColumn*);
void curveYColumnChanged(const AbstractColumn*);
- void curveVisibilityChanged(bool);
-
- //Line-Tab
- void curveLineTypeChanged(Histogram::LineType);
- void curveLineSkipGapsChanged(bool);
- void curveLineInterpolationPointsCountChanged(int);
- void curveLinePenChanged(const QPen&);
- void curveLineOpacityChanged(qreal);
- void curveDropLineTypeChanged(Histogram::DropLineType);
- void curveDropLinePenChanged(const QPen&);
- void curveDropLineOpacityChanged(qreal);
-
- //Symbol-Tab
- void curveSymbolsStyleChanged(Symbol::Style);
- void curveSymbolsSizeChanged(qreal);
- void curveSymbolsRotationAngleChanged(qreal);
- void curveSymbolsOpacityChanged(qreal);
- void curveSymbolsBrushChanged(QBrush);
- void curveSymbolsPenChanged(const QPen&);
+ void curveVisibilityChanged(bool);*/
//Values-Tab
void curveValuesTypeChanged(Histogram::ValuesType);
@@ -208,21 +147,10 @@ private slots:
void curveFillingFileNameChanged(QString&);
void curveFillingOpacityChanged(float);
- //"Error bars"-Tab
- void curveXErrorTypeChanged(Histogram::ErrorType);
- void curveXErrorPlusColumnChanged(const AbstractColumn*);
- void curveXErrorMinusColumnChanged(const AbstractColumn*);
- void curveYErrorTypeChanged(Histogram::ErrorType);
- void curveYErrorPlusColumnChanged(const AbstractColumn*);
- void curveYErrorMinusColumnChanged(const AbstractColumn*);
- void curveErrorBarsCapSizeChanged(qreal);
- void curveErrorBarsTypeChanged(Histogram::ErrorBarsType);
- void curveErrorBarsPenChanged(QPen);
- void curveErrorBarsOpacityChanged(qreal);
//load and save
- void loadConfigFromTemplate(KConfig&);
- void saveConfigAsTemplate(KConfig&);
+// void loadConfigFromTemplate(KConfig&);
+// void saveConfigAsTemplate(KConfig&);
signals:
void info(const QString&);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic