diff --git a/src/fgt/edit_quality/eqhandle.h b/src/fgt/edit_quality/eqhandle.h index b66fe593b..c58c44358 100644 --- a/src/fgt/edit_quality/eqhandle.h +++ b/src/fgt/edit_quality/eqhandle.h @@ -104,8 +104,10 @@ signals: private slots: - void setXBySpinBoxValueChanged (double spinBoxValue); // changing equalizer spinboxes moves the connected handle void moveMidHandle(); + +public slots: + void setXBySpinBoxValueChanged (double spinBoxValue); // changing equalizer spinboxes moves the connected handle }; #endif // EQHANDLE_H \ No newline at end of file diff --git a/src/fgt/edit_quality/qualitymapperdialog.cpp b/src/fgt/edit_quality/qualitymapperdialog.cpp index f460d5a03..8313e97a1 100644 --- a/src/fgt/edit_quality/qualitymapperdialog.cpp +++ b/src/fgt/edit_quality/qualitymapperdialog.cpp @@ -63,6 +63,7 @@ QualityMapperDialog::QualityMapperDialog(QWidget *parent, MeshModel& m, GLArea * _equalizer_histogram = 0; for (int i=0; isetValue((double)value/50.0); +} + +void QualityMapperDialog::on_midSpinBox_valueChanged(double) +{ + if ( _signalDir != LABEL2SPINBOX ) + ui.midPercentage->blockSignals( true ); + QString val; + val.setNum( 100.0f * absolute2RelativeValf( ui.midSpinBox->value(), ui.maxSpinBox->value() - ui.minSpinBox->value() ), 'g', 4 ); + ui.midPercentage->setText( val + "%" ); + if ( _signalDir != LABEL2SPINBOX ) + ui.midPercentage->blockSignals( false ); + + _signalDir = SPINBOX2LABEL; +} + +void QualityMapperDialog::on_midPercentage_textEdited(QString newText) +{ + bool conversionPossible; + float numericValue = newText.toFloat(&conversionPossible); + + if ( _signalDir != SPINBOX2LABEL ) + ui.midSpinBox->blockSignals( true ); + if ((conversionPossible) && (numericValue>=0) && (numericValue<=100) ) + { + ui.midSpinBox->setValue( relative2AbsoluteValf(numericValue, ui.maxSpinBox->value() - ui.minSpinBox->value()) / 100.0f ); + _equalizerHandles[MID_HANDLE]->setXBySpinBoxValueChanged(ui.midSpinBox->value()); + } + else + QMessageBox::warning(this, tr("Wrong text value"), tr("The value inserted in the text area has a bad range value or is of a not compatible type"), QMessageBox::Ok); + if ( _signalDir != SPINBOX2LABEL ) + ui.midSpinBox->blockSignals( false ); + + _signalDir = LABEL2SPINBOX; } \ No newline at end of file diff --git a/src/fgt/edit_quality/qualitymapperdialog.h b/src/fgt/edit_quality/qualitymapperdialog.h index 666bc35f6..243bb9351 100644 --- a/src/fgt/edit_quality/qualitymapperdialog.h +++ b/src/fgt/edit_quality/qualitymapperdialog.h @@ -100,6 +100,13 @@ public: #define GRAPHICS_ITEMS_LIST QList #define TF_HANDLES_LIST QList +enum MID_HANDLE_SIGNAL_DIRECTION +{ + UNKNOWN_DIRECTION = 0, + SPINBOX2LABEL, + LABEL2SPINBOX +}; + //this class define the dialog of the plugin class QualityMapperDialog : public QDockWidget { @@ -127,6 +134,7 @@ private: bool _leftHandleWasInsideHistogram; bool _rightHandleWasInsideHistogram; GRAPHICS_ITEMS_LIST _equalizerHistogramBars; + MID_HANDLE_SIGNAL_DIRECTION _signalDir; //Transfer Function items TransferFunction *_transferFunction; @@ -170,6 +178,8 @@ signals: void closingDialog(); private slots: + void on_midPercentage_textEdited(QString); + void on_midSpinBox_valueChanged(double); void on_brightnessSlider_valueChanged(int); void on_clampButton_clicked(); void on_ySpinBox_valueChanged(double); diff --git a/src/fgt/edit_quality/qualitymapperdialog.ui b/src/fgt/edit_quality/qualitymapperdialog.ui index cb4538846..a0f5c14eb 100644 --- a/src/fgt/edit_quality/qualitymapperdialog.ui +++ b/src/fgt/edit_quality/qualitymapperdialog.ui @@ -534,7 +534,7 @@ - 40 + 16 20 @@ -553,6 +553,13 @@ + + + + % + + + @@ -560,7 +567,7 @@ - 40 + 16 20