diff --git a/GUI/View/Fit/FitSessionWidget.cpp b/GUI/View/Fit/FitSessionWidget.cpp index 3193245cc943b81a4f12319b1c9ada5723f599d8..054ae62416bae920fe365c2993453d4a77234a73 100644 --- a/GUI/View/Fit/FitSessionWidget.cpp +++ b/GUI/View/Fit/FitSessionWidget.cpp @@ -33,12 +33,19 @@ FitSessionWidget::FitSessionWidget(QWidget* parent) layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); - auto* tabWidget = new QTabWidget(this); - tabWidget->addTab(m_fitParametersWidget, "Fit Parameters"); - tabWidget->addTab(m_minimizerSettingsWidget, "Minimizer"); + m_tabWidget = new QTabWidget(this); + m_tabWidget->addTab(m_fitParametersWidget, "Fit Parameters"); + m_tabWidget->addTab(m_minimizerSettingsWidget, "Minimizer"); - layout->addWidget(tabWidget); + layout->addWidget(m_tabWidget); layout->addWidget(m_controlWidget); + + applySettings(); +} + +FitSessionWidget::~FitSessionWidget() +{ + saveSettings(); } void FitSessionWidget::setJobItem(JobItem* jobItem) @@ -81,3 +88,22 @@ void FitSessionWidget::onFittingError(const QString& text) { m_controlWidget->onFittingError(text); } + +void FitSessionWidget::applySettings() +{ + QSettings settings; + if (settings.childGroups().contains(GUI::Constants::S_FIT_SESSION_WIDGET)) { + settings.beginGroup(GUI::Constants::S_FIT_SESSION_WIDGET); + m_tabWidget->setCurrentIndex(settings.value(GUI::Constants::S_FIT_SESSION_WIDGET_CURRENT_TAB).toInt()); + settings.endGroup(); + } +} + +void FitSessionWidget::saveSettings() +{ + QSettings settings; + settings.beginGroup(GUI::Constants::S_FIT_SESSION_WIDGET); + settings.setValue(GUI::Constants::S_FIT_SESSION_WIDGET_CURRENT_TAB, m_tabWidget->currentIndex()); + settings.endGroup(); + settings.sync(); +} diff --git a/GUI/View/Fit/FitSessionWidget.h b/GUI/View/Fit/FitSessionWidget.h index f467a1de28107d0d4c2ee719f22f638fef70445d..a26e2e264ad595d5c293ba03653744e878821f6e 100644 --- a/GUI/View/Fit/FitSessionWidget.h +++ b/GUI/View/Fit/FitSessionWidget.h @@ -23,6 +23,7 @@ class FitParameterWidget; class MinimizerSettingsWidget; class ParameterTuningWidget; class FitSessionController; +class QTabWidget; //! Contains all fit settings for given JobItem (fit parameters, //! minimizer settings). Controlled by FitActivityPanel. @@ -32,6 +33,7 @@ class FitSessionWidget : public QWidget { public: FitSessionWidget(QWidget* parent = nullptr); + ~FitSessionWidget(); void setJobItem(JobItem* jobItem); void setModelTuningWidget(ParameterTuningWidget* tuningWidget); @@ -40,6 +42,10 @@ public: private: void onFittingError(const QString& text); + void applySettings(); + void saveSettings(); + + QTabWidget* m_tabWidget; RunFitControlWidget* m_controlWidget; FitParameterWidget* m_fitParametersWidget; MinimizerSettingsWidget* m_minimizerSettingsWidget; diff --git a/GUI/View/Tool/mainwindow_constants.h b/GUI/View/Tool/mainwindow_constants.h index b45d37a119167380da3dcdb63490696709f1bb03..7355efd4f27cad3ba3d36f36d11cc88745732806 100644 --- a/GUI/View/Tool/mainwindow_constants.h +++ b/GUI/View/Tool/mainwindow_constants.h @@ -25,6 +25,7 @@ const char S_JOB_MESSAGE_PANEL[] = "JobMessagePanel"; const char S_JOB_SELECTOR_PANEL[] = "JobSelectorPanel"; const char S_FIT_ACTIVITY_PANEL[] = "FitActivityPanel"; const char S_SESSION_MODEL_VIEW[] = "SessionModelView"; +const char S_FIT_SESSION_WIDGET[] = "FitSessionWidget"; // Settings keys const char S_WINDOW_SIZE[] = "size"; @@ -35,6 +36,7 @@ const char S_JOB_MESSAGE_PANEL_HEIHGT[] = "height"; const char S_JOB_SELECTOR_PANEL_WIDTH[] = "width"; const char S_JOB_SELECTOR_SPLITTER_SIZES[] = "splitter_sizes"; const char S_FIT_ACTIVITY_PANEL_SIZE[] = "size"; +const char S_FIT_SESSION_WIDGET_CURRENT_TAB[] = "current_tab"; const int MAX_RECENT_PROJECTS = 10;