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 }