[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot/histogram_chart] src: Functioning Ordinary histogram
From: Anu Mittal <anu22mittal () gmail ! com>
Date: 2016-07-31 16:32:33
Message-ID: E1bTtfF-00021J-1H () code ! kde ! org
[Download RAW message or body]
Git commit 051d507ad5544039a3cd0dc7caadf8870c0dca76 by Anu Mittal.
Committed on 31/07/2016 at 16:32.
Pushed by anumittal into branch 'histogram_chart'.
Functioning Ordinary histogram
M +49 -11 src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
M +147 -117 src/backend/worksheet/plots/cartesian/Histogram.cpp
M +4 -2 src/backend/worksheet/plots/cartesian/Histogram.h
M +5 -0 src/backend/worksheet/plots/cartesian/HistogramPrivate.h
M +16 -1 src/kdefrontend/dockwidgets/HistogramDock.cpp
M +3 -1 src/kdefrontend/dockwidgets/HistogramDock.h
http://commits.kde.org/labplot/051d507ad5544039a3cd0dc7caadf8870c0dca76
diff --git a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp \
b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp index f336166..59462f9 \
100644
--- a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
+++ b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
@@ -830,12 +830,10 @@ void CartesianPlot::HistogramdataChanged(){
Q_ASSERT(curve);
d->curvesXMinMaxIsDirty = true;
d->curvesYMinMaxIsDirty = true;
- if (d->autoScaleX && d->autoScaleY)
+ if (d->autoScaleX)
this->scaleAuto();
else if (d->autoScaleX)
this->scaleAutoX();
- else if (d->autoScaleY)
- this->scaleAutoY();
else
curve->retransform();
}
@@ -865,9 +863,10 @@ void CartesianPlot::xHistogramDataChanged(){
Histogram* curve = dynamic_cast<Histogram*>(QObject::sender());
Q_ASSERT(curve);
d->curvesXMinMaxIsDirty = true;
- if (d->autoScaleX)
+ if (d->autoScaleX) {
this->scaleAutoX();
- else
+ this->scaleAutoY();
+ } else
curve->retransform();
}
/*!
@@ -946,7 +945,6 @@ void CartesianPlot::setMouseMode(const MouseMode mouseMode) {
void CartesianPlot::scaleAutoX(){
Q_D(CartesianPlot);
-
//loop over all xy-curves and determine the maximum x-value
if (d->curvesXMinMaxIsDirty) {
d->curvesXMin = INFINITY;
@@ -957,7 +955,6 @@ void CartesianPlot::scaleAutoX(){
continue;
if (!curve->xColumn())
continue;
-
if (curve->xColumn()->minimum() != INFINITY){
if (curve->xColumn()->minimum() < d->curvesXMin)
d->curvesXMin = curve->xColumn()->minimum();
@@ -974,17 +971,17 @@ void CartesianPlot::scaleAutoX(){
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();
}
}
+ //qDebug() << "autoscalx Max Y, X: " << d->curvesYMax << d->curvesXMax;
+ //qDebug() << "autoscalex Min Y, X: " << d->curvesYMin << d->curvesXMin;
d->curvesXMinMaxIsDirty = false;
}
@@ -1020,6 +1017,18 @@ void CartesianPlot::scaleAutoX(){
void CartesianPlot::scaleAutoY(){
Q_D(CartesianPlot);
+
+ QList<const Histogram*> childrenHistogram = this->children<const Histogram>();
+ foreach(const Histogram* curve, childrenHistogram) {
+ if (!curve->isVisible())
+ continue;
+
+ d->curvesYMin = 0.0;
+ if (curve->getYMaximum() != -INFINITY) {
+ if ( curve->getYMaximum() > d->curvesYMax)
+ d->curvesYMax = curve->getYMaximum();
+ }
+ }
//loop over all xy-curves and determine the maximum y-value
if (d->curvesYMinMaxIsDirty) {
@@ -1042,6 +1051,8 @@ void CartesianPlot::scaleAutoY(){
d->curvesYMax = curve->yColumn()->maximum();
}
}
+ //qDebug() << "autoscaley Max Y, X: " << d->curvesYMax << d->curvesXMax;
+ //qDebug() << "autoscaley Min Y, X: " << d->curvesYMin << d->curvesXMin;
d->curvesYMinMaxIsDirty = false;
}
@@ -1079,6 +1090,7 @@ void CartesianPlot::scaleAuto(){
//loop over all xy-curves and determine the maximum x-value
QList<const XYCurve*> children = this->children<const XYCurve>();
+ QList<const Histogram*> childrenHistogram = this->children<const Histogram>();
if (d->curvesXMinMaxIsDirty) {
d->curvesXMin = INFINITY;
d->curvesXMax = -INFINITY;
@@ -1087,7 +1099,6 @@ void CartesianPlot::scaleAuto(){
continue;
if (!curve->xColumn())
continue;
-
if (curve->xColumn()->minimum() != INFINITY){
if (curve->xColumn()->minimum() < d->curvesXMin)
d->curvesXMin = curve->xColumn()->minimum();
@@ -1097,9 +1108,26 @@ void CartesianPlot::scaleAuto(){
if (curve->xColumn()->maximum() > d->curvesXMax)
d->curvesXMax = curve->xColumn()->maximum();
}
+ }
+ foreach(const Histogram* curve, childrenHistogram) {
+ if (!curve->isVisible())
+ continue;
+ if (!curve->xColumn())
+ continue;
+
+ if (curve->xColumn()->minimum() != INFINITY){
+ if (curve->xColumn()->minimum() < d->curvesXMin)
+ d->curvesXMin = curve->xColumn()->minimum();
+ }
- d->curvesXMinMaxIsDirty = false;
+ if (curve->xColumn()->maximum() != -INFINITY){
+ if (curve->xColumn()->maximum() > d->curvesXMax)
+ d->curvesXMax = curve->xColumn()->maximum();
+ }
}
+ qDebug() << "Max Y, X: " << d->curvesYMax << d->curvesXMax;
+ qDebug() << "Min Y, X: " << d->curvesYMin << d->curvesXMin;
+ d->curvesXMinMaxIsDirty = false;
}
if (d->curvesYMinMaxIsDirty) {
@@ -1121,6 +1149,16 @@ void CartesianPlot::scaleAuto(){
d->curvesYMax = curve->yColumn()->maximum();
}
}
+ foreach(const Histogram* curve, childrenHistogram) {
+ if (!curve->isVisible())
+ continue;
+
+ d->curvesYMin = 0.0;
+ if (curve->getYMaximum() != -INFINITY){
+ if ( curve->getYMaximum() > d->curvesYMax)
+ d->curvesYMax = curve->getYMaximum();
+ }
+ }
}
bool updateX = false;
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.cpp \
b/src/backend/worksheet/plots/cartesian/Histogram.cpp index 35a975b..69e8d21 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.cpp
+++ b/src/backend/worksheet/plots/cartesian/Histogram.cpp
@@ -89,6 +89,14 @@ void Histogram::init(){
d->xColumn = NULL;
+ d->histogramType = (Histogram::TypeHistogram) group.readEntry("histogramType", \
(int)Histogram::Ordinary); + 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->valuesType = (Histogram::ValuesType) group.readEntry("ValuesType", \
(int)Histogram::NoValues); d->valuesColumn = NULL;
d->valuesPosition = (Histogram::ValuesPosition) group.readEntry("ValuesPosition", \
(int)Histogram::ValuesAbove); @@ -155,6 +163,10 @@ void Histogram::setPrinting(bool \
on) { d->m_printing = on;
}
+void Histogram::setHistrogramType(Histogram::TypeHistogram histogramType) {
+ d_ptr->histogramType = histogramType;
+}
+
//##############################################################################
//########################## getter methods ##################################
//##############################################################################
@@ -185,6 +197,11 @@ 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)
+double Histogram::getYMaximum() const {
+ return d_ptr->getYMaximum();
+}
+
+
//##############################################################################
//################# setter methods and undo commands ##########################
//##############################################################################
@@ -415,6 +432,13 @@ QRectF HistogramPrivate::boundingRect() const {
return QRectF(0, 0, 100, 100);
return boundingRectangle;
}
+double HistogramPrivate::getYMaximum() {
+ if (histogram){
+ size_t maxYAddes= gsl_histogram_max_bin(histogram);
+ return gsl_histogram_get(histogram, maxYAddes);
+ }
+ return -INFINITY;
+}
/*!
Returns the shape of the Histogram as a QPainterPath in local coordinates
@@ -449,6 +473,7 @@ void HistogramPrivate::retransform(){
connectedPointsLogical.clear();
if (NULL == xColumn){
+ linePath = QPainterPath();
valuesPath = QPainterPath();
// dropLinePath = QPainterPath();
recalcShapeAndBoundingRect();
@@ -514,9 +539,75 @@ void HistogramPrivate::updateLines(){
//nothing to do, if no data points available
if (count<=1){
- recalcShapeAndBoundingRect();
+ recalcShapeAndBoundingRect();
return;
}
+ int startRow = 0;
+ int endRow = xColumn->rowCount() - 1;
+ QPointF tempPoint,tempPoint1;
+
+ double xAxisMin= xColumn->minimum();
+ double xAxisMax= xColumn->maximum();
+
+ bins = 10; //temprary
+
+ double width = (xAxisMax-xAxisMin)/bins;
+
+ histogram = gsl_histogram_alloc (bins); // demo- number of bins
+ gsl_histogram_set_ranges_uniform (histogram, xAxisMin,xAxisMax+1);
+
+ for (int row = startRow; row <= endRow; row++ ){
+ if ( xColumn->isValid(row) && !xColumn->isMasked(row) )
+ gsl_histogram_increment(histogram,xColumn->valueAt(row));
+ }
+
+ //checking height of each column
+ /*for(int i=0;i < bins; ++i) {
+ qDebug() <<i<< " height "<< gsl_histogram_get(histogram,i);
+ }
+ */
+ switch(histogramType) {
+ case Histogram::Ordinary:
+ for(int i=0;i < bins; ++i) {
+ tempPoint.setX(xAxisMin);
+ tempPoint.setY(0.0);
+
+ tempPoint1.setX(xAxisMin);
+ tempPoint1.setY(gsl_histogram_get(histogram,i));
+
+ lines.append(QLineF(tempPoint, tempPoint1));
+
+ tempPoint.setX(xAxisMin);
+ tempPoint.setY(gsl_histogram_get(histogram,i));
+
+ tempPoint1.setX(xAxisMin+width);
+ tempPoint1.setY(gsl_histogram_get(histogram,i));
+
+ lines.append(QLineF(tempPoint,tempPoint1));
+
+ tempPoint.setX(xAxisMin+width);
+ tempPoint.setY(gsl_histogram_get(histogram,i));
+
+ tempPoint1.setX(xAxisMin+width);
+ tempPoint1.setY(0.0);
+
+ lines.append(QLineF(tempPoint, tempPoint1));
+
+ tempPoint.setX(xAxisMin+width);
+ tempPoint.setY(0.0);
+
+ tempPoint1.setX(xAxisMin);
+ tempPoint1.setY(0.0);
+
+ lines.append(QLineF(tempPoint, tempPoint1));
+ xAxisMin+= width;
+ }
+ break;
+ case Histogram::Cummulative:
+ break;
+ case Histogram::AvgShift:
+ break;
+ }
//calculate the lines connecting the data points
for (int i=0; i<count-1; i++){
@@ -535,7 +626,7 @@ void HistogramPrivate::updateLines(){
linePath.lineTo(line.p2());
}
- //updateFilling();
+ updateFilling();
recalcShapeAndBoundingRect();
}
/*!
@@ -557,7 +648,7 @@ void HistogramPrivate::updateValues() {
case Histogram::ValuesX:{
for(int i=0; i<symbolPointsLogical.size(); ++i){
if (!visiblePoints[i]) continue;
- valuesStrings << valuesPrefix + QString::number(symbolPointsLogical.at(i).x()) + \
valuesSuffix; + valuesStrings << valuesPrefix + \
QString::number(symbolPointsLogical.at(i).x()) + valuesSuffix; }
break;
}
@@ -943,8 +1034,14 @@ void HistogramPrivate::recalcShapeAndBoundingRect() {
}
void HistogramPrivate::draw(QPainter *painter) {
+
+ painter->setOpacity(lineOpacity);
+ painter->setPen(linePen);
+ painter->setBrush(Qt::NoBrush);
+ painter->drawPath(linePath);
+
//draw filling
-
+
if (fillingPosition != Histogram::NoFilling) {
painter->setOpacity(fillingOpacity);
painter->setPen(Qt::SolidLine);
@@ -987,7 +1084,7 @@ void HistogramPrivate::updatePixmap() {
//TODO: move this to a central place
-QImage HistogramPrivate::blurred(const QImage& image, const QRect& rect, int radius, \
bool alphaOnly) +QImage HistogramPrivate::blurred(const QImage& image, const QRect& \
rect, int radius, bool alphaOnly = false) {
int tab[] = { 14, 10, 8, 6, 5, 5, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 };
int alpha = (radius < 1) ? 16 : (radius > 17) ? 1 : tab[radius-1];
@@ -1062,120 +1159,53 @@ QImage HistogramPrivate::blurred(const QImage& image, const \
QRect& rect, int rad void HistogramPrivate::paint(QPainter* painter, const \
QStyleOptionGraphicsItem* option, QWidget* widget){ // \
qDebug()<<"HistogramPrivate::paint, " + q->name(); Q_UNUSED(option);
- Q_UNUSED(widget);
-
- //Ordinary histogram logic
- QPainterPath LinePath = QPainterPath();
- QList<QLineF> lines;
- lines.clear();
- //double bins[] = {5.0, 6.0, 2.0, 9.0, 10.0};
-
- QPointF tempPoint, tempPoint1;
- double xAxisMin= xColumn->minimum();
- double xAxisMax= xColumn->maximum();
-
- qDebug()<< "axis value" << xAxisMax << xAxisMin;
-
- int startRow = 0;
- int endRow = xColumn->rowCount() - 1;
-
- gsl_histogram * h = gsl_histogram_alloc (10); // demo- number of bins
- gsl_histogram_set_ranges_uniform (h, xAxisMin,xAxisMax);
-
- for (int row = startRow; row <= endRow; row++ ){
- if ( xColumn->isValid(row) && !xColumn->isMasked(row) )
- gsl_histogram_increment(h,xColumn->valueAt(row));
+ Q_UNUSED(widget);
+ if (!isVisible())
+ return;
+
+// QTime timer;
+// timer.start();
+ painter->setPen(Qt::NoPen);
+ painter->setBrush(Qt::NoBrush);
+ painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
+
+// TODO: draw directly
+ draw(painter);
+// or use pixmap for double buffering
+// painter->drawPixmap(boundingRectangle.topLeft(), m_pixmap);
+// qDebug() << "Paint the pixmap: " << timer.elapsed() << "ms";
+
+ if (m_hovered && !isSelected() && !m_printing){
+// timer.start();
+ if (m_hoverEffectImageIsDirty) {
+ QPixmap pix = m_pixmap;
+ pix.fill(q->hoveredPen.color());
+ pix.setAlphaChannel(m_pixmap.alphaChannel());
+ m_hoverEffectImage = blurred(pix.toImage(), m_pixmap.rect(), 5);
+ m_hoverEffectImageIsDirty = false;
+ }
+
+ painter->setOpacity(q->hoveredOpacity*2);
+ painter->drawImage(boundingRectangle.topLeft(), m_hoverEffectImage, \
m_pixmap.rect()); +// qDebug() << "Paint hovering effect: " << timer.elapsed() << \
"ms"; + return;
}
-
- //checking height of each column
- for(int i=0;i < 10; ++i) {
- qDebug() << gsl_histogram_get(h,i);
+
+ if (isSelected() && !m_printing){
+// timer.start();
+ if (m_selectionEffectImageIsDirty) {
+ QPixmap pix = m_pixmap;
+ pix.fill(q->selectedPen.color());
+ pix.setAlphaChannel(m_pixmap.alphaChannel());
+ m_selectionEffectImage = blurred(pix.toImage(), m_pixmap.rect(), 5,false);
+ m_selectionEffectImageIsDirty = false;
+ }
+
+ painter->setOpacity(q->selectedOpacity*2);
+ painter->drawImage(boundingRectangle.topLeft(), m_selectionEffectImage, \
m_pixmap.rect()); +// qDebug() << "Paint selection effect: " << timer.elapsed() << \
"ms"; + return;
}
- double width = (xAxisMax-xAxisMin)/10;
-
- for(int i=0;i < 10; ++i) {
- tempPoint.setX(xAxisMin);
- tempPoint.setY(0.0);
-
- tempPoint1.setX(xAxisMin);
- tempPoint1.setY(gsl_histogram_get(h,i));
-
- lines.append(QLineF(tempPoint, tempPoint1));
-
- tempPoint.setX(xAxisMin);
- tempPoint.setY(gsl_histogram_get(h,i));
-
- tempPoint1.setX(xAxisMin+width);
- tempPoint1.setY(gsl_histogram_get(h,i));
-
- lines.append(QLineF(tempPoint,tempPoint1));
-
- tempPoint.setX(xAxisMin+width);
- tempPoint.setY(gsl_histogram_get(h,i));
-
- tempPoint1.setX(xAxisMin+width);
- tempPoint1.setY(0.0);
-
- lines.append(QLineF(tempPoint, tempPoint1));
- xAxisMin+= width;
- }
-
- const CartesianPlot* plot = dynamic_cast<const \
CartesianPlot*>(q->parentAspect());
- const AbstractCoordinateSystem* cSystem = plot->coordinateSystem();
- lines = cSystem->mapLogicalToScene(lines);
-
- foreach (const QLineF& line, lines){
- LinePath.moveTo(line.p1());
- LinePath.lineTo(line.p2());
- }
-
- QPen linePen;
-
- linePen.setStyle( Qt::SolidLine );
- linePen.setColor( QColor(Qt::black) );
- linePen.setWidthF( Worksheet::convertToSceneUnits(1.0, Worksheet::Point) );
-
- // prepareGeometryChange();
- curveShape = QPainterPath();
- curveShape.addPath(WorksheetElement::shapeFromPath(LinePath, linePen));
- boundingRectangle = curveShape.boundingRect();
-
-
- QPixmap pixmap(boundingRectangle.width(), boundingRectangle.height());
- if (boundingRectangle.width()==0 || boundingRectangle.width()==0) {
- m_pixmap = pixmap;
- m_hoverEffectImageIsDirty = true;
- m_selectionEffectImageIsDirty = true;
- return;
- }
- pixmap.fill(Qt::transparent);
- QPainter temp_painter(&pixmap);
- temp_painter.setRenderHint(QPainter::Antialiasing, true);
- temp_painter.translate(-boundingRectangle.topLeft());
-
- temp_painter.setOpacity(1.0);
- temp_painter.setPen(linePen);
- temp_painter.setBrush(Qt::NoBrush);
- temp_painter.drawPath(LinePath);
-
- temp_painter.end();
-
- m_pixmap = pixmap;
-
- painter->setPen(Qt::NoPen);
- painter->setBrush(Qt::NoBrush);
- painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
-
- draw(painter);
-
- QPixmap pix = m_pixmap;
- m_selectionEffectImage = blurred(pix.toImage(), m_pixmap.rect(), 5.0, true);
-
- painter->setOpacity(1.0*2);
- painter->drawImage(boundingRectangle.topLeft(), m_selectionEffectImage, \
m_pixmap.rect());
-
- return;
- //ends my logic
}
/*!
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.h \
b/src/backend/worksheet/plots/cartesian/Histogram.h index f74d6f3..404f408 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.h
+++ b/src/backend/worksheet/plots/cartesian/Histogram.h
@@ -42,10 +42,11 @@ class Histogram: public WorksheetElement {
Q_OBJECT
public:
+ enum BinsOption {Number,Width,SquareRoot,RiceRule,SturgisRule};
enum ValuesType {NoValues, ValuesX, ValuesY, ValuesXY, ValuesXYBracketed, \
ValuesCustomColumn}; enum ValuesPosition {ValuesAbove, ValuesUnder, ValuesLeft, \
ValuesRight}; enum FillingPosition {NoFilling, FillingAbove, FillingBelow, \
FillingZeroBaseline, FillingLeft, FillingRight};
-
+ enum TypeHistogram {Ordinary,Cummulative, AvgShift};
explicit Histogram(const QString &name);
virtual ~Histogram();
@@ -92,6 +93,8 @@ class Histogram: public WorksheetElement {
virtual bool isVisible() const;
virtual void setPrinting(bool on);
void suppressRetransform(bool);
+ double getYMaximum() const;
+ void setHistrogramType(Histogram::TypeHistogram);
typedef WorksheetElement BaseClass;
typedef HistogramPrivate Private;
@@ -115,7 +118,6 @@ class Histogram: public WorksheetElement {
Q_DECLARE_PRIVATE(Histogram)
void init();
void initActions();
-
QAction* visibilityAction;
signals:
diff --git a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h \
b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h index 10a0127..c829b5a \
100644
--- a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
+++ b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
@@ -30,6 +30,7 @@
#define HISTOGRAMPRIVATE_H
#include <vector>
+#include <gsl_histogram.h>
class HistogramPrivate: public QGraphicsItem {
public:
@@ -60,7 +61,9 @@ class HistogramPrivate: public QGraphicsItem {
void drawFilling(QPainter*);
void draw(QPainter*);
void updatePixmap();
+ double getYMaximum();
bool autoScaleX, autoScaleY;
+ Histogram::TypeHistogram histogramType;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* widget = \
0);
@@ -100,6 +103,7 @@ class HistogramPrivate: public QGraphicsItem {
qreal fillingOpacity;
QPainterPath linePath;
+ long long int bins;
QPainterPath valuesPath;
QRectF boundingRectangle;
QPainterPath curveShape;
@@ -125,6 +129,7 @@ class HistogramPrivate: public QGraphicsItem {
private:
+ gsl_histogram * histogram;
void contextMenuEvent(QGraphicsSceneContextMenuEvent*);
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*);
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*);
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.cpp \
b/src/kdefrontend/dockwidgets/HistogramDock.cpp index 97b322d..9c22996 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.cpp
+++ b/src/kdefrontend/dockwidgets/HistogramDock.cpp
@@ -412,6 +412,7 @@ void HistogramDock::initGeneralTab(){
//show the properties of the first curve
uiGeneralTab.chkVisible->setChecked( m_curve->isVisible() );
//bins option
+ uiGeneralTab.cbBins->clear();
uiGeneralTab.cbBins->addItem(i18n("By Number"));
uiGeneralTab.cbBins->addItem(i18n("By width"));
uiGeneralTab.cbBins->addItem(i18n("Square-root rule"));
@@ -420,6 +421,7 @@ void HistogramDock::initGeneralTab(){
//connect( uiGeneralTab.cbHistogramType, SIGNAL(currentIndexChanged(int)), this, \
SLOT(histogramTypeChanged(int)) ); //types options
+ uiGeneralTab.cbHistogramType->clear();
uiGeneralTab.cbHistogramType->addItem(i18n("Ordinary Histogram"));
uiGeneralTab.cbHistogramType->addItem(i18n("Cummulative Histogram"));
uiGeneralTab.cbHistogramType->addItem(i18n("AvgShifted Histogram"));
@@ -479,7 +481,14 @@ void HistogramDock::curveValuesColorChanged(QColor color) {
m_initializing = false;
}
//Values-tab
+void HistogramDock::binsOptionChanged(int index){
+ Histogram::BinsOption binOption = Histogram::BinsOption(index);
+ if(binOption==Histogram::Number)
+ {
+ }
+
+}
/*!
called when the type of the values (none, x, y, (x,y) etc.) was changed.
*/
@@ -936,11 +945,17 @@ void HistogramDock::setupGeneral() {
connect( uiGeneralTab.leComment, SIGNAL(returnPressed()), this, \
SLOT(commentChanged()) ); connect( uiGeneralTab.chkVisible, SIGNAL(clicked(bool)), \
this, SLOT(visibilityChanged(bool)) ); connect( cbXColumn, \
SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(xColumnChanged(QModelIndex)) ); + connect( uiGeneralTab.cbHistogramType, \
SIGNAL(currentIndexChanged(int)), this, SLOT(histogramTypeChanged(int)) );
}
+void HistogramDock::histogramTypeChanged(int index) {
+ Histogram::TypeHistogram histogramType = Histogram::TypeHistogram(index);
+ m_curve->setHistrogramType(histogramType);
+}
+
void HistogramDock::xColumnChanged(const QModelIndex& index) {
-
+
if (m_initializing)
return;
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.h \
b/src/kdefrontend/dockwidgets/HistogramDock.h index 138906f..b372a52 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.h
+++ b/src/kdefrontend/dockwidgets/HistogramDock.h
@@ -89,7 +89,9 @@ private slots:
void xColumnChanged(const QModelIndex&);
void visibilityChanged(bool);
//Histogram-types
- //void histogramTypeChanged(int);
+ void histogramTypeChanged(int);
+ //bins setting
+ void binsOptionChanged(int);
//Values-Tab
void valuesTypeChanged(int);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic