diff --git a/GUI/Views/FitWidgets/FitParameterWidget.cpp b/GUI/Views/FitWidgets/FitParameterWidget.cpp index eeaba7c33fbf880fabc27fec7d2ca8909d22a6f9..030ab36a7a9ab702b0638bc7bf35419675a8bc18 100644 --- a/GUI/Views/FitWidgets/FitParameterWidget.cpp +++ b/GUI/Views/FitWidgets/FitParameterWidget.cpp @@ -75,22 +75,20 @@ FitParameterWidget::FitParameterWidget(QWidget* parent) void FitParameterWidget::setParameterTuningWidget(ParameterTuningWidget* tuningWidget) { - if (tuningWidget == m_tuningWidget) { + if (tuningWidget == m_tuningWidget) return; - } else { - if (m_tuningWidget) - disconnect(m_tuningWidget, &ParameterTuningWidget::itemContextMenuRequest, this, - &FitParameterWidget::onTuningWidgetContextMenu); + if (m_tuningWidget) + disconnect(m_tuningWidget, &ParameterTuningWidget::itemContextMenuRequest, this, + &FitParameterWidget::onTuningWidgetContextMenu); - m_tuningWidget = tuningWidget; - if (!m_tuningWidget) - return; + m_tuningWidget = tuningWidget; + if (!m_tuningWidget) + return; - connect(m_tuningWidget, &ParameterTuningWidget::itemContextMenuRequest, this, - &FitParameterWidget::onTuningWidgetContextMenu, Qt::UniqueConnection); - connect(m_tuningWidget, &QObject::destroyed, [this] { m_tuningWidget = nullptr; }); - } + connect(m_tuningWidget, &ParameterTuningWidget::itemContextMenuRequest, this, + &FitParameterWidget::onTuningWidgetContextMenu, Qt::UniqueConnection); + connect(m_tuningWidget, &QObject::destroyed, [this] { m_tuningWidget = nullptr; }); } // QSize FitParameterWidget::sizeHint() const diff --git a/GUI/Views/FitWidgets/FitWorkerLauncher.cpp b/GUI/Views/FitWidgets/FitWorkerLauncher.cpp index 9f9e95be1b51bacd4f11504d821f235f724e704a..31abed06d6e653ccd2bb1d33c99ea9f98d8438d5 100644 --- a/GUI/Views/FitWidgets/FitWorkerLauncher.cpp +++ b/GUI/Views/FitWidgets/FitWorkerLauncher.cpp @@ -50,7 +50,7 @@ void FitWorkerLauncher::runFitting(std::shared_ptr<FitObjectiveBuilder> suite) //! Returns duration of fit in msec. -int FitWorkerLauncher::getDuration() +int FitWorkerLauncher::getDuration() const { return m_duration; } diff --git a/GUI/Views/FitWidgets/FitWorkerLauncher.h b/GUI/Views/FitWidgets/FitWorkerLauncher.h index 68edbc7f904af033bb29ddb689d72cd92829896b..752f4df5cdf2b52f0d93777870ef9b74b234c029 100644 --- a/GUI/Views/FitWidgets/FitWorkerLauncher.h +++ b/GUI/Views/FitWidgets/FitWorkerLauncher.h @@ -29,7 +29,7 @@ public: void runFitting(std::shared_ptr<FitObjectiveBuilder> suite); - int getDuration(); + int getDuration() const; public slots: void interruptFitting(); diff --git a/GUI/Views/FitWidgets/ParameterTuningDelegate.cpp b/GUI/Views/FitWidgets/ParameterTuningDelegate.cpp index 8bce41f5f41eeede6260492e3674e71fabcb54a8..6e619371bed2b98d721c8a06f7e7eecd8502ee00 100644 --- a/GUI/Views/FitWidgets/ParameterTuningDelegate.cpp +++ b/GUI/Views/FitWidgets/ParameterTuningDelegate.cpp @@ -74,7 +74,7 @@ int ParameterTuningDelegate::TuningData::value_to_slider(double value) return static_cast<int>(result); } -double ParameterTuningDelegate::TuningData::slider_to_value(int slider) +double ParameterTuningDelegate::TuningData::slider_to_value(int slider) const { return m_rmin + (slider - m_smin) * (m_rmax - m_rmin) / (m_smax - m_smin); } @@ -131,82 +131,81 @@ QWidget* ParameterTuningDelegate::createEditor(QWidget* parent, const QStyleOpti if (m_isReadOnly) return nullptr; - if (index.column() == m_valueColumn) { - if (index.parent().isValid() == false) - return nullptr; - - QVariant data = index.model()->data(index, Qt::EditRole); - if (!data.isValid()) - return nullptr; - - m_currentItem = static_cast<ParameterItem*>( - ParameterTuningModel::toSourceIndex(index).internalPointer()); - if (!m_currentItem) - return nullptr; - - double value = data.toDouble(); - RealLimits limits = m_currentItem->linkedItem()->limits(); - m_tuning_info.setItemLimits(limits); - m_tuning_info.value_to_slider(value); - - // initializing value box - m_valueBox = new ScientificSpinBox(); - m_valueBox->setKeyboardTracking(false); - m_valueBox->setFixedWidth(105); - m_valueBox->setDecimals(m_currentItem->linkedItem()->decimals()); - m_valueBox->setSingleStep(m_tuning_info.step()); - - if (limits.hasLowerLimit()) { - m_valueBox->setMinimum(limits.lowerLimit()); - } else { - m_valueBox->setMinimum(minimum_doublespin_value); - } + if (index.column() != m_valueColumn) + return QItemDelegate::createEditor(parent, option, index); - if (limits.hasUpperLimit()) { - m_valueBox->setMaximum(limits.upperLimit()); - } else { - m_valueBox->setMaximum(maximum_doublespin_value); - } + if (index.parent().isValid() == false) + return nullptr; + + QVariant data = index.model()->data(index, Qt::EditRole); + if (!data.isValid()) + return nullptr; - m_valueBox->setValue(value); - connect(m_valueBox, &ScientificSpinBox::valueChanged, this, - &ParameterTuningDelegate::editorValueChanged); - - // initializing slider - m_slider = new QSlider(Qt::Horizontal); - m_slider->setFocusPolicy(Qt::StrongFocus); - m_slider->setTickPosition(QSlider::NoTicks); - m_slider->setTickInterval(1); - m_slider->setSingleStep(1); - m_slider->setRange(m_tuning_info.m_smin, m_tuning_info.m_smax); - - updateSlider(value); - - m_contentWidget = new QWidget(parent); - m_contentLayout = new QHBoxLayout(parent); - m_contentLayout->setMargin(0); - m_contentLayout->setSpacing(0); - m_contentLayout->addWidget(m_valueBox); - m_contentLayout->addWidget(m_slider); - - // FIXME there is an issue with time of life of editor .vs. item - // m_currentItem->mapper()->setOnValueChange( - // [this](){ - // if(m_valueBox && m_currentItem) - // m_valueBox->setValue(m_currentItem->value().toDouble()); - // }, this); - - // m_currentItem->mapper()->setOnItemDestroy( - // [this](SessionItem *) { - // m_currentItem = 0; - // }, this); - - m_contentWidget->setLayout(m_contentLayout); - - return m_contentWidget; + m_currentItem = static_cast<ParameterItem*>( + ParameterTuningModel::toSourceIndex(index).internalPointer()); + if (!m_currentItem) + return nullptr; + + double value = data.toDouble(); + RealLimits limits = m_currentItem->linkedItem()->limits(); + m_tuning_info.setItemLimits(limits); + m_tuning_info.value_to_slider(value); + + // initializing value box + m_valueBox = new ScientificSpinBox(); + m_valueBox->setKeyboardTracking(false); + m_valueBox->setFixedWidth(105); + m_valueBox->setDecimals(m_currentItem->linkedItem()->decimals()); + m_valueBox->setSingleStep(m_tuning_info.step()); + + if (limits.hasLowerLimit()) { + m_valueBox->setMinimum(limits.lowerLimit()); } else { - return QItemDelegate::createEditor(parent, option, index); + m_valueBox->setMinimum(minimum_doublespin_value); } + + if (limits.hasUpperLimit()) { + m_valueBox->setMaximum(limits.upperLimit()); + } else { + m_valueBox->setMaximum(maximum_doublespin_value); + } + + m_valueBox->setValue(value); + connect(m_valueBox, &ScientificSpinBox::valueChanged, this, + &ParameterTuningDelegate::editorValueChanged); + + // initializing slider + m_slider = new QSlider(Qt::Horizontal); + m_slider->setFocusPolicy(Qt::StrongFocus); + m_slider->setTickPosition(QSlider::NoTicks); + m_slider->setTickInterval(1); + m_slider->setSingleStep(1); + m_slider->setRange(m_tuning_info.m_smin, m_tuning_info.m_smax); + + updateSlider(value); + + m_contentWidget = new QWidget(parent); + m_contentLayout = new QHBoxLayout(parent); + m_contentLayout->setMargin(0); + m_contentLayout->setSpacing(0); + m_contentLayout->addWidget(m_valueBox); + m_contentLayout->addWidget(m_slider); + + // FIXME there is an issue with time of life of editor .vs. item + // m_currentItem->mapper()->setOnValueChange( + // [this](){ + // if(m_valueBox && m_currentItem) + // m_valueBox->setValue(m_currentItem->value().toDouble()); + // }, this); + + // m_currentItem->mapper()->setOnItemDestroy( + // [this](SessionItem *) { + // m_currentItem = 0; + // }, this); + + m_contentWidget->setLayout(m_contentLayout); + + return m_contentWidget; } void ParameterTuningDelegate::updateSlider(double value) const diff --git a/GUI/Views/FitWidgets/ParameterTuningDelegate.h b/GUI/Views/FitWidgets/ParameterTuningDelegate.h index 316727b867ba7ba486e138c040be7cc4931d668d..385776c1704c63dcc17b9e0cad3e33f727f18dd9 100644 --- a/GUI/Views/FitWidgets/ParameterTuningDelegate.h +++ b/GUI/Views/FitWidgets/ParameterTuningDelegate.h @@ -35,7 +35,7 @@ public: void setRangeFactor(double range_factor); void setItemLimits(const RealLimits& item_limits); int value_to_slider(double value); - double slider_to_value(int slider); + double slider_to_value(int slider) const; double step() const; int m_smin; int m_smax; diff --git a/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.cpp b/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.cpp index db228e3703b4110e16f96b3540198a49bb58b547..9d5f8fcd101cf26275cd2175d40dea3f94184db5 100644 --- a/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.cpp +++ b/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.cpp @@ -129,7 +129,7 @@ QList<QAction*> InstrumentSelectorWidget::toolbarActions() const m_storeInLibraryAction, m_loadFromLibraryAction}; } -void InstrumentSelectorWidget::onContextMenuRequest(const QPoint& point) +void InstrumentSelectorWidget::onContextMenuRequest(const QPoint& point) const { QMenu menu; menu.addAction(m_copyAction); diff --git a/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.h b/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.h index 05328c887c2a968d2b65081bd842601f2980dfed..e42bc987bb95dadd8c83c78416c296afb82e9795 100644 --- a/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.h +++ b/GUI/Views/InstrumentWidgets/InstrumentSelectorWidget.h @@ -36,7 +36,7 @@ public: QList<QAction*> toolbarActions() const; private slots: - void onContextMenuRequest(const QPoint& point); + void onContextMenuRequest(const QPoint& point) const; void onNewGisas(); void onNewOffSpecular(); void onNewSpecular();