File indexing completed on 2024-05-12 15:28:16

0001 /***************************************************************************
0002     File                 : ImageWidget.cpp
0003     Project              : LabPlot
0004     Description          : widget for datapicker properties
0005     --------------------------------------------------------------------
0006     Copyright            : (C) 2015 by Ankit Wagadre (wagadre.ankit@gmail.com)
0007     Copyright            : (C) 2015-2019 Alexander Semke (alexander.semke@web.de)
0008 
0009  ***************************************************************************/
0010 /***************************************************************************
0011  *                                                                         *
0012  *  This program is free software; you can redistribute it and/or modify   *
0013  *  it under the terms of the GNU General Public License as published by   *
0014  *  the Free Software Foundation; either version 2 of the License, or      *
0015  *  (at your option) any later version.                                    *
0016  *                                                                         *
0017  *  This program is distributed in the hope that it will be useful,        *
0018  *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
0019  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
0020  *  GNU General Public License for more details.                           *
0021  *                                                                         *
0022  *   You should have received a copy of the GNU General Public License     *
0023  *   along with this program; if not, write to the Free Software           *
0024  *   Foundation, Inc., 51 Franklin Street, Fifth Floor,                    *
0025  *   Boston, MA  02110-1301  USA                                           *
0026  *                                                                         *
0027  ***************************************************************************/
0028 
0029 #include "DatapickerCurveWidget.h"
0030 #include "backend/datapicker/DatapickerPoint.h"
0031 #include "backend/worksheet/Worksheet.h"
0032 #include "kdefrontend/GuiTools.h"
0033 
0034 #include <KLocalizedString>
0035 
0036 #include <QPainter>
0037 
0038 #include <cmath>
0039 
0040 DatapickerCurveWidget::DatapickerCurveWidget(QWidget* parent) : BaseDock(parent) {
0041     ui.setupUi(this);
0042     m_leName = ui.leName;
0043     m_leComment = ui.leComment;
0044 
0045     ui.cbXErrorType->addItem(i18n("No Error"));
0046     ui.cbXErrorType->addItem(i18n("Symmetric"));
0047     ui.cbXErrorType->addItem(i18n("Asymmetric"));
0048 
0049     ui.cbYErrorType->addItem(i18n("No Error"));
0050     ui.cbYErrorType->addItem(i18n("Symmetric"));
0051     ui.cbYErrorType->addItem(i18n("Asymmetric"));
0052 
0053     QString info = i18n("Specify whether the data points have errors and of which type.\n"
0054                         "Note, changing this type is not possible once at least one point was read.");
0055     ui.lXErrorType->setToolTip(info);
0056     ui.cbXErrorType->setToolTip(info);
0057     ui.lYErrorType->setToolTip(info);
0058     ui.cbYErrorType->setToolTip(info);
0059 
0060     DatapickerCurveWidget::updateLocale();
0061 
0062     connect(ui.leName, &QLineEdit::textChanged, this, &DatapickerCurveWidget::nameChanged);
0063     connect(ui.leComment, &QLineEdit::textChanged, this, &DatapickerCurveWidget::commentChanged);
0064     connect(ui.cbXErrorType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0065             this, &DatapickerCurveWidget::xErrorTypeChanged);
0066     connect(ui.cbYErrorType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0067             this, &DatapickerCurveWidget::yErrorTypeChanged);
0068 
0069     //symbol
0070     connect(ui.cbStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0071             this, &DatapickerCurveWidget::styleChanged);
0072     connect(ui.sbSize, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
0073             this, &DatapickerCurveWidget::sizeChanged);
0074     connect(ui.sbRotation, static_cast<void (QSpinBox::*) (int)>(&QSpinBox::valueChanged),
0075             this, &DatapickerCurveWidget::rotationChanged);
0076     connect(ui.sbOpacity, static_cast<void (QSpinBox::*) (int)>(&QSpinBox::valueChanged),
0077             this, &DatapickerCurveWidget::opacityChanged);
0078 
0079     //Filling
0080     connect(ui.cbFillingStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0081             this, &DatapickerCurveWidget::fillingStyleChanged);
0082     connect(ui.kcbFillingColor, &KColorButton::changed, this, &DatapickerCurveWidget::fillingColorChanged);
0083 
0084     //border
0085     connect(ui.cbBorderStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0086             this, &DatapickerCurveWidget::borderStyleChanged);
0087     connect(ui.kcbBorderColor, &KColorButton::changed, this, &DatapickerCurveWidget::borderColorChanged);
0088     connect(ui.sbBorderWidth, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
0089             this, &DatapickerCurveWidget::borderWidthChanged);
0090 
0091     connect(ui.chbVisible, &QCheckBox::clicked, this, &DatapickerCurveWidget::visibilityChanged);
0092 
0093     //error bar
0094     connect(ui.cbErrorBarFillingStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
0095             this, &DatapickerCurveWidget::errorBarFillingStyleChanged);
0096     connect(ui.kcbErrorBarFillingColor, &KColorButton::changed, this, &DatapickerCurveWidget::errorBarFillingColorChanged);
0097     connect(ui.sbErrorBarSize, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
0098             this, &DatapickerCurveWidget::errorBarSizeChanged);
0099 
0100     init();
0101     hideErrorBarWidgets(true);
0102 }
0103 
0104 DatapickerCurveWidget::~DatapickerCurveWidget() = default;
0105 
0106 void DatapickerCurveWidget::init() {
0107     m_initializing = true;
0108     GuiTools::updatePenStyles(ui.cbBorderStyle, Qt::black);
0109 
0110     QPainter pa;
0111     int iconSize = 20;
0112     QPixmap pm(iconSize, iconSize);
0113     QPen pen(Qt::SolidPattern, 0);
0114     ui.cbStyle->setIconSize(QSize(iconSize, iconSize));
0115     QTransform trafo;
0116     trafo.scale(15, 15);
0117     //TODO: constant?
0118     for (int i = 1; i < 19; ++i) {
0119         auto style = (Symbol::Style)i;
0120         pm.fill(Qt::transparent);
0121         pa.begin(&pm);
0122         pa.setPen(pen);
0123         pa.setRenderHint(QPainter::Antialiasing);
0124         pa.translate(iconSize/2,iconSize/2);
0125         pa.drawPath(trafo.map(Symbol::pathFromStyle(style)));
0126         pa.end();
0127         ui.cbStyle->addItem(QIcon(pm), Symbol::nameFromStyle(style));
0128     }
0129     GuiTools::updateBrushStyles(ui.cbFillingStyle, Qt::black);
0130     GuiTools::updateBrushStyles(ui.cbErrorBarFillingStyle, Qt::black);
0131     m_initializing = false;
0132 }
0133 
0134 void DatapickerCurveWidget::setCurves(QList<DatapickerCurve*> list) {
0135     if (list.isEmpty())
0136         return;
0137 
0138     m_curveList = list;
0139     m_curve = list.first();
0140     m_aspect = list.first();
0141 
0142     if (list.size() == 1) {
0143         ui.lName->setEnabled(true);
0144         ui.leName->setEnabled(true);
0145         ui.lComment->setEnabled(true);
0146         ui.leComment->setEnabled(true);
0147         ui.leName->setText(m_curve->name());
0148         ui.leComment->setText(m_curve->comment());
0149     } else {
0150         ui.lName->setEnabled(false);
0151         ui.leName->setEnabled(false);
0152         ui.lComment->setEnabled(false);
0153         ui.leComment->setEnabled(false);
0154         ui.leName->setText(QString());
0155         ui.leComment->setText(QString());
0156     }
0157 
0158     load();
0159     updateSymbolWidgets();
0160 
0161     connect(m_curve, &AbstractAspect::aspectDescriptionChanged,this, &DatapickerCurveWidget::curveDescriptionChanged);
0162     connect(m_curve, &AbstractAspect::aspectRemoved,this, &DatapickerCurveWidget::updateSymbolWidgets);
0163     connect(m_curve, &AbstractAspect::aspectAdded, this, &DatapickerCurveWidget::updateSymbolWidgets);
0164     connect(m_curve, &DatapickerCurve::curveErrorTypesChanged, this, &DatapickerCurveWidget::curveErrorsChanged);
0165     connect(m_curve, &DatapickerCurve::pointStyleChanged, this, &DatapickerCurveWidget::symbolStyleChanged);
0166     connect(m_curve, &DatapickerCurve::pointSizeChanged, this, &DatapickerCurveWidget::symbolSizeChanged);
0167     connect(m_curve, &DatapickerCurve::pointRotationAngleChanged, this, &DatapickerCurveWidget::symbolRotationAngleChanged);
0168     connect(m_curve, &DatapickerCurve::pointOpacityChanged, this, &DatapickerCurveWidget::symbolOpacityChanged);
0169     connect(m_curve, &DatapickerCurve::pointBrushChanged, this, &DatapickerCurveWidget::symbolBrushChanged);
0170     connect(m_curve, &DatapickerCurve::pointPenChanged, this, &DatapickerCurveWidget::symbolPenChanged);
0171     connect(m_curve, &DatapickerCurve::pointVisibilityChanged, this, &DatapickerCurveWidget::symbolVisibleChanged);
0172     connect(m_curve, &DatapickerCurve::pointErrorBarBrushChanged, this, &DatapickerCurveWidget::symbolErrorBarBrushChanged);
0173     connect(m_curve, &DatapickerCurve::pointErrorBarSizeChanged, this, &DatapickerCurveWidget::symbolErrorBarSizeChanged);
0174 }
0175 
0176 void DatapickerCurveWidget::hideErrorBarWidgets(bool on) {
0177     ui.lErrorBar->setVisible(!on);
0178     ui.cbErrorBarFillingStyle->setVisible(!on);
0179     ui.kcbErrorBarFillingColor->setVisible(!on);
0180     ui.lErrorBarFillingColor->setVisible(!on);
0181     ui.lErrorBarFillingStyle->setVisible(!on);
0182     ui.sbErrorBarSize->setVisible(!on);
0183     ui.lErrorBarSize->setVisible(!on);
0184 }
0185 
0186 void DatapickerCurveWidget::updateLocale() {
0187     SET_NUMBER_LOCALE
0188     ui.sbSize->setLocale(numberLocale);
0189     ui.sbBorderWidth->setLocale(numberLocale);
0190     ui.sbErrorBarSize->setLocale(numberLocale);
0191 }
0192 
0193 //*************************************************************
0194 //**** SLOTs for changes triggered in DatapickerCurveWidget ***
0195 //*************************************************************
0196 //"General"-tab
0197 void DatapickerCurveWidget::xErrorTypeChanged(int index) {
0198     if ( DatapickerCurve::ErrorType(index) != DatapickerCurve::ErrorType::NoError
0199         || m_curve->curveErrorTypes().y != DatapickerCurve::ErrorType::NoError )
0200         hideErrorBarWidgets(false);
0201     else
0202         hideErrorBarWidgets(true);
0203 
0204     if (m_initializing || m_suppressTypeChange)
0205         return;
0206 
0207     DatapickerCurve::Errors errors = m_curve->curveErrorTypes();
0208     errors.x = DatapickerCurve::ErrorType(index);
0209 
0210     for (auto* curve : m_curveList)
0211         curve->setCurveErrorTypes(errors);
0212 }
0213 
0214 void DatapickerCurveWidget::yErrorTypeChanged(int index) {
0215     if ( DatapickerCurve::ErrorType(index) != DatapickerCurve::ErrorType::NoError
0216         || m_curve->curveErrorTypes().x != DatapickerCurve::ErrorType::NoError )
0217         hideErrorBarWidgets(false);
0218     else
0219         hideErrorBarWidgets(true);
0220 
0221     if (m_initializing || m_suppressTypeChange)
0222         return;
0223 
0224     DatapickerCurve::Errors errors = m_curve->curveErrorTypes();
0225     errors.y = DatapickerCurve::ErrorType(index);
0226 
0227     for (auto* curve : m_curveList)
0228         curve->setCurveErrorTypes(errors);
0229 }
0230 
0231 void DatapickerCurveWidget::styleChanged(int index) {
0232     auto style = Symbol::Style(index + 1);
0233     //enable/disable the  filling options in the GUI depending on the currently selected points.
0234     if (style != Symbol::Style::Line && style != Symbol::Style::Cross) {
0235         ui.cbFillingStyle->setEnabled(true);
0236         bool noBrush = (Qt::BrushStyle(ui.cbFillingStyle->currentIndex()) == Qt::NoBrush);
0237         ui.kcbFillingColor->setEnabled(!noBrush);
0238     } else {
0239         ui.kcbFillingColor->setEnabled(false);
0240         ui.cbFillingStyle->setEnabled(false);
0241     }
0242 
0243     bool noLine = (Qt::PenStyle(ui.cbBorderStyle->currentIndex()) == Qt::NoPen);
0244     ui.kcbBorderColor->setEnabled(!noLine);
0245     ui.sbBorderWidth->setEnabled(!noLine);
0246 
0247     if (m_initializing)
0248         return;
0249 
0250     for (auto* curve : m_curveList)
0251         curve->setPointStyle(style);
0252 }
0253 
0254 void DatapickerCurveWidget::sizeChanged(double value) {
0255     if (m_initializing)
0256         return;
0257 
0258     for (auto* curve : m_curveList)
0259         curve->setPointSize( Worksheet::convertToSceneUnits(value, Worksheet::Unit::Point) );
0260 }
0261 
0262 void DatapickerCurveWidget::rotationChanged(int value) {
0263     if (m_initializing)
0264         return;
0265 
0266     for (auto* curve : m_curveList)
0267         curve->setPointRotationAngle(value);
0268 }
0269 
0270 void DatapickerCurveWidget::opacityChanged(int value) {
0271     if (m_initializing)
0272         return;
0273 
0274     qreal opacity = (float)value/100.;
0275     for (auto* curve : m_curveList)
0276         curve->setPointOpacity(opacity);
0277 }
0278 
0279 void DatapickerCurveWidget::errorBarSizeChanged(double value) {
0280     if (m_initializing)
0281         return;
0282 
0283     for (auto* curve : m_curveList)
0284         curve->setPointErrorBarSize( Worksheet::convertToSceneUnits(value, Worksheet::Unit::Point) );
0285 }
0286 
0287 void DatapickerCurveWidget::fillingStyleChanged(int index) {
0288     auto brushStyle = Qt::BrushStyle(index);
0289     ui.kcbFillingColor->setEnabled(!(brushStyle == Qt::NoBrush));
0290 
0291     if (m_initializing)
0292         return;
0293 
0294     QBrush brush;
0295     for (auto* curve : m_curveList) {
0296         brush = curve->pointBrush();
0297         brush.setStyle(brushStyle);
0298         curve->setPointBrush(brush);
0299     }
0300 }
0301 
0302 void DatapickerCurveWidget::errorBarFillingStyleChanged(int index) {
0303     auto brushStyle = Qt::BrushStyle(index);
0304     ui.kcbErrorBarFillingColor->setEnabled(!(brushStyle == Qt::NoBrush));
0305 
0306     if (m_initializing)
0307         return;
0308 
0309     QBrush brush;
0310     for (auto* curve : m_curveList) {
0311         brush = curve->pointBrush();
0312         brush.setStyle(brushStyle);
0313         curve->setPointErrorBarBrush(brush);
0314     }
0315 }
0316 
0317 void DatapickerCurveWidget::fillingColorChanged(const QColor& color) {
0318     if (m_initializing)
0319         return;
0320 
0321     QBrush brush;
0322     for (auto* curve : m_curveList) {
0323         brush = curve->pointBrush();
0324         brush.setColor(color);
0325         curve->setPointBrush(brush);
0326     }
0327 
0328     m_initializing = true;
0329     GuiTools::updateBrushStyles(ui.cbFillingStyle, color );
0330     m_initializing = false;
0331 }
0332 
0333 void DatapickerCurveWidget::errorBarFillingColorChanged(const QColor& color) {
0334     if (m_initializing)
0335         return;
0336 
0337     QBrush brush;
0338     for (auto* curve : m_curveList) {
0339         brush = curve->pointErrorBarBrush();
0340         brush.setColor(color);
0341         curve->setPointErrorBarBrush(brush);
0342     }
0343 
0344     m_initializing = true;
0345     GuiTools::updateBrushStyles(ui.cbErrorBarFillingStyle, color );
0346     m_initializing = false;
0347 }
0348 
0349 void DatapickerCurveWidget::borderStyleChanged(int index) {
0350     auto penStyle = Qt::PenStyle(index);
0351 
0352     if ( penStyle == Qt::NoPen ) {
0353         ui.kcbBorderColor->setEnabled(false);
0354         ui.sbBorderWidth->setEnabled(false);
0355     } else {
0356         ui.kcbBorderColor->setEnabled(true);
0357         ui.sbBorderWidth->setEnabled(true);
0358     }
0359 
0360     if (m_initializing)
0361         return;
0362 
0363     QPen pen;
0364     for (auto* curve : m_curveList) {
0365         pen = curve->pointPen();
0366         pen.setStyle(penStyle);
0367         curve->setPointPen(pen);
0368     }
0369 }
0370 
0371 void DatapickerCurveWidget::borderColorChanged(const QColor& color) {
0372     if (m_initializing)
0373         return;
0374 
0375     QPen pen;
0376     for (auto* curve : m_curveList) {
0377         pen = curve->pointPen();
0378         pen.setColor(color);
0379         curve->setPointPen(pen);
0380     }
0381 
0382     m_initializing = true;
0383     GuiTools::updatePenStyles(ui.cbBorderStyle, color);
0384     m_initializing = false;
0385 }
0386 
0387 void DatapickerCurveWidget::borderWidthChanged(double value) {
0388     if (m_initializing)
0389         return;
0390 
0391     QPen pen;
0392     for (auto* curve : m_curveList) {
0393         pen = curve->pointPen();
0394         pen.setWidthF( Worksheet::convertToSceneUnits(value, Worksheet::Unit::Point) );
0395         curve->setPointPen(pen);
0396     }
0397 }
0398 
0399 void DatapickerCurveWidget::visibilityChanged(bool state) {
0400     if (m_initializing)
0401         return;
0402 
0403     for (auto* curve : m_curveList)
0404         curve->setPointVisibility(state);
0405 }
0406 
0407 void DatapickerCurveWidget::updateSymbolWidgets() {
0408     auto list = m_curve->children<DatapickerPoint>(AbstractAspect::ChildIndexFlag::IncludeHidden);
0409     if (list.isEmpty()) {
0410         ui.cbXErrorType->setEnabled(true);
0411         ui.cbYErrorType->setEnabled(true);
0412         m_suppressTypeChange = false;
0413     } else {
0414         ui.cbXErrorType->setEnabled(false);
0415         ui.cbYErrorType->setEnabled(false);
0416         m_suppressTypeChange = true;
0417     }
0418 }
0419 
0420 //*************************************************************
0421 //******** SLOTs for changes triggered in DatapickerCurve *****
0422 //*************************************************************
0423 void DatapickerCurveWidget::curveDescriptionChanged(const AbstractAspect* aspect) {
0424     if (m_curve != aspect)
0425         return;
0426 
0427     m_initializing = true;
0428     if (aspect->name() != ui.leName->text())
0429         ui.leName->setText(aspect->name());
0430     else if (aspect->comment() != ui.leComment->text())
0431         ui.leComment->setText(aspect->comment());
0432 
0433     m_initializing = false;
0434 }
0435 
0436 void DatapickerCurveWidget::curveErrorsChanged(DatapickerCurve::Errors errors) {
0437     m_initializing = true;
0438     ui.cbXErrorType->setCurrentIndex((int) errors.x);
0439     ui.cbYErrorType->setCurrentIndex((int) errors.y);
0440     m_initializing = false;
0441 }
0442 
0443 void DatapickerCurveWidget::symbolStyleChanged(Symbol::Style style) {
0444     m_initializing = true;
0445     ui.cbStyle->setCurrentIndex((int)style - 1);
0446     m_initializing = false;
0447 }
0448 
0449 void DatapickerCurveWidget::symbolSizeChanged(qreal size) {
0450     m_initializing = true;
0451     ui.sbSize->setValue( Worksheet::convertFromSceneUnits(size, Worksheet::Unit::Point) );
0452     m_initializing = false;
0453 }
0454 
0455 void DatapickerCurveWidget::symbolErrorBarSizeChanged(qreal size) {
0456     m_initializing = true;
0457     ui.sbErrorBarSize->setValue( Worksheet::convertFromSceneUnits(size, Worksheet::Unit::Point) );
0458     m_initializing = false;
0459 }
0460 
0461 void DatapickerCurveWidget::symbolRotationAngleChanged(qreal angle) {
0462     m_initializing = true;
0463     ui.sbRotation->setValue(round(angle));
0464     m_initializing = false;
0465 }
0466 
0467 void DatapickerCurveWidget::symbolOpacityChanged(qreal opacity) {
0468     m_initializing = true;
0469     ui.sbOpacity->setValue( round(opacity*100.0) );
0470     m_initializing = false;
0471 }
0472 
0473 void DatapickerCurveWidget::symbolBrushChanged(const QBrush& brush) {
0474     m_initializing = true;
0475     ui.cbFillingStyle->setCurrentIndex((int) brush.style());
0476     ui.kcbFillingColor->setColor(brush.color());
0477     GuiTools::updateBrushStyles(ui.cbFillingStyle, brush.color());
0478     m_initializing = false;
0479 }
0480 
0481 void DatapickerCurveWidget::symbolErrorBarBrushChanged(const QBrush& brush) {
0482     m_initializing = true;
0483     ui.cbErrorBarFillingStyle->setCurrentIndex((int) brush.style());
0484     ui.kcbErrorBarFillingColor->setColor(brush.color());
0485     GuiTools::updateBrushStyles(ui.cbErrorBarFillingStyle, brush.color());
0486     m_initializing = false;
0487 }
0488 
0489 void DatapickerCurveWidget::symbolPenChanged(const QPen& pen) {
0490     m_initializing = true;
0491     ui.cbBorderStyle->setCurrentIndex( (int) pen.style());
0492     ui.kcbBorderColor->setColor( pen.color());
0493     GuiTools::updatePenStyles(ui.cbBorderStyle, pen.color());
0494     ui.sbBorderWidth->setValue( Worksheet::convertFromSceneUnits(pen.widthF(), Worksheet::Unit::Point));
0495     m_initializing = false;
0496 }
0497 
0498 void DatapickerCurveWidget::symbolVisibleChanged(bool on) {
0499     m_initializing = true;
0500     ui.chbVisible->setChecked(on);
0501     m_initializing = false;
0502 }
0503 
0504 //**********************************************************
0505 //******************** SETTINGS ****************************
0506 //**********************************************************
0507 void DatapickerCurveWidget::load() {
0508     if (!m_curve)
0509         return;
0510 
0511     m_initializing = true;
0512     ui.cbXErrorType->setCurrentIndex((int) m_curve->curveErrorTypes().x);
0513     ui.cbYErrorType->setCurrentIndex((int) m_curve->curveErrorTypes().y);
0514     ui.cbStyle->setCurrentIndex( (int)m_curve->pointStyle() - 1 );
0515     ui.sbSize->setValue( Worksheet::convertFromSceneUnits(m_curve->pointSize(), Worksheet::Unit::Point) );
0516     ui.sbRotation->setValue( m_curve->pointRotationAngle() );
0517     ui.sbOpacity->setValue( round(m_curve->pointOpacity()*100.0) );
0518     ui.cbFillingStyle->setCurrentIndex( (int) m_curve->pointBrush().style() );
0519     ui.kcbFillingColor->setColor(  m_curve->pointBrush().color() );
0520     ui.cbBorderStyle->setCurrentIndex( (int) m_curve->pointPen().style() );
0521     ui.kcbBorderColor->setColor( m_curve->pointPen().color() );
0522     ui.sbBorderWidth->setValue( Worksheet::convertFromSceneUnits(m_curve->pointPen().widthF(), Worksheet::Unit::Point) );
0523     ui.chbVisible->setChecked( m_curve->pointVisibility() );
0524     ui.cbErrorBarFillingStyle->setCurrentIndex( (int) m_curve->pointErrorBarBrush().style() );
0525     ui.kcbErrorBarFillingColor->setColor(  m_curve->pointErrorBarBrush().color() );
0526     ui.sbErrorBarSize->setValue( Worksheet::convertFromSceneUnits(m_curve->pointErrorBarSize(), Worksheet::Unit::Point) );
0527     m_initializing = false;
0528 }