diff --git a/GUI/Model/Project/ProjectDocument.cpp b/GUI/Model/Project/ProjectDocument.cpp index f115cd6dc75119f261523b60c67f6f8bad694a24..4b30b6ccb5d79cfe53666ce9c2a51398d922f7c6 100644 --- a/GUI/Model/Project/ProjectDocument.cpp +++ b/GUI/Model/Project/ProjectDocument.cpp @@ -28,7 +28,7 @@ #include <QFile> #include <QStandardPaths> -std::optional<ProjectDocument*> gProjectDocument; +std::unique_ptr<ProjectDocument> gDoc; namespace { diff --git a/GUI/Model/Project/ProjectDocument.h b/GUI/Model/Project/ProjectDocument.h index 95f4c5464ac1bd8cd02aca5cc8858d59755759e0..7b975613a19c05ddc31813fcea0f987d2b1d13b5 100644 --- a/GUI/Model/Project/ProjectDocument.h +++ b/GUI/Model/Project/ProjectDocument.h @@ -26,7 +26,7 @@ class MessageService; class ProjectDocument; class QIODevice; -extern std::optional<ProjectDocument*> gProjectDocument; +extern std::unique_ptr<ProjectDocument> gDoc; //! Project document class handles all data related to the opened project //! (sample, job, project specific settings). diff --git a/GUI/View/Access/DataPropertyWidget.cpp b/GUI/View/Access/DataPropertyWidget.cpp index 40b87fae65f80a7859b77ddd893b03b0250acf06..d59548407e8abacfbf3a159c2271f2423a41064a 100644 --- a/GUI/View/Access/DataPropertyWidget.cpp +++ b/GUI/View/Access/DataPropertyWidget.cpp @@ -63,9 +63,8 @@ InstrumentItem* DataPropertyWidget::instrumentItem() if (jobItem()) return jobItem()->instrumentItem(); else if (realItem()) { - ASSERT(gProjectDocument.has_value()); - return gProjectDocument.value()->instrumentModel()->findInstrumentItemById( - realItem()->instrumentId()); + ASSERT(gDoc); + return gDoc->instrumentModel()->findInstrumentItemById(realItem()->instrumentId()); } else ASSERT_NEVER; return nullptr; diff --git a/GUI/View/Canvas/IntensityDataCanvas.cpp b/GUI/View/Canvas/IntensityDataCanvas.cpp index c5b64f7f49b7a20873142d9ff8830ddd3674fed5..5e1ff4e67c81613dd19ac5a9ea8d0de2a0cab56f 100644 --- a/GUI/View/Canvas/IntensityDataCanvas.cpp +++ b/GUI/View/Canvas/IntensityDataCanvas.cpp @@ -100,7 +100,7 @@ void IntensityDataCanvas::onResetViewAction() { for (auto* item : allData2DItems()) item->resetView(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); // synchronize real item data range with current item if (realData2DItem()) @@ -109,8 +109,8 @@ void IntensityDataCanvas::onResetViewAction() void IntensityDataCanvas::onSavePlotAction() { - ASSERT(gProjectDocument.has_value()); - QString dirname = gProjectDocument.value()->userExportDir(); + ASSERT(gDoc); + QString dirname = gDoc->userExportDir(); GUI::Plot::savePlot(dirname, m_colorMapCanvas->colorMap()->customPlot(), currentData2DItem()->c_field()); } diff --git a/GUI/View/Canvas/MaskEditorActions.cpp b/GUI/View/Canvas/MaskEditorActions.cpp index 08ca02dd9114e3b41ebefee4dbbbe6ba47f73732..7de53f185d771aa827c8a5af0dc50a39188c7d56 100644 --- a/GUI/View/Canvas/MaskEditorActions.cpp +++ b/GUI/View/Canvas/MaskEditorActions.cpp @@ -96,7 +96,7 @@ void MaskEditorActions::onDeleteMaskAction() m_mask_list_model->removeMaskAt(indexes.back().row()); indexes = m_selectionModel->selectedIndexes(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Performs switch of mask value for all selected items (true -> false, false -> true) @@ -108,7 +108,7 @@ void MaskEditorActions::onToggleMaskValueAction() if (MaskItem* item = m_mask_list_model->itemForIndex(itemIndex)) item->setMaskValue(!item->maskValue()); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Lower mask one level down or rise one level up in the masks stack @@ -137,7 +137,7 @@ void MaskEditorActions::changeMaskStackingOrder(bool move_up) } } } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Returns true if at least one of MaskItems in the selection can be moved one level up diff --git a/GUI/View/Canvas/MaskEditorCanvas.cpp b/GUI/View/Canvas/MaskEditorCanvas.cpp index 8dbb9db0f2dc3e55240ee6354ca7fbae34e3dd84..4be4fcce89d3ac9015792ca95bc98dc6edc97993 100644 --- a/GUI/View/Canvas/MaskEditorCanvas.cpp +++ b/GUI/View/Canvas/MaskEditorCanvas.cpp @@ -81,8 +81,8 @@ void MaskEditorCanvas::onPresentationChange(bool pixelized) void MaskEditorCanvas::onSavePlotRequest() { - ASSERT(gProjectDocument.has_value()); - QString dirname = gProjectDocument.value()->userExportDir(); + ASSERT(gDoc); + QString dirname = gDoc->userExportDir(); GUI::Plot::savePlot(dirname, m_scene->colorMap()->customPlot(), m_data2DItem->c_field()); } @@ -94,7 +94,7 @@ void MaskEditorCanvas::onResetViewRequest() m_data2DItem->resetView(); else setZoomToROI(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void MaskEditorCanvas::setZoomToROI() diff --git a/GUI/View/Canvas/ProjectionsEditorCanvas.cpp b/GUI/View/Canvas/ProjectionsEditorCanvas.cpp index cef1ba9bbb590269989149fb30cd5df2145bf9e3..9fe2b2ce5cfcbbec2f8e48112d5fd242c9c2f67c 100644 --- a/GUI/View/Canvas/ProjectionsEditorCanvas.cpp +++ b/GUI/View/Canvas/ProjectionsEditorCanvas.cpp @@ -145,7 +145,7 @@ void ProjectionsEditorCanvas::onResetViewRequest() { m_view->onResetViewRequest(); m_data2DItem->resetView(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void ProjectionsEditorCanvas::onActivityChanged(MaskFlags::MaskMode mask_mode) diff --git a/GUI/View/Canvas/SpecularDataCanvas.cpp b/GUI/View/Canvas/SpecularDataCanvas.cpp index c2fc0a94a8e79bab8e6d21213b4a491b9af945c7..c5ead40738688f1fe6d4500d8ce2defbd1891412 100644 --- a/GUI/View/Canvas/SpecularDataCanvas.cpp +++ b/GUI/View/Canvas/SpecularDataCanvas.cpp @@ -87,13 +87,13 @@ void SpecularDataCanvas::onResetViewAction() { for (auto* item : allData1DItems()) item->resetView(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void SpecularDataCanvas::onSavePlotAction() { - ASSERT(gProjectDocument.has_value()); - QString dirname = gProjectDocument.value()->userExportDir(); + ASSERT(gDoc); + QString dirname = gDoc->userExportDir(); GUI::Plot::savePlot(dirname, m_plot_canvas->customPlot(), currentData1DItem()->c_field()); } diff --git a/GUI/View/Combo/ItemComboToolbar.cpp b/GUI/View/Combo/ItemComboToolbar.cpp index c6dca7184b9532b0c002ccf50300f503836685d1..ee0599e5f0a9bec618aadbdf9e1db998e92ce7d7 100644 --- a/GUI/View/Combo/ItemComboToolbar.cpp +++ b/GUI/View/Combo/ItemComboToolbar.cpp @@ -87,7 +87,7 @@ void ItemComboToolbar::_comboChanged(const int index) { QString txt{m_comboBox->itemText(index)}; emit comboChanged(txt); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! All items in QComboBox which are not in given list, will be disabled (gray and unselectable). diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp index f291359de6a7e8a609d0beabe78c98c60cb20d24..a229474bdeeeb0e4b4e55c654aca6f5c00d1c579 100644 --- a/GUI/View/Data/DatafilesSelector.cpp +++ b/GUI/View/Data/DatafilesSelector.cpp @@ -210,7 +210,7 @@ QList<QAction*> DatafilesSelector::getOverlayActions(const QModelIndex& index, b removeAction->setToolTip("Remove this data"); connect(removeAction, &QAction::triggered, [this, item] { m_treeModel->removeDataItem(item); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }); return {removeAction}; @@ -308,7 +308,7 @@ void DatafilesSelector::importData1D() } } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void DatafilesSelector::importData2D() @@ -364,7 +364,7 @@ void DatafilesSelector::importData2D() } } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void DatafilesSelector::renameCurrentItem() @@ -375,14 +375,14 @@ void DatafilesSelector::renameCurrentItem() // internals as an item editor m_treeView->setIndexWidget(currentIndex(), nullptr); m_treeView->edit(currentIndex()); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } } void DatafilesSelector::removeCurrentItem() { m_treeModel->removeDataItem(currentItem()); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void DatafilesSelector::updateActionEnabling() diff --git a/GUI/View/Device/AxisPropertyForm.cpp b/GUI/View/Device/AxisPropertyForm.cpp index 14f8faad8d024408ccf6ee02fde4e74936dcd32a..b74607892b6db8a4675fa153231e8419ceadda9d 100644 --- a/GUI/View/Device/AxisPropertyForm.cpp +++ b/GUI/View/Device/AxisPropertyForm.cpp @@ -33,7 +33,7 @@ AxisPropertyForm::AxisPropertyForm(QWidget* parent, const QString& groupTitle, [this, axisProperty](int v) { axisProperty->setNbins(v); emit dataChanged(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::nonnegative(), nbinsTooltip); layout->addRow("# bins:", m_nbinsSpinBox); diff --git a/GUI/View/Device/SpanPropertyForm.cpp b/GUI/View/Device/SpanPropertyForm.cpp index 8ad67bae8e68cd4aa83ca70e4afe3483bbda3cd8..491d6f05be546ec68b1d40e6a309877e5f7bcf36 100644 --- a/GUI/View/Device/SpanPropertyForm.cpp +++ b/GUI/View/Device/SpanPropertyForm.cpp @@ -34,7 +34,7 @@ SpanPropertyForm::SpanPropertyForm(QWidget* parent, const QString& groupTitle, [this, spanProperty](int v) { spanProperty->setNbins(v); emit dataChanged(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::nonnegative(), nbinsTooltip); layout->addRow("# bins:", m_nbinsSpinBox); diff --git a/GUI/View/FitControl/MinimizerSettingsWidget.cpp b/GUI/View/FitControl/MinimizerSettingsWidget.cpp index 4fae24e47651cac0aae22d8d5da11befe5015206..74c78590c082bda3e5810296849d8b72e3d07eff 100644 --- a/GUI/View/FitControl/MinimizerSettingsWidget.cpp +++ b/GUI/View/FitControl/MinimizerSettingsWidget.cpp @@ -62,7 +62,7 @@ void MinimizerSettingsWidget::setMinContainerItem(MinimizerContainerItem* contai [this] { return m_containerItem->objectiveMetricCombo(); }, [this](const QString& t) { m_containerItem->setCurrentObjectiveMetric(t); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, false, &m_updaters, "Objective metric to use for estimating distance between simulated " @@ -72,7 +72,7 @@ void MinimizerSettingsWidget::setMinContainerItem(MinimizerContainerItem* contai [this] { return m_containerItem->normFunctionCombo(); }, [this](const QString& t) { m_containerItem->setCurrentNormFunction(t); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, false, &m_updaters, "Normalization to use for estimating distance between simulated and " @@ -142,7 +142,7 @@ void MinimizerSettingsWidget::createGroupedAlgorithmsCombo() m_containerItem->setCurrentCommonAlgorithm(comboBox->currentText()); createMimimizerEdits(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }); // update state @@ -188,7 +188,7 @@ void MinimizerSettingsWidget::createMinuitEdits() GUI::Util::createIntSpinBox([=] { return minItem->strategy(); }, [=](int v) { minItem->setStrategy(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::limited(0, 2), "Minimization strategy (0-low, 1-medium, 2-high quality)", @@ -199,7 +199,7 @@ void MinimizerSettingsWidget::createMinuitEdits() GUI::Util::createDoubleSpinBox([=] { return minItem->errorDefinition(); }, [=](double v) { minItem->setErrorDefinition(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Error definition factor for parameter error calculation", @@ -210,7 +210,7 @@ void MinimizerSettingsWidget::createMinuitEdits() [=] { return minItem->tolerance(); }, [=](double v) { minItem->setTolerance(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Tolerance on the function value at the minimum", RealLimits::nonnegative())); @@ -220,35 +220,35 @@ void MinimizerSettingsWidget::createMinuitEdits() GUI::Util::createDoubleSpinBox([=] { return minItem->precision(); }, [=](double v) { minItem->setPrecision(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Relative floating point arithmetic precision", RealLimits::nonnegative())); - m_minimizerLayout->addRow( - "Max func calls:", - GUI::Util::createIntSpinBox([=] { return minItem->maxFuncCalls(); }, - [=](int v) { - minItem->setMaxFuncCalls(v); - gProjectDocument.value()->setModified(); - }, - RealLimits::nonnegative(), "Maximum number of function calls", - &m_updaters, true /*easy scroll*/)); + m_minimizerLayout->addRow("Max func calls:", + GUI::Util::createIntSpinBox([=] { return minItem->maxFuncCalls(); }, + [=](int v) { + minItem->setMaxFuncCalls(v); + gDoc->setModified(); + }, + RealLimits::nonnegative(), + "Maximum number of function calls", + &m_updaters, true /*easy scroll*/)); } void MinimizerSettingsWidget::createGSLMultiMinEdits() { GSLMultiMinimizerItem* minItem = m_containerItem->minimizerItemGSLMulti(); - m_minimizerLayout->addRow( - "Max iterations:", - GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, - [=](int v) { - minItem->setMaxIterations(v); - gProjectDocument.value()->setModified(); - }, - RealLimits::nonnegative(), "Maximum number of iterations", - &m_updaters, true /*easy scroll*/)); + m_minimizerLayout->addRow("Max iterations:", + GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, + [=](int v) { + minItem->setMaxIterations(v); + gDoc->setModified(); + }, + RealLimits::nonnegative(), + "Maximum number of iterations", + &m_updaters, true /*easy scroll*/)); } void MinimizerSettingsWidget::createTMVAGeneticEdits() @@ -260,26 +260,26 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits() [=] { return minItem->tolerance(); }, [=](double v) { minItem->setTolerance(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Tolerance on the function value at the minimum", RealLimits::nonnegative())); - m_minimizerLayout->addRow( - "Max iterations:", - GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, - [=](int v) { - minItem->setMaxIterations(v); - gProjectDocument.value()->setModified(); - }, - RealLimits::nonnegative(), "Maximum number of iterations", - &m_updaters, true /*easy scroll*/)); + m_minimizerLayout->addRow("Max iterations:", + GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, + [=](int v) { + minItem->setMaxIterations(v); + gDoc->setModified(); + }, + RealLimits::nonnegative(), + "Maximum number of iterations", + &m_updaters, true /*easy scroll*/)); m_minimizerLayout->addRow( "Population:", GUI::Util::createIntSpinBox([=] { return minItem->populationSize(); }, [=](int v) { minItem->setPopulationSize(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::nonnegative(), "Population size", &m_updaters, true /*easy scroll*/)); @@ -288,7 +288,7 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits() [=] { return minItem->randomSeed(); }, [=](int v) { minItem->setRandomSeed(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::limitless(), "Initialization of pseudorandom number generator", @@ -299,22 +299,22 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() { SimAnMinimizerItem* minItem = m_containerItem->minimizerItemSimAn(); - m_minimizerLayout->addRow( - "Max iterations:", GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, - [=](int v) { - minItem->setMaxIterations(v); - gProjectDocument.value()->setModified(); - }, - RealLimits::nonnegative(), - "Number of points to try for each step", - &m_updaters, true /*easy scroll*/)); + m_minimizerLayout->addRow("Max iterations:", + GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, + [=](int v) { + minItem->setMaxIterations(v); + gDoc->setModified(); + }, + RealLimits::nonnegative(), + "Number of points to try for each step", + &m_updaters, true /*easy scroll*/)); m_minimizerLayout->addRow( "Iterations at T:", GUI::Util::createIntSpinBox([=] { return minItem->iterationsAtEachTemp(); }, [=](int v) { minItem->setIterationsAtEachTemp(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, RealLimits::nonnegative(), "Number of iterations at each temperature", &m_updaters, @@ -324,7 +324,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() [=] { return minItem->stepSize(); }, [=](double v) { minItem->setStepSize(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Max step size used in random walk", RealLimits::nonnegative())); @@ -333,7 +333,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() [=] { return minItem->boltzmanK(); }, [=](double v) { minItem->setBoltzmanK(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Boltzmann k", RealLimits::nonnegative())); @@ -341,7 +341,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() "T init:", GUI::Util::createDoubleSpinBox([=] { return minItem->boltzmanInitT(); }, [=](double v) { minItem->setBoltzmanInitT(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Boltzmann initial temperature", RealLimits::nonnegative())); @@ -350,7 +350,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() [=] { return minItem->boltzmanMu(); }, [=](double v) { minItem->setBoltzmanMu(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Boltzmann mu", RealLimits::nonnegative())); @@ -358,7 +358,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits() "T min:", GUI::Util::createDoubleSpinBox([=] { return minItem->boltzmanMinT(); }, [=](double v) { minItem->setBoltzmanMinT(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Boltzmann minimal temperature", RealLimits::nonnegative())); @@ -373,20 +373,20 @@ void MinimizerSettingsWidget::createGSLLevMarEdits() [=] { return minItem->tolerance(); }, [=](double v) { minItem->setTolerance(v); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Tolerance on the function value at the minimum", RealLimits::nonnegative())); - m_minimizerLayout->addRow( - "Max iterations:", - GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, - [=](int v) { - minItem->setMaxIterations(v); - gProjectDocument.value()->setModified(); - }, - RealLimits::nonnegative(), "Maximum number of iterations", - &m_updaters, true /*easy scroll*/)); + m_minimizerLayout->addRow("Max iterations:", + GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); }, + [=](int v) { + minItem->setMaxIterations(v); + gDoc->setModified(); + }, + RealLimits::nonnegative(), + "Maximum number of iterations", + &m_updaters, true /*easy scroll*/)); } void MinimizerSettingsWidget::updateUIValues() diff --git a/GUI/View/FitControl/RunFitControlWidget.cpp b/GUI/View/FitControl/RunFitControlWidget.cpp index 3184e43f839cd0479e0085f6a3d62bc7f8833ca2..c33dd95cae366cd86930b13b1afdaad0539902f2 100644 --- a/GUI/View/FitControl/RunFitControlWidget.cpp +++ b/GUI/View/FitControl/RunFitControlWidget.cpp @@ -124,7 +124,7 @@ void RunFitControlWidget::onSliderValueChanged(int value) m_updateIntervalLabel->setText(QString::number(interval)); if (fitSuiteItem()) fitSuiteItem()->setUpdateInterval(interval); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } int RunFitControlWidget::sliderUpdateInterval() diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp index a84ca2142a84ec9b8323fdf43a5e2abc6dda52a4..1c709f50a6310cd821be387b459a85afdfcda0cf 100644 --- a/GUI/View/Frame/Fit1DFrame.cpp +++ b/GUI/View/Frame/Fit1DFrame.cpp @@ -113,7 +113,7 @@ void Fit1DFrame::onResetViewAction() // synchronize data range between simulated and real GUI::View::RangeUtil::setCommonRangeY(mainData1DItems()); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void Fit1DFrame::connectItems() diff --git a/GUI/View/Frame/Fit2DFrame.cpp b/GUI/View/Frame/Fit2DFrame.cpp index 7831c98b1407cece0c0a689d76b94802225912ba..d979617c8e628b5161457a643c814912b4b71f4a 100644 --- a/GUI/View/Frame/Fit2DFrame.cpp +++ b/GUI/View/Frame/Fit2DFrame.cpp @@ -117,7 +117,7 @@ void Fit2DFrame::onResetViewAction() // synchronize data range between simulated and real GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems()); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void Fit2DFrame::connectItems() diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.cpp b/GUI/View/Instrument/InstrumentLibraryEditor.cpp index f39313412a4a2e12df9595e7af1ae1d8721d8db1..73d6691a05ca16d676443f5365186e8abdb176e4 100644 --- a/GUI/View/Instrument/InstrumentLibraryEditor.cpp +++ b/GUI/View/Instrument/InstrumentLibraryEditor.cpp @@ -88,8 +88,8 @@ InstrumentLibraryEditor::InstrumentLibraryEditor(QWidget* parent, connect(m_treeModel, &QAbstractItemModel::modelReset, [this] { m_treeView->expandAll(); }); - connect(m_buttonBox, &QDialogButtonBox::accepted, this, &InstrumentLibraryEditor::accept); - connect(m_buttonBox, &QDialogButtonBox::rejected, this, &InstrumentLibraryEditor::reject); + connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); // ensure a current item when widget is shown GUI::Style::setResizable(this); diff --git a/GUI/View/Job/JobView.cpp b/GUI/View/Job/JobView.cpp index 3f98e571eff126bbbeebe570e226f8179bffa65f..45ec16ea80730a65e9810ae4eb925c57bf697bff 100644 --- a/GUI/View/Job/JobView.cpp +++ b/GUI/View/Job/JobView.cpp @@ -49,7 +49,7 @@ JobView::JobView(QProgressBar* progressBar, ProjectDocument* document) // store activity in JobItem if (selectedJobItem()) { selectedJobItem()->setActivity(JobViewActivities::nameFromActivity(activity)); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } }); m_activityActions.addAction(action); diff --git a/GUI/View/JobControl/JobListModel.cpp b/GUI/View/JobControl/JobListModel.cpp index cd23b0ab128e86a663f2503209728382d294c369..49960f0e2eb098053c3ce0a11ace6fa58888b936 100644 --- a/GUI/View/JobControl/JobListModel.cpp +++ b/GUI/View/JobControl/JobListModel.cpp @@ -101,7 +101,7 @@ void JobListModel::emitJobListModelChanged(JobItem* job) QModelIndex idx = index(i, 0); emit dataChanged(idx, idx); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //-------------------------------------------------------------------------------------------------- diff --git a/GUI/View/JobControl/JobListing.cpp b/GUI/View/JobControl/JobListing.cpp index ec4ff3790cf99242e60a112a35f7b947506ce0ec..dae63d3513dd43ecda4bb0542563a476d6c9eb04 100644 --- a/GUI/View/JobControl/JobListing.cpp +++ b/GUI/View/JobControl/JobListing.cpp @@ -140,7 +140,7 @@ void JobListing::onItemSelectionChanged() QModelIndexList selected = m_listView->selectionModel()->selectedIndexes(); if (selected.size() == 1) - gProjectDocument.value()->jobModel()->setSelectedIndex(selected.first().row()); + gDoc->jobModel()->setSelectedIndex(selected.first().row()); emit selectedJobsChanged(selectedJobItems()); } @@ -159,14 +159,14 @@ void JobListing::onRun() { for (const QModelIndex& index : m_listView->selectionModel()->selectedIndexes()) m_model->runJob(index); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void JobListing::onCancel() { for (const QModelIndex& index : m_listView->selectionModel()->selectedIndexes()) m_model->cancelJob(index); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void JobListing::onRemove() @@ -180,7 +180,7 @@ void JobListing::onRemove() int lastSelectedRow = indexes.front().row(); ensureItemSelected(lastSelectedRow); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void JobListing::equalizeSelectedToJob(JobItem* srcJob) @@ -201,7 +201,7 @@ void JobListing::equalizeSelectedToJob(JobItem* srcJob) } } } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void JobListing::showContextMenu(const QPoint&) @@ -270,7 +270,7 @@ void JobListing::ensureItemSelected(int lastSelectedRow) void JobListing::restoreSelection() { - int lastUsed = gProjectDocument.value()->jobModel()->selectedIndex(); + int lastUsed = gDoc->jobModel()->selectedIndex(); if (lastUsed >= 0 && lastUsed < m_model->rowCount()) { QModelIndex lastUsedIndex = m_model->index(lastUsed, 0, QModelIndex()); m_listView->selectionModel()->select(lastUsedIndex, QItemSelectionModel::ClearAndSelect); diff --git a/GUI/View/Main/ActionManager.cpp b/GUI/View/Main/ActionManager.cpp index c5945c3b7dde59988659fd123c0b48874ede9771..d97a76d0c52b06a2b91a33bd611d7bba61d3afe8 100644 --- a/GUI/View/Main/ActionManager.cpp +++ b/GUI/View/Main/ActionManager.cpp @@ -65,7 +65,7 @@ ActionManager::ActionManager(MainWindow* parent) void ActionManager::updateActionEnabling() { - const bool documentExists = gProjectDocument.has_value(); + const bool documentExists = (bool)gDoc; m_saveAction->setEnabled(documentExists); m_saveAsAction->setEnabled(documentExists); m_closeProjectAction->setEnabled(documentExists); diff --git a/GUI/View/Main/MainWindow.cpp b/GUI/View/Main/MainWindow.cpp index e3f2750a7d81c2ce9e3a958d7313edfed38aa7a6..428b2349cf3604d917fe0d353d35d53650c641dd 100644 --- a/GUI/View/Main/MainWindow.cpp +++ b/GUI/View/Main/MainWindow.cpp @@ -115,8 +115,8 @@ void MainWindow::setCurrentView(int viewId) void MainWindow::raiseView(int viewId) { - if (gProjectDocument.has_value() && viewId != GUI::ID::ViewId::Projects) - gProjectDocument.value()->setViewId(viewId); + if (gDoc && viewId != GUI::ID::ViewId::Projects) + gDoc->setViewId(viewId); if (m_viewsStack->currentIndex() != viewId) { m_viewsStack->setCurrentIndex(viewId); emit currentViewChanged(GUI::ID::ViewId(viewId)); @@ -125,17 +125,15 @@ void MainWindow::raiseView(int viewId) void MainWindow::updateTitle() { - const auto& doc = gProjectDocument; QString location = "not saved yet"; - if (doc.has_value() && doc.value()->hasValidNameAndPath()) - location = - GUI::Path::withTildeHomePath(QDir::toNativeSeparators(doc.value()->projectFullPath())); - if (!doc.has_value()) + if (gDoc && gDoc->hasValidNameAndPath()) + location = GUI::Path::withTildeHomePath(QDir::toNativeSeparators(gDoc->projectFullPath())); + if (!gDoc) setWindowTitle("BornAgain"); - else if (doc.value()->isModified()) - setWindowTitle("BornAgain - *" + doc.value()->projectName() + " [" + location + "]"); + else if (gDoc->isModified()) + setWindowTitle("BornAgain - *" + gDoc->projectName() + " [" + location + "]"); else - setWindowTitle("BornAgain - " + doc.value()->projectName() + " [" + location + "]"); + setWindowTitle("BornAgain - " + gDoc->projectName() + " [" + location + "]"); } void MainWindow::onFocusRequest(int index) @@ -162,7 +160,7 @@ void MainWindow::onRunSimulationShortcut() void MainWindow::closeEvent(QCloseEvent* event) { - if (gProjectDocument.has_value() && gProjectDocument.value()->jobModel()->hasUnfinishedJobs()) { + if (gDoc && gDoc->jobModel()->hasUnfinishedJobs()) { QMessageBox::warning(this, "Cannot quit the application.", "Cannot quit the application while jobs are running.\n" "Cancel running jobs or wait until they are completed."); @@ -226,13 +224,12 @@ void MainWindow::initViews() m_projectsView = new ProjectsView(this); resetView(GUI::ID::ViewId::Projects, m_projectsView); - if (gProjectDocument.has_value()) { - auto* doc = gProjectDocument.value(); - m_instrumentView = new InstrumentView(this, doc); - m_sampleView = new SampleView(this, doc); - m_importDataView = new DataView(this, doc); - m_simulationView = new SimulationView(this, doc); - m_jobView = new JobView(progressBar(), doc); + if (gDoc) { + m_instrumentView = new InstrumentView(this, gDoc.get()); + m_sampleView = new SampleView(this, gDoc.get()); + m_importDataView = new DataView(this, gDoc.get()); + m_simulationView = new SimulationView(this, gDoc.get()); + m_jobView = new JobView(progressBar(), gDoc.get()); resetView(GUI::ID::ViewId::Instrument, m_instrumentView); @@ -248,8 +245,8 @@ void MainWindow::initViews() m_jobView->onSelectionChanged(); - if (gProjectDocument.has_value()) - setCurrentView(gProjectDocument.value()->viewId()); + if (gDoc) + setCurrentView(gDoc->viewId()); else raiseView(GUI::ID::ViewId::Projects); } @@ -339,7 +336,7 @@ void MainWindow::onDocumentOpenedOrClosed(bool open) initViews(); updateTitle(); if (open) { - if (gProjectDocument.has_value()) { + if (gDoc) { for (auto* button : m_viewSelectionButtons->buttons()) button->setEnabled(true); auto* filler = @@ -347,7 +344,7 @@ void MainWindow::onDocumentOpenedOrClosed(bool open) if (filler) if (auto* fillerBtn = dynamic_cast<QToolButton*>(filler->widget()); fillerBtn) fillerBtn->setEnabled(true); - setCurrentView(gProjectDocument.value()->viewId()); + setCurrentView(gDoc->viewId()); } else setCurrentView(GUI::ID::ViewId::Instrument); } diff --git a/GUI/View/Manager/ProjectManager.cpp b/GUI/View/Manager/ProjectManager.cpp index f86d843a72574ea67c525f18bc8d2c623798b153..1ca3b03fe5fb6eb979087eb73dd8d5ec60e3dc59 100644 --- a/GUI/View/Manager/ProjectManager.cpp +++ b/GUI/View/Manager/ProjectManager.cpp @@ -48,25 +48,19 @@ ProjectManager* ProjectManager::s_instance = nullptr; ProjectManager::ProjectManager(QObject* parent) : QObject(parent) { - if (s_instance != nullptr) - throw std::runtime_error("ProjectManager::ProjectManager -> Error. Attempt to create " - "ProjectManager twice."); - + ASSERT(!s_instance); // it's a singleton s_instance = this; } ProjectManager::~ProjectManager() { s_instance = nullptr; - gProjectDocument.reset(); + gDoc.release(); } ProjectManager* ProjectManager::instance() { - if (!s_instance) - throw std::runtime_error("ProjectManager::instance -> Error. Attempt to access " - "non existing ProjectManager."); - + ASSERT(s_instance); return s_instance; } @@ -130,8 +124,8 @@ QStringList ProjectManager::recentProjects() QString ProjectManager::projectDir() const { - if (gProjectDocument.has_value()) - return gProjectDocument.value()->validProjectDir(); + if (gDoc) + return gDoc->validProjectDir(); return ""; } @@ -140,8 +134,8 @@ QString ProjectManager::projectDir() const QString ProjectManager::userImportDir() const { if (m_importDirectory.isEmpty()) { - if (gProjectDocument.has_value()) - return gProjectDocument.value()->userExportDir(); + if (gDoc) + return gDoc->userExportDir(); return ""; } return m_importDirectory; @@ -206,7 +200,7 @@ ProjectDocument* ProjectManager::newProject() return nullptr; createNewProject(); emit documentOpenedOrClosed(true); - return gProjectDocument.value(); + return gDoc.get(); } //! Processes close current project request. Call save/discard/cancel dialog, if necessary. @@ -214,10 +208,10 @@ ProjectDocument* ProjectManager::newProject() bool ProjectManager::closeCurrentProject() { - if (!gProjectDocument.has_value()) + if (!gDoc) return true; - if (gProjectDocument.value()->isModified()) { + if (gDoc->isModified()) { QMessageBox msgBox; msgBox.setText("The project has been modified."); msgBox.setInformativeText("Do you want to save your changes?"); @@ -248,8 +242,8 @@ bool ProjectManager::closeCurrentProject() bool ProjectManager::saveProject(QString projectPullPath) { if (projectPullPath.isEmpty()) { - if (gProjectDocument.value()->hasValidNameAndPath()) - projectPullPath = gProjectDocument.value()->projectFullPath(); + if (gDoc->hasValidNameAndPath()) + projectPullPath = gDoc->projectFullPath(); else projectPullPath = acquireProjectPullPath(); } @@ -257,11 +251,11 @@ bool ProjectManager::saveProject(QString projectPullPath) if (projectPullPath.isEmpty()) return false; - gProjectDocument.value()->setProjectName(GUI::Project::Util::projectName(projectPullPath)); - gProjectDocument.value()->setProjectDir(GUI::Project::Util::projectDir(projectPullPath)); + gDoc->setProjectName(GUI::Project::Util::projectName(projectPullPath)); + gDoc->setProjectDir(GUI::Project::Util::projectDir(projectPullPath)); try { - gProjectDocument.value()->saveProjectFileWithData(projectPullPath); + gDoc->saveProjectFileWithData(projectPullPath); } catch (const std::exception& ex) { QString message = QString("Failed to save project under '%1'. \n\n").arg(projectPullPath); message.append("Exception was thrown.\n\n"); @@ -317,7 +311,7 @@ void ProjectManager::openProject(QString projectPullPath) riseProjectLoadProblemDialog(messageService); addToRecentProjects(); } - if (gProjectDocument.has_value()) + if (gDoc) emit documentOpenedOrClosed(true); } @@ -325,17 +319,17 @@ void ProjectManager::openProject(QString projectPullPath) void ProjectManager::createNewProject() { - if (gProjectDocument.has_value()) + if (gDoc) throw std::runtime_error("ProjectManager::createNewProject -> Project already exists"); - gProjectDocument = new ProjectDocument(); + gDoc = std::make_unique<ProjectDocument>(); if (m_autosave) - m_autosave->setDocument(gProjectDocument.value()); + m_autosave->setDocument(gDoc.get()); - gProjectDocument.value()->setProjectName("Untitled"); + gDoc->setProjectName("Untitled"); - connect(gProjectDocument.value(), &ProjectDocument::modifiedStateChanged, this, + connect(gDoc.get(), &ProjectDocument::modifiedStateChanged, this, &ProjectManager::documentModified); } @@ -344,7 +338,7 @@ void ProjectManager::deleteCurrentProject() emit aboutToCloseDocument(); if (m_autosave) m_autosave->removeAutosaveDir(); - gProjectDocument.reset(); + gDoc.release(); } //! Load project data from file name. If autosave info exists, opens dialog for project restore. @@ -359,14 +353,12 @@ ProjectDocument::ReadResult ProjectManager::loadProject(const QString& fullPathA if (qApp) QApplication::setOverrideCursor(Qt::WaitCursor); if (useAutosave && restoreProjectDialog(fullPathAndName, autosaveFullPath)) { - readResult = - gProjectDocument.value()->loadProjectFileWithData(autosaveFullPath, messageService); - gProjectDocument.value()->setProjectFullPath(fullPathAndName); + readResult = gDoc->loadProjectFileWithData(autosaveFullPath, messageService); + gDoc->setProjectFullPath(fullPathAndName); // restored project should be marked by '*' - gProjectDocument.value()->setModified(); + gDoc->setModified(); } else { - readResult = - gProjectDocument.value()->loadProjectFileWithData(fullPathAndName, messageService); + readResult = gDoc->loadProjectFileWithData(fullPathAndName, messageService); } if (qApp) QApplication::restoreOverrideCursor(); @@ -391,7 +383,7 @@ QString ProjectManager::acquireProjectPullPath() void ProjectManager::addToRecentProjects() { - QString fname = gProjectDocument.value()->projectFullPath(); + QString fname = gDoc->projectFullPath(); m_recentProjects.removeAll(fname); m_recentProjects.prepend(fname); while (m_recentProjects.size() > GUI::Style::MAX_RECENT_PROJECTS) @@ -421,8 +413,7 @@ QString ProjectManager::untitledProjectName() void ProjectManager::riseProjectLoadFailedDialog(const MessageService& messageService) { - QString message = QString("Failed to load the project '%1' \n\n") - .arg(gProjectDocument.value()->projectFullPath()); + QString message = QString("Failed to load the project '%1' \n\n").arg(gDoc->projectFullPath()); for (const auto& details : messageService.errors()) message.append(details + "\n"); @@ -432,10 +423,9 @@ void ProjectManager::riseProjectLoadFailedDialog(const MessageService& messageSe void ProjectManager::riseProjectLoadProblemDialog(const MessageService& messageService) { - ASSERT(gProjectDocument.has_value()); - auto* problemDialog = - new ProjectLoadProblemDialog(GUI::Global::mainWindow, messageService.warnings(true), - gProjectDocument.value()->documentVersion()); + ASSERT(gDoc); + auto* problemDialog = new ProjectLoadProblemDialog( + GUI::Global::mainWindow, messageService.warnings(true), gDoc->documentVersion()); problemDialog->show(); problemDialog->raise(); diff --git a/GUI/View/ParEdit/FitParameterDelegate.cpp b/GUI/View/ParEdit/FitParameterDelegate.cpp index ce6a467e96afa634c8751b51420564aa725db9a6..f800098a87be98c971af00fd4f499192d35c7cb0 100644 --- a/GUI/View/ParEdit/FitParameterDelegate.cpp +++ b/GUI/View/ParEdit/FitParameterDelegate.cpp @@ -84,8 +84,7 @@ QWidget* createEditor(QObject* item, QWidget* parent) if (parent && result) { result->setParent(parent); - QObject::connect(result, &CustomEditor::dataChanged, - [=] { gProjectDocument.value()->setModified(); }); + QObject::connect(result, &CustomEditor::dataChanged, [=] { gDoc->setModified(); }); } return result; diff --git a/GUI/View/ParEdit/ParameterTuningDelegate.cpp b/GUI/View/ParEdit/ParameterTuningDelegate.cpp index 523799c41e1be73017f9464024a1cb11092a1d9e..19822a5bdd74cea99a92afdd0d62a48d27b0e4cc 100644 --- a/GUI/View/ParEdit/ParameterTuningDelegate.cpp +++ b/GUI/View/ParEdit/ParameterTuningDelegate.cpp @@ -242,7 +242,7 @@ void ParameterTuningDelegate::emitSignals(double value) m_currentItem->propagateValueToLink(value); emit currentLinkChanged(m_currentItem); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void ParameterTuningDelegate::setSliderRangeFactor(int value) diff --git a/GUI/View/Plotter/ColorMap.cpp b/GUI/View/Plotter/ColorMap.cpp index c1e6b2ef55a75dc298993da21feda879b90da394..ad9e1256b400d8f657e3670d254c4efb1c520314 100644 --- a/GUI/View/Plotter/ColorMap.cpp +++ b/GUI/View/Plotter/ColorMap.cpp @@ -203,7 +203,7 @@ void ColorMap::onDataRangeChanged(QCPRange range) ii->setZrange(range.lower, range.upper); ii->zAxisItem()->adjustLogRangeOrders(); emit ii->updateOtherPlots(ii); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Propagate xmin, xmax back to Data2DItem @@ -212,7 +212,7 @@ void ColorMap::onXaxisRangeChanged(QCPRange range) Data2DItem* ii = data2DItem(); ii->setXrange(range.lower, range.upper); emit ii->updateOtherPlots(ii); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Propagate ymin, ymax back to Data2DItem @@ -221,7 +221,7 @@ void ColorMap::onYaxisRangeChanged(QCPRange range) Data2DItem* ii = data2DItem(); ii->setYrange(range.lower, range.upper); emit ii->updateOtherPlots(ii); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Schedule replot for later execution by onTimeReplot() slot. diff --git a/GUI/View/Plotter/SpecularPlot.cpp b/GUI/View/Plotter/SpecularPlot.cpp index c902444a52464dfba454b8ecee72e53c44135b9a..603fb2e53e9e3da443ab324fad18a6d545ca9404 100644 --- a/GUI/View/Plotter/SpecularPlot.cpp +++ b/GUI/View/Plotter/SpecularPlot.cpp @@ -108,7 +108,7 @@ void SpecularPlot::onXaxisRangeChanged(QCPRange range) const { for (auto* item : data1DItems()) item->setXrange(range.lower, range.upper); - gProjectDocument.value()->setModified(); + gDoc->setModified(); if (currentData1DItem()) emit currentData1DItem()->updateOtherPlots(currentData1DItem()); } @@ -117,7 +117,7 @@ void SpecularPlot::onYaxisRangeChanged(QCPRange range) const { for (auto* item : data1DItems()) item->setYrange(range.lower, range.upper); - gProjectDocument.value()->setModified(); + gDoc->setModified(); if (currentData1DItem()) emit currentData1DItem()->updateOtherPlots(currentData1DItem()); } diff --git a/GUI/View/Project/SimulationView.cpp b/GUI/View/Project/SimulationView.cpp index 343406dcb19a25282f1e7bb7b89ccd90b785df1e..ddcd94e66e398ecd63a3a610ad61d1b241c24850 100644 --- a/GUI/View/Project/SimulationView.cpp +++ b/GUI/View/Project/SimulationView.cpp @@ -229,7 +229,7 @@ void SimulationView::simulate() JobItem* jobItem = jobModel->addJobItem(selectedSampleItem(), selectedInstrumentItem(), selectedDatafileItem(), *optionsItem()); jobModel->runJob(jobItem); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void SimulationView::exportPythonScript() diff --git a/GUI/View/Realspace/RealspaceWidget.cpp b/GUI/View/Realspace/RealspaceWidget.cpp index 1f9631cacd4fdec4aaecdb4da6861f7c09809376..b42f9f306baf33c20cc4fda0e0a9f0462565f429 100644 --- a/GUI/View/Realspace/RealspaceWidget.cpp +++ b/GUI/View/Realspace/RealspaceWidget.cpp @@ -78,8 +78,8 @@ void RealspaceWidget::showEvent(QShowEvent*) void RealspaceWidget::savePicture() { - ASSERT(gProjectDocument.has_value()); - QString dirname = gProjectDocument.value()->userExportDir(); + ASSERT(gDoc); + QString dirname = gDoc->userExportDir(); QString defaultExtension = ".png"; QString selectedFilter("*" + defaultExtension); QString defaultName = dirname + "/untitled"; diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp index b0a39069a58dd606d7400d6574e0da694e872d45..1f2a1c148984db22fd8240e9c80b2534795204d8 100644 --- a/GUI/View/Scene/MaskGraphicsScene.cpp +++ b/GUI/View/Scene/MaskGraphicsScene.cpp @@ -430,7 +430,7 @@ IOverlay* MaskGraphicsScene::registerOverlay(OverlayItem* item) if (auto* line_item = dynamic_cast<LineItem*>(maskObject)) emit lineItemMoved(line_item); // -> update projections plot if (m_mouse_is_pressed) - gProjectDocument.value()->setModified(); // manual mask movement + gDoc->setModified(); // manual mask movement }); connect(item, &OverlayItem::maskToBeDestroyed, [this](OverlayItem* maskObject) { if (const auto* line_item = dynamic_cast<const LineItem*>(maskObject)) @@ -473,7 +473,7 @@ void MaskGraphicsScene::setDrawingInProgress(bool value) { m_drawing_in_progress = value; if (value) - gProjectDocument.value()->setModified(); // manual mask creation + gDoc->setModified(); // manual mask creation else m_active_mask = nullptr; } diff --git a/GUI/View/Setup/MaskPanel.cpp b/GUI/View/Setup/MaskPanel.cpp index 41c8c9ad012845c145aa8ca9c847198d17ce2ec6..d5cb62bfdebe975c4680420b718c978fc9bedb4b 100644 --- a/GUI/View/Setup/MaskPanel.cpp +++ b/GUI/View/Setup/MaskPanel.cpp @@ -31,7 +31,7 @@ void addSpinBox(MaskItem* mask, QFormLayout* layout, DoubleProperty& property) auto* spinbox = new DoubleSpinBox(&property); layout->addRow(property.label() + ":", spinbox); QObject::connect(spinbox, &DoubleSpinBox::valueChanged, [mask](double) { - gProjectDocument.value()->setModified(); + gDoc->setModified(); ASSERT(mask); emit mask->maskGeometryChanged(); }); @@ -172,7 +172,7 @@ void MaskPanel::setCurrentMaskItem(MaskItem* maskItem) auto* edit = new QLineEdit(maskItem->maskName(), m_editor_layout->parentWidget()); connect(edit, &QLineEdit::textEdited, [maskItem](const QString& t) { maskItem->setMaskName(t); }); - connect(edit, &QLineEdit::editingFinished, [] { gProjectDocument.value()->setModified(); }); + connect(edit, &QLineEdit::editingFinished, [] { gDoc->setModified(); }); m_editor_layout->addRow("Name:", edit); } @@ -202,7 +202,7 @@ void MaskPanel::addMaskCheckBox(const QString& title, std::function<bool()> gett setter(check_box->isChecked()); ASSERT(mask); emit mask->maskGeometryChanged(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }); connect(m_currentMaskItem, &MaskItem::maskVisibilityChanged, [check_box, getter] { diff --git a/GUI/View/Setup/ProjectionActions.cpp b/GUI/View/Setup/ProjectionActions.cpp index a27e1b0d1a672cf77ea1ae980ae3cb7620a0e115..8f87b54922cbcbd9878c1ec9cecc692369b111ae 100644 --- a/GUI/View/Setup/ProjectionActions.cpp +++ b/GUI/View/Setup/ProjectionActions.cpp @@ -75,7 +75,7 @@ void ProjectionActions::onDeleteAction() m_mask_list_model->removeMaskAt(indexes.back().row()); indexes = selectionModel->selectedIndexes(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); } //! Performs saving of projections in ascii file diff --git a/GUI/View/Setup/ProjectionsSaver.cpp b/GUI/View/Setup/ProjectionsSaver.cpp index 571c97a2d6924d7754703a2185e5a33a9d9e9c36..b79071351b961c90353b90f12a040a13f24dded6 100644 --- a/GUI/View/Setup/ProjectionsSaver.cpp +++ b/GUI/View/Setup/ProjectionsSaver.cpp @@ -65,9 +65,9 @@ ProjectionsSaver::~ProjectionsSaver() = default; void ProjectionsSaver::saveProjections(QWidget* parent, Data2DItem* data2DItem) { ASSERT(data2DItem); - ASSERT(gProjectDocument.has_value()); + ASSERT(gDoc); - QString defaultName = gProjectDocument.value()->userExportDir() + "/untitled.txt"; + QString defaultName = gDoc->userExportDir() + "/untitled.txt"; QString fname = QFileDialog::getSaveFileName( parent, "Save projections data", defaultName, "", nullptr, appSettings->useNativeFileDialog() ? QFileDialog::Options() diff --git a/GUI/View/Setup/Scale1DEditor.cpp b/GUI/View/Setup/Scale1DEditor.cpp index 1208d6c66db1f5c6092abb6297bab37a6ca9a276..a8a6774337e691ebabadc8f652f06af73d74b21a 100644 --- a/GUI/View/Setup/Scale1DEditor.cpp +++ b/GUI/View/Setup/Scale1DEditor.cpp @@ -52,7 +52,7 @@ void Scale1DEditor::createPanelElements() for (auto item : allData1DItems()) item->setCurrentAxesUnits(newVal); emit axesRangeResetRequested(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); */ @@ -68,7 +68,7 @@ void Scale1DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData1DItems()) item->axItemX()->setMin(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -77,7 +77,7 @@ void Scale1DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData1DItems()) item->axItemX()->setMax(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -96,7 +96,7 @@ void Scale1DEditor::createPanelElements() item->axItemY()->setLogRangeOrders(newValue); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Dynamic range to display values", RealLimits::positive()); @@ -108,7 +108,7 @@ void Scale1DEditor::createPanelElements() item->axItemY()->adjustLogRangeOrders(); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -120,7 +120,7 @@ void Scale1DEditor::createPanelElements() item->axItemY()->adjustLogRangeOrders(); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -130,7 +130,7 @@ void Scale1DEditor::createPanelElements() logRangeSpinBox->setEnabled(b); for (auto* item : allData1DItems()) item->axItemY()->setLogScale(b); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); diff --git a/GUI/View/Setup/Scale2DEditor.cpp b/GUI/View/Setup/Scale2DEditor.cpp index 105a0032e6cfbf698cb329312eadf3e1ab3d92cb..88116172dd331adf70ddc2f48e79d41da8a42122 100644 --- a/GUI/View/Setup/Scale2DEditor.cpp +++ b/GUI/View/Setup/Scale2DEditor.cpp @@ -55,7 +55,7 @@ void Scale2DEditor::createPanelElements() for (auto item : allData2DItems()) item->setCurrentAxesUnits(newVal); emit axesRangeResetRequested(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); */ @@ -66,7 +66,7 @@ void Scale2DEditor::createPanelElements() [this](const QString& newVal) { for (auto* item : allData2DItems()) item->setCurrentGradient(newVal); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, false, &m_updaters)); @@ -75,7 +75,7 @@ void Scale2DEditor::createPanelElements() [this](bool b) { for (auto* item : allData2DItems()) item->setInterpolated(b); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -90,7 +90,7 @@ void Scale2DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData2DItems()) item->axItemX()->setMin(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -99,7 +99,7 @@ void Scale2DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData2DItems()) item->axItemX()->setMax(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -116,7 +116,7 @@ void Scale2DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData2DItems()) item->axItemY()->setMin(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -125,7 +125,7 @@ void Scale2DEditor::createPanelElements() [this](double newValue) { for (auto* item : allData2DItems()) item->axItemY()->setMax(newValue); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -144,7 +144,7 @@ void Scale2DEditor::createPanelElements() item->zAxisItem()->setLogRangeOrders(newValue); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters, "Dynamic range to display values", RealLimits::positive()); @@ -156,7 +156,7 @@ void Scale2DEditor::createPanelElements() item->zAxisItem()->adjustLogRangeOrders(); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -168,7 +168,7 @@ void Scale2DEditor::createPanelElements() item->zAxisItem()->adjustLogRangeOrders(); updateUIValues(); } - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -178,7 +178,7 @@ void Scale2DEditor::createPanelElements() logRangeSpinBox->setEnabled(b); for (auto* item : allData2DItems()) item->zAxisItem()->setLogScale(b); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); @@ -189,7 +189,7 @@ void Scale2DEditor::createPanelElements() [this](bool b) { for (auto* item : allData2DItems()) item->zAxisItem()->setVisible(b); - gProjectDocument.value()->setModified(); + gDoc->setModified(); }, &m_updaters)); diff --git a/GUI/View/Tuning/FitParameterWidget.cpp b/GUI/View/Tuning/FitParameterWidget.cpp index 817b91006dc9be2adcb4cbea66b92f6cb7a8281a..80a36e48ecbe64fa4e7490c0b069e3177316ac62 100644 --- a/GUI/View/Tuning/FitParameterWidget.cpp +++ b/GUI/View/Tuning/FitParameterWidget.cpp @@ -259,8 +259,8 @@ void FitParameterWidget::init_fit_model() connect(m_fitParameterModel.get(), &FitParameterModel::modelReset, this, &FitParameterWidget::onFitParameterModelChange, Qt::UniqueConnection); - connect(fitContainerItem(), &FitParameterContainerItem::fitItemChanged, - gProjectDocument.value(), &ProjectDocument::setModified, Qt::UniqueConnection); + connect(fitContainerItem(), &FitParameterContainerItem::fitItemChanged, gDoc.get(), + &ProjectDocument::setModified, Qt::UniqueConnection); onFitParameterModelChange(); connectFitParametersSelection(true); diff --git a/GUI/View/Tuning/ParameterTuningWidget.cpp b/GUI/View/Tuning/ParameterTuningWidget.cpp index 705e67ceca31b60bace1b61d00bec9956f2657bd..3704538bf6ba97c53446499b64eb4faeaf5fd87d 100644 --- a/GUI/View/Tuning/ParameterTuningWidget.cpp +++ b/GUI/View/Tuning/ParameterTuningWidget.cpp @@ -222,7 +222,7 @@ void ParameterTuningWidget::restoreModelsOfCurrentJobItem(int index) m_jobModel->restore(m_job_item, index); m_jobModel->runJob(m_job_item); updateView(); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void ParameterTuningWidget::makeSelected(ParameterItem* item) diff --git a/GUI/View/Tuning/SliderSettingsWidget.cpp b/GUI/View/Tuning/SliderSettingsWidget.cpp index 2938a42e696df0dc31773a7a7064fd09db01cbf9..66c08c84ff068d6ba7e30b056cae2acd0839d073 100644 --- a/GUI/View/Tuning/SliderSettingsWidget.cpp +++ b/GUI/View/Tuning/SliderSettingsWidget.cpp @@ -87,7 +87,7 @@ void SliderSettingsWidget::rangeChanged() m_job_item->setSliderRange(1000); emit sliderRangeFactorChanged(m_job_item->sliderRange()); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void SliderSettingsWidget::onLockZChanged(int state) @@ -96,7 +96,7 @@ void SliderSettingsWidget::onLockZChanged(int state) emit lockzChanged(false); else if (state == Qt::Checked) emit lockzChanged(true); - gProjectDocument.value()->setModified(); + gDoc->setModified(); } void SliderSettingsWidget::initSlider()