[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot] src/kdefrontend/widgets: In FitParametersWidget
From: Alexander Semke <alexander.semke () web ! de>
Date: 2016-11-26 9:01:35
Message-ID: E1cAYrX-0001Dr-7F () code ! kde ! org
[Download RAW message or body]
Git commit f58f823e67f2f6a926d3533dae834c0afa179e42 by Alexander Semke.
Committed on 26/11/2016 at 09:00.
Pushed by asemke into branch 'master'.
In FitParametersWidget
1. don't use the hard-coded black color for the font
2. re-highlight all parameters (start value, lower and upper limits) if one of them \
was changed
M +45 -25 src/kdefrontend/widgets/FitParametersWidget.cpp
M +6 -2 src/kdefrontend/widgets/FitParametersWidget.h
https://commits.kde.org/labplot/f58f823e67f2f6a926d3533dae834c0afa179e42
diff --git a/src/kdefrontend/widgets/FitParametersWidget.cpp \
b/src/kdefrontend/widgets/FitParametersWidget.cpp index 0ce26c8..53ac7b3 100644
--- a/src/kdefrontend/widgets/FitParametersWidget.cpp
+++ b/src/kdefrontend/widgets/FitParametersWidget.cpp
@@ -3,7 +3,7 @@
Project : LabPlot
Description : widget for editing fit parameters
--------------------------------------------------------------------
- Copyright : (C) 2014 Alexander Semke (alexander.semke@web.de)
+ Copyright : (C) 2014-2016 Alexander Semke (alexander.semke@web.de)
Copyright : (C) 2016 Stefan Gerlach (stefan.gerlach@uni.kn)
***************************************************************************/
@@ -43,7 +43,8 @@
\ingroup kdefrontend
*/
-FitParametersWidget::FitParametersWidget(QWidget* parent, XYFitCurve::FitData* data) \
: QWidget(parent), m_fitData(data), m_changed(false) { \
+FitParametersWidget::FitParametersWidget(QWidget* parent, XYFitCurve::FitData* data) \
: QWidget(parent), + m_fitData(data), m_changed(false), m_rehighlighting(false) {
ui.setupUi(this);
ui.pbApply->setIcon(KIcon("dialog-ok-apply"));
ui.pbCancel->setIcon(KIcon("dialog-cancel"));
@@ -70,11 +71,7 @@ FitParametersWidget::FitParametersWidget(QWidget* parent, \
XYFitCurve::FitData* d headerItem->setText(i18n("Upper limit"));
ui.tableWidget->setHorizontalHeaderItem(4, headerItem);
- ui.tableWidget->horizontalHeader()->setResizeMode(0, \
QHeaderView::ResizeToContents);
- ui.tableWidget->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
- ui.tableWidget->horizontalHeader()->setResizeMode(2, \
QHeaderView::ResizeToContents);
- ui.tableWidget->horizontalHeader()->setResizeMode(3, \
QHeaderView::ResizeToContents);
- ui.tableWidget->horizontalHeader()->setResizeMode(4, \
QHeaderView::ResizeToContents); \
+ ui.tableWidget->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents); \
if (m_fitData->modelType != nsl_fit_model_custom) { // pre-defined model
ui.tableWidget->setRowCount(m_fitData->paramNames.size());
@@ -332,12 +329,17 @@ void FitParametersWidget::startValueChanged() {
else
upperLimit = DBL_MAX;
- QPalette *palette = new QPalette();
- if(value < lowerLimit || value > upperLimit)
- palette->setColor(QPalette::Text, Qt::red);
- else
- palette->setColor(QPalette::Text, Qt::black);
- ((QLineEdit *)ui.tableWidget->cellWidget(row, 1))->setPalette(*palette);
+ bool invalid = (value < lowerLimit || value > upperLimit);
+ highlightInvalid(row, 1, invalid);
+
+ if (m_rehighlighting)
+ return;
+
+ //start value was changed -> check whether the lower and upper limits are valid and \
highlight them if not + m_rehighlighting = true;
+ lowerLimitChanged();
+ upperLimitChanged();
+ m_rehighlighting = false;
m_changed = true;
}
@@ -358,12 +360,17 @@ void FitParametersWidget::lowerLimitChanged() {
else
upperLimit = DBL_MAX;
- QPalette *palette = new QPalette();
- if(lowerLimit > value || lowerLimit > upperLimit)
- palette->setColor(QPalette::Text, Qt::red);
- else
- palette->setColor(QPalette::Text, Qt::black);
- ((QLineEdit *)ui.tableWidget->cellWidget(row, 3))->setPalette(*palette);
+ bool invalid = (lowerLimit > value || lowerLimit > upperLimit);
+ highlightInvalid(row, 3, invalid);
+
+ if (m_rehighlighting)
+ return;
+
+ //lower limit was changed -> check whether the start value and the upper limit are \
valid and highlight them if not + m_rehighlighting = true;
+ startValueChanged();
+ upperLimitChanged();
+ m_rehighlighting = false;
m_changed = true;
}
@@ -384,12 +391,17 @@ void FitParametersWidget::upperLimitChanged() {
else
upperLimit = DBL_MAX;
- QPalette *palette = new QPalette();
- if(upperLimit < value || upperLimit < lowerLimit)
- palette->setColor(QPalette::Text, Qt::red);
- else
- palette->setColor(QPalette::Text, Qt::black);
- ((QLineEdit *)ui.tableWidget->cellWidget(row, 4))->setPalette(*palette);
+ bool invalid = (upperLimit < value || upperLimit < lowerLimit);
+ highlightInvalid(row, 4, invalid);
+
+ if (m_rehighlighting)
+ return;
+
+ //upper limit was changed -> check whether the start value and the lower limit are \
valid and highlight them if not + m_rehighlighting = true;
+ startValueChanged();
+ lowerLimitChanged();
+ m_rehighlighting = false;
m_changed = true;
}
@@ -448,3 +460,11 @@ void FitParametersWidget::removeParameter() {
void FitParametersWidget::changed() {
m_changed = true;
}
+
+void FitParametersWidget::highlightInvalid(int row, int col, bool invalid) const {
+ QLineEdit* le = ((QLineEdit*)ui.tableWidget->cellWidget(row, col));
+ if (invalid)
+ le->setStyleSheet("QLineEdit{background: red;}");
+ else
+ le->setStyleSheet("");
+}
diff --git a/src/kdefrontend/widgets/FitParametersWidget.h \
b/src/kdefrontend/widgets/FitParametersWidget.h index cad2eec..d9f7a80 100644
--- a/src/kdefrontend/widgets/FitParametersWidget.h
+++ b/src/kdefrontend/widgets/FitParametersWidget.h
@@ -3,7 +3,8 @@
Project : LabPlot
Description : widget for editing the fit parameters
--------------------------------------------------------------------
- Copyright : (C) 2014 by Alexander Semke (alexander.semke@web.de)
+ Copyright : (C) 2014-2016 by Alexander Semke (alexander.semke@web.de)
+ Copyright : (C) 2016 by Stefan Gerlach \
(stefan.gerlach@uni-konstanz.de)
***************************************************************************/
@@ -44,7 +45,10 @@ private:
Ui::FitParametersWidget ui;
XYFitCurve::FitData* m_fitData;
bool m_changed;
- bool eventFilter( QObject * watched, QEvent * event);
+ bool m_rehighlighting;
+
+ bool eventFilter( QObject*, QEvent*);
+ void highlightInvalid(int row, int col, bool invalid) const;
signals:
void finished();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic