[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