From 9358e2753cf4a90f863f5c5ae1f28cc6a7457bc5 Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Thu, 11 Nov 2021 10:34:21 +0100 Subject: [PATCH] do not split global app settings in two classes --- App/main.cpp | 8 +- GUI/Application/ApplicationSettings.cpp | 77 +++++++++++++++ GUI/Application/ApplicationSettings.h | 28 +++++- GUI/Application/GlobalSettings.cpp | 97 ------------------- GUI/Application/GlobalSettings.h | 52 ---------- GUI/Model/Instrument/InstrumentsTreeModel.cpp | 6 +- GUI/View/Import/RealDataSelectorWidget.cpp | 12 +-- GUI/View/Import/RealDataTreeModel.cpp | 6 +- .../Instrument/InstrumentLibraryEditor.cpp | 12 +-- GUI/View/Intensity/SavePlotAssistant.cpp | 6 +- GUI/View/Main/ActionManager.cpp | 16 +-- GUI/View/Main/MainWindow.cpp | 6 +- GUI/View/Main/NewProjectDialog.cpp | 4 +- GUI/View/Main/ProjectManager.cpp | 17 ++-- GUI/View/Main/PyImportAssistant.cpp | 8 +- .../MaterialEditor/MaterialEditorDialog.cpp | 8 +- .../Projection/SaveProjectionsAssistant.cpp | 6 +- GUI/View/Realspace/RealSpaceCanvas.cpp | 6 +- .../LayerOrientedSampleEditor.cpp | 4 +- GUI/View/SampleDesigner/SampleListView.cpp | 8 +- GUI/View/Script/PythonScriptWidget.cpp | 10 +- GUI/View/Tool/GroupBoxCollapser.cpp | 4 +- GUI/View/Toplevel/ProjectSettingsView.cpp | 9 +- 23 files changed, 181 insertions(+), 229 deletions(-) delete mode 100644 GUI/Application/GlobalSettings.cpp delete mode 100644 GUI/Application/GlobalSettings.h diff --git a/App/main.cpp b/App/main.cpp index 4adbe269665..59431d8c856 100644 --- a/App/main.cpp +++ b/App/main.cpp @@ -14,7 +14,7 @@ #include "App/AppOptions.h" #include "App/MessageHandler.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/State/SessionData.h" #include "GUI/Util/OSInfo.h" #include "GUI/Util/Path.h" @@ -49,7 +49,7 @@ int main(int argc, char* argv[]) if (!GUI::Util::OS::HostOsInfo::isMacHost()) QApplication::setWindowIcon(QIcon(":/images/BornAgain.ico")); - GlobalSettings globalSettings; + ApplicationSettings applicationSettings; SessionData GSession; int ret; @@ -60,8 +60,8 @@ int main(int argc, char* argv[]) register1DDataLoaders(); - auto style = globalSettings.settings().styleToUse(); - globalSettings.loadStyle(style); + auto style = applicationSettings.styleToUse(); + applicationSettings.loadStyle(style); QString dir = SessionData::appDataFolder(); if (!QDir().exists(dir)) diff --git a/GUI/Application/ApplicationSettings.cpp b/GUI/Application/ApplicationSettings.cpp index 098638b63d0..c16b1023313 100644 --- a/GUI/Application/ApplicationSettings.cpp +++ b/GUI/Application/ApplicationSettings.cpp @@ -14,7 +14,10 @@ #include "GUI/Application/ApplicationSettings.h" #include "Base/Util/Assert.h" +#include <QApplication> +#include <QFile> #include <QSettings> +#include <QStandardPaths> #include <QWidget> namespace { @@ -28,6 +31,13 @@ const QString S_SINGLE_SAMPLE_MODE = "SingleSampleMode"; const QString S_DEFAULT_UNIT_IS_ANGSTROM = "DefaultUnitIsAngstrom"; } // namespace +ApplicationSettings* appSettings; //!< global pointer to _the_ instance + +ApplicationSettings::ApplicationSettings() : m_currentStyle(ApplicationSettings::Style::native) +{ + appSettings = this; +} + bool ApplicationSettings::useNativeFileDialog() const { #ifdef _WIN32 @@ -116,3 +126,70 @@ void ApplicationSettings::loadWindowSizeAndPos(QWidget* w) if (settings.contains(S_POS + "/" + w->objectName())) w->move(settings.value(S_POS + "/" + w->objectName()).toPoint()); } + +void ApplicationSettings::loadStyle(ApplicationSettings::Style style) +{ + QString stylesheet; + + switch (style) { + case ApplicationSettings::Style::light: { + QFile base(":/styles/Base.stylesheet"); + base.open(QFile::ReadOnly); + QFile light(":/styles/Light.stylesheet"); + light.open(QFile::ReadOnly); + stylesheet = base.readAll() + light.readAll(); + break; + } + case ApplicationSettings::Style::dark: { + QFile base(":/styles/Base.stylesheet"); + base.open(QFile::ReadOnly); + QFile dark(":/styles/Dark.stylesheet"); + dark.open(QFile::ReadOnly); + stylesheet = base.readAll() + dark.readAll(); + break; + } + default: { + QFile native(":/styles/Native.stylesheet"); + native.open(QFile::ReadOnly); + stylesheet = native.readAll(); + break; + } + } + + qApp->setStyleSheet(stylesheet); + m_currentStyle = style; + + // -- init palette for later usage; could be improved by parsing the stylesheet + switch (m_currentStyle) { + case ApplicationSettings::Style::light: { + m_styleSheetPalette.headlineText = QColor(48, 113, 145); + m_styleSheetPalette.headlineBackground = QColor(222, 232, 237); + break; + } + case ApplicationSettings::Style::dark: { + m_styleSheetPalette.headlineText = QColor(213, 220, 223); + m_styleSheetPalette.headlineBackground = QColor(29, 39, 44); + break; + } + default: { + m_styleSheetPalette.headlineText = Qt::black; + m_styleSheetPalette.headlineBackground = QColor(250, 250, 250); + break; + } + } +} + +ApplicationSettings::Style ApplicationSettings::currentStyle() +{ + return m_currentStyle; +} + +const ApplicationSettings::Palette& ApplicationSettings::styleSheetPalette() const +{ + return m_styleSheetPalette; +} + +QString ApplicationSettings::appDataFolder() const +{ + return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); +} diff --git a/GUI/Application/ApplicationSettings.h b/GUI/Application/ApplicationSettings.h index d224b1f199c..1c0671e7217 100644 --- a/GUI/Application/ApplicationSettings.h +++ b/GUI/Application/ApplicationSettings.h @@ -15,17 +15,21 @@ #ifndef BORNAGAIN_GUI_APPLICATION_APPLICATIONSETTINGS_H #define BORNAGAIN_GUI_APPLICATION_APPLICATIONSETTINGS_H +#include <QColor> + class QWidget; class QVariant; //! Application wide settings. +//! //! Contains settings which the user can change. Also //! contains settings which may be user editable in the future. - class ApplicationSettings { public: enum class Style { native, light, dark }; + ApplicationSettings(); + bool useNativeFileDialog() const; bool createNewProjectOnStartup() const; void setCreateNewProjectOnStartup(bool b); @@ -46,6 +50,28 @@ public: void saveWindowSizeAndPos(const QWidget* w); void loadWindowSizeAndPos(QWidget* w); + + void loadStyle(ApplicationSettings::Style style); + ApplicationSettings::Style currentStyle(); + + struct Palette { + QColor headlineText; + QColor headlineBackground; + }; + + const Palette& styleSheetPalette() const; + + //! The folder where persistent application data shall be stored. + //! + //! E.g. in Windows this is the AppData/Roaming location. + //! Used e.g. for storing the instrument library. + QString appDataFolder() const; + +private: + ApplicationSettings::Style m_currentStyle; + Palette m_styleSheetPalette; }; +extern ApplicationSettings* appSettings; //!< global pointer to the single instance + #endif // BORNAGAIN_GUI_APPLICATION_APPLICATIONSETTINGS_H diff --git a/GUI/Application/GlobalSettings.cpp b/GUI/Application/GlobalSettings.cpp deleted file mode 100644 index 3bed0f180c7..00000000000 --- a/GUI/Application/GlobalSettings.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// ************************************************************************************************ -// -// BornAgain: simulate and fit reflection and scattering -// -//! @file GUI/Application/GlobalSettings.cpp -//! @brief Implements class GlobalSettings -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2021 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************************************ - -#include "GUI/Application/GlobalSettings.h" -#include <QApplication> -#include <QFile> -#include <QStandardPaths> - -GlobalSettings* globalSettings; //!< global pointer to _the_ instance - -GlobalSettings::GlobalSettings() : m_currentStyle(ApplicationSettings::Style::native) -{ - globalSettings = this; -} - -ApplicationSettings& GlobalSettings::settings() -{ - return m_settings; -} - -void GlobalSettings::loadStyle(ApplicationSettings::Style style) -{ - QString stylesheet; - - switch (style) { - case ApplicationSettings::Style::light: { - QFile base(":/styles/Base.stylesheet"); - base.open(QFile::ReadOnly); - QFile light(":/styles/Light.stylesheet"); - light.open(QFile::ReadOnly); - stylesheet = base.readAll() + light.readAll(); - break; - } - case ApplicationSettings::Style::dark: { - QFile base(":/styles/Base.stylesheet"); - base.open(QFile::ReadOnly); - QFile dark(":/styles/Dark.stylesheet"); - dark.open(QFile::ReadOnly); - stylesheet = base.readAll() + dark.readAll(); - break; - } - default: { - QFile native(":/styles/Native.stylesheet"); - native.open(QFile::ReadOnly); - stylesheet = native.readAll(); - break; - } - } - - qApp->setStyleSheet(stylesheet); - m_currentStyle = style; - - // -- init palette for later usage; could be improved by parsing the stylesheet - switch (m_currentStyle) { - case ApplicationSettings::Style::light: { - m_styleSheetPalette.headlineText = QColor(48, 113, 145); - m_styleSheetPalette.headlineBackground = QColor(222, 232, 237); - break; - } - case ApplicationSettings::Style::dark: { - m_styleSheetPalette.headlineText = QColor(213, 220, 223); - m_styleSheetPalette.headlineBackground = QColor(29, 39, 44); - break; - } - default: { - m_styleSheetPalette.headlineText = Qt::black; - m_styleSheetPalette.headlineBackground = QColor(250, 250, 250); - break; - } - } -} - -ApplicationSettings::Style GlobalSettings::currentStyle() -{ - return m_currentStyle; -} - -const GlobalSettings::Palette& GlobalSettings::styleSheetPalette() const -{ - return m_styleSheetPalette; -} - -QString GlobalSettings::appDataFolder() const -{ - return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); -} diff --git a/GUI/Application/GlobalSettings.h b/GUI/Application/GlobalSettings.h deleted file mode 100644 index c818ac69408..00000000000 --- a/GUI/Application/GlobalSettings.h +++ /dev/null @@ -1,52 +0,0 @@ -// ************************************************************************************************ -// -// BornAgain: simulate and fit reflection and scattering -// -//! @file GUI/Application/GlobalSettings.h -//! @brief Defines class GlobalSettings -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2021 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************************************ - -#ifndef BORNAGAIN_GUI_APPLICATION_GLOBALSETTINGS_H -#define BORNAGAIN_GUI_APPLICATION_GLOBALSETTINGS_H - -#include "GUI/Application/ApplicationSettings.h" -#include <QColor> - -//! Provides access to application wide stuff like settings. - -class GlobalSettings { -public: - GlobalSettings(); - - ApplicationSettings& settings(); - - void loadStyle(ApplicationSettings::Style style); - ApplicationSettings::Style currentStyle(); - - struct Palette { - QColor headlineText; - QColor headlineBackground; - }; - - const Palette& styleSheetPalette() const; - - //! The folder where persistent application data shall be stored. E.g. in Windows this is the - //! AppData/Roaming location. - //! Used e.g. for storing the instrument library. - QString appDataFolder() const; - -private: - ApplicationSettings m_settings; - ApplicationSettings::Style m_currentStyle; - Palette m_styleSheetPalette; -}; - -extern GlobalSettings* globalSettings; //!< global pointer to the single instance - -#endif // BORNAGAIN_GUI_APPLICATION_GLOBALSETTINGS_H diff --git a/GUI/Model/Instrument/InstrumentsTreeModel.cpp b/GUI/Model/Instrument/InstrumentsTreeModel.cpp index 7ba02804a7b..eadd50a476c 100644 --- a/GUI/Model/Instrument/InstrumentsTreeModel.cpp +++ b/GUI/Model/Instrument/InstrumentsTreeModel.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/Model/Instrument/InstrumentsTreeModel.h" -#include "GUI/Application/GlobalSettings.h" // globalSettings +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Instrument/InstrumentItems.h" #include "GUI/Model/Instrument/InstrumentModel.h" #include <QApplication> @@ -216,10 +216,10 @@ QVariant InstrumentsTreeModel::data(const QModelIndex& index, int role) const return QVariant(Qt::AlignLeft | Qt::AlignVCenter); case Qt::BackgroundRole: - return globalSettings->styleSheetPalette().headlineBackground; + return appSettings->styleSheetPalette().headlineBackground; case Qt::ForegroundRole: - return globalSettings->styleSheetPalette().headlineText; + return appSettings->styleSheetPalette().headlineText; default: return QVariant(); diff --git a/GUI/View/Import/RealDataSelectorWidget.cpp b/GUI/View/Import/RealDataSelectorWidget.cpp index 7ddf09cc59d..2820f52d0b9 100644 --- a/GUI/View/Import/RealDataSelectorWidget.cpp +++ b/GUI/View/Import/RealDataSelectorWidget.cpp @@ -14,7 +14,7 @@ #include "GUI/View/Import/RealDataSelectorWidget.h" #include "Device/Data/DataUtils.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Data/RealDataItem.h" #include "GUI/Model/Data/RealDataModel.h" #include "GUI/Model/IO/AbstractDataLoader1D.h" @@ -25,8 +25,8 @@ #include "GUI/View/Import/ImportDataUtils.h" #include "GUI/View/Import/RealDataPropertiesWidget.h" #include "GUI/View/Import/RealDataTreeModel.h" -#include "GUI/View/Main/ProjectManager.h" #include "GUI/View/Info/MessageBox.h" +#include "GUI/View/Main/ProjectManager.h" #include <QFileDialog> #include <QItemSelectionModel> #include <QLineEdit> @@ -233,8 +233,8 @@ void RealDataSelectorWidget::importData1D() const QStringList fileNames = QFileDialog::getOpenFileNames( Q_NULLPTR, "Open Intensity Files", dirname, filters, &selectedFilter, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); if (fileNames.isEmpty()) return; @@ -285,8 +285,8 @@ void RealDataSelectorWidget::importData2D() const QString dirname = ProjectManager::instance()->userImportDir(); const QStringList fileNames = QFileDialog::getOpenFileNames( Q_NULLPTR, "Open Intensity Files", dirname, filters, &selectedFilter, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); if (fileNames.isEmpty()) return; diff --git a/GUI/View/Import/RealDataTreeModel.cpp b/GUI/View/Import/RealDataTreeModel.cpp index a6e9a0fa4db..bdbbf76445a 100644 --- a/GUI/View/Import/RealDataTreeModel.cpp +++ b/GUI/View/Import/RealDataTreeModel.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/View/Import/RealDataTreeModel.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Data/RealDataItem.h" #include "GUI/Model/Data/RealDataModel.h" #include <QApplication> @@ -214,10 +214,10 @@ QVariant RealDataTreeModel::data(const QModelIndex& index, int role) const return QVariant(Qt::AlignLeft | Qt::AlignVCenter); case Qt::BackgroundRole: - return globalSettings->styleSheetPalette().headlineBackground; + return appSettings->styleSheetPalette().headlineBackground; case Qt::ForegroundRole: - return globalSettings->styleSheetPalette().headlineText; + return appSettings->styleSheetPalette().headlineText; default: return QVariant(); diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.cpp b/GUI/View/Instrument/InstrumentLibraryEditor.cpp index f880b0012fb..2e8dc3bb6c2 100644 --- a/GUI/View/Instrument/InstrumentLibraryEditor.cpp +++ b/GUI/View/Instrument/InstrumentLibraryEditor.cpp @@ -13,12 +13,12 @@ // ************************************************************************************************ #include "GUI/View/Instrument/InstrumentLibraryEditor.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Instrument/InstrumentItems.h" #include "GUI/Model/State/SessionData.h" -#include "GUI/View/Tool/ItemDelegateForHTML.h" #include "GUI/View/Common/ItemViewOverlayButtons.h" #include "GUI/View/Instrument/Detail/CreateDetails.h" +#include "GUI/View/Tool/ItemDelegateForHTML.h" #include "GUI/View/Tool/StyleUtils.h" #include "ui_InstrumentLibraryEditor.h" #include <QAction> @@ -61,12 +61,12 @@ InstrumentLibraryEditor::InstrumentLibraryEditor(QWidget* parent) // ensure a current item when widget is shown // setCurrentItem(m_treeModel->topMostItem()); GUI::Util::Style::setResizable(this); - globalSettings->settings().loadWindowSizeAndPos(this); + appSettings->loadWindowSizeAndPos(this); } InstrumentLibraryEditor::~InstrumentLibraryEditor() { - globalSettings->settings().saveWindowSizeAndPos(this); + appSettings->saveWindowSizeAndPos(this); } void InstrumentLibraryEditor::setGisasEnabled(bool b) @@ -214,13 +214,13 @@ void InstrumentLibraryEditor::editNameAndDescription(InstrumentItem* item) connect(buttonBox, &QDialogButtonBox::accepted, &dlg, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, &dlg, &QDialog::reject); - globalSettings->settings().loadWindowSizeAndPos(&dlg); + appSettings->loadWindowSizeAndPos(&dlg); if (dlg.exec() == QDialog::Accepted) { QModelIndex index = m_treeModel->indexForItem(item); m_treeModel->setData(index, nameEdit->text(), Qt::EditRole); m_treeModel->setData(index, descriptionEdit->toPlainText(), Qt::ToolTipRole); } - globalSettings->settings().saveWindowSizeAndPos(&dlg); + appSettings->saveWindowSizeAndPos(&dlg); } /*********************************************************************************************/ diff --git a/GUI/View/Intensity/SavePlotAssistant.cpp b/GUI/View/Intensity/SavePlotAssistant.cpp index a75beddcd44..b1b25bbfe60 100644 --- a/GUI/View/Intensity/SavePlotAssistant.cpp +++ b/GUI/View/Intensity/SavePlotAssistant.cpp @@ -15,7 +15,7 @@ #include "GUI/View/Intensity/SavePlotAssistant.h" #include "Base/Util/Assert.h" #include "Device/Histo/IntensityDataIOFactory.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/View/Intensity/ColorMap.h" #include <QFileDialog> #include <QMessageBox> @@ -134,8 +134,8 @@ void GUI::Plot::savePlot(const QString& dirname, QCustomPlot* plot, OutputData<d QString defaultName = dirname + "/untitled"; QString fileName = QFileDialog::getSaveFileName( 0, "Save Plot", defaultName, getFilterString(), &selectedFilter, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); QString nameToSave = composeFileName(fileName, selectedFilter); diff --git a/GUI/View/Main/ActionManager.cpp b/GUI/View/Main/ActionManager.cpp index 02b85fd2b3c..37ec27ff6c8 100644 --- a/GUI/View/Main/ActionManager.cpp +++ b/GUI/View/Main/ActionManager.cpp @@ -15,7 +15,7 @@ #include "GUI/View/Main/ActionManager.h" #include "Base/Util/Assert.h" #include "Base/Util/SysUtils.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/State/SessionData.h" #include "GUI/Util/OSInfo.h" #include "GUI/Util/Path.h" @@ -249,18 +249,18 @@ void ActionManager::onAboutToShowSettingsMenu() action = m_settingsMenu->addAction("&Create project on startup"); action->setCheckable(true); - action->setChecked(globalSettings->settings().createNewProjectOnStartup()); + action->setChecked(appSettings->createNewProjectOnStartup()); connect(action, &QAction::toggled, - [](bool b) { globalSettings->settings().setCreateNewProjectOnStartup(b); }); + [](bool b) { appSettings->setCreateNewProjectOnStartup(b); }); m_settingsMenu->addSeparator(); QActionGroup* unitActions = new QActionGroup(this); const auto addUnitAction = [=](const QString& text, bool isAngstrom) { auto action = m_settingsMenu->addAction( - text, [=]() { globalSettings->settings().setDefaultUnitIsAngstrom(isAngstrom); }); + text, [=]() { appSettings->setDefaultUnitIsAngstrom(isAngstrom); }); action->setCheckable(true); - action->setChecked(globalSettings->settings().defaultUnitIsAngstrom() == isAngstrom); + action->setChecked(appSettings->defaultUnitIsAngstrom() == isAngstrom); unitActions->addAction(action); }; @@ -272,11 +272,11 @@ void ActionManager::onAboutToShowSettingsMenu() QActionGroup* styleActions = new QActionGroup(this); const auto addStyleAction = [=](const QString& text, ApplicationSettings::Style style) { auto action = m_settingsMenu->addAction(text, [=]() { - globalSettings->settings().setStyleToUse(style); - globalSettings->loadStyle(style); + appSettings->setStyleToUse(style); + appSettings->loadStyle(style); }); action->setCheckable(true); - action->setChecked(globalSettings->currentStyle() == style); + action->setChecked(appSettings->currentStyle() == style); styleActions->addAction(action); }; diff --git a/GUI/View/Main/MainWindow.cpp b/GUI/View/Main/MainWindow.cpp index fca01eb47f6..f5883aa3d50 100644 --- a/GUI/View/Main/MainWindow.cpp +++ b/GUI/View/Main/MainWindow.cpp @@ -13,18 +13,18 @@ // ************************************************************************************************ #include "GUI/View/Main/MainWindow.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Job/JobModel.h" #include "GUI/Model/State/SessionData.h" #include "GUI/Util/OSInfo.h" #include "GUI/Util/Path.h" -#include "GUI/View/Tool/mainwindow_constants.h" #include "GUI/View/Import/ImportDataView.h" #include "GUI/View/Instrument/InstrumentView.h" #include "GUI/View/Job/JobView.h" #include "GUI/View/Main/ActionManager.h" #include "GUI/View/Main/ProjectManager.h" #include "GUI/View/SampleDesigner/SampleView.h" +#include "GUI/View/Tool/mainwindow_constants.h" #include "GUI/View/Toplevel/ProjectSettingsView.h" #include "GUI/View/Toplevel/SessionModelView.h" #include "GUI/View/Toplevel/SimulationView.h" @@ -111,7 +111,7 @@ MainWindow::MainWindow() updateTitle(); - if (globalSettings->settings().createNewProjectOnStartup()) + if (appSettings->createNewProjectOnStartup()) m_projectManager->newProject(); } diff --git a/GUI/View/Main/NewProjectDialog.cpp b/GUI/View/Main/NewProjectDialog.cpp index 36fd6ce695d..b782372d97c 100644 --- a/GUI/View/Main/NewProjectDialog.cpp +++ b/GUI/View/Main/NewProjectDialog.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/View/Main/NewProjectDialog.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/IO/ProjectUtils.h" #include "GUI/Model/Project/ProjectDocument.h" #include <QFileDialog> @@ -112,7 +112,7 @@ void NewProjectDialog::onBrowseDirectory() { QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly; - if (!globalSettings->settings().useNativeFileDialog()) + if (!appSettings->useNativeFileDialog()) options |= QFileDialog::DontUseNativeDialog; const QString dirname = diff --git a/GUI/View/Main/ProjectManager.cpp b/GUI/View/Main/ProjectManager.cpp index b4f041ac7f6..c6ac160fdd6 100644 --- a/GUI/View/Main/ProjectManager.cpp +++ b/GUI/View/Main/ProjectManager.cpp @@ -14,17 +14,17 @@ #include "GUI/View/Main/ProjectManager.h" #include "Base/Util/Assert.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/IO/ProjectUtils.h" #include "GUI/Model/State/SessionData.h" #include "GUI/Util/Error.h" #include "GUI/Util/MessageService.h" -#include "GUI/View/Tool/mainwindow_constants.h" +#include "GUI/View/Info/MessageBox.h" #include "GUI/View/Info/ProjectLoadProblemDialog.h" #include "GUI/View/Main/MainWindow.h" #include "GUI/View/Main/NewProjectDialog.h" #include "GUI/View/Main/SaveService.h" -#include "GUI/View/Info/MessageBox.h" +#include "GUI/View/Tool/mainwindow_constants.h" #include <QApplication> #include <QDateTime> #include <QFileDialog> @@ -309,8 +309,8 @@ void ProjectManager::openProject(QString fileName) fileName = QFileDialog::getOpenFileName( m_mainWindow, "Open project file", workingDirectory(), "BornAgain project Files (*.pro)", nullptr, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); if (fileName.isEmpty()) return; } @@ -345,12 +345,11 @@ void ProjectManager::createNewProject() gSessionData->projectDocument = new ProjectDocument(); const QVariant defFunctionalities = - globalSettings->settings().defaultFunctionalities(toVariant(ProjectDocument::All)); + appSettings->defaultFunctionalities(toVariant(ProjectDocument::All)); gSessionData->projectDocument->setFunctionalities(toFunctionalities(defFunctionalities)); gSessionData->projectDocument->setSingleInstrumentMode( - globalSettings->settings().defaultIsSingleInstrumentMode()); - gSessionData->projectDocument->setSingleSampleMode( - globalSettings->settings().defaultIsSingleSampleMode()); + appSettings->defaultIsSingleInstrumentMode()); + gSessionData->projectDocument->setSingleSampleMode(appSettings->defaultIsSingleSampleMode()); gSessionData->projectDocument->setProjectName("Untitled"); gSessionData->projectDocument->setModified(false); diff --git a/GUI/View/Main/PyImportAssistant.cpp b/GUI/View/Main/PyImportAssistant.cpp index b56de451281..5291f01e511 100644 --- a/GUI/View/Main/PyImportAssistant.cpp +++ b/GUI/View/Main/PyImportAssistant.cpp @@ -18,7 +18,7 @@ #include "BABuild.h" #include "Base/Util/Assert.h" #include "Base/Util/SysUtils.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/From/GUIObjectBuilder.h" #include "GUI/Model/IO/ProjectUtils.h" #include "GUI/Model/Sample/GUIDomainSampleVisitor.h" @@ -26,8 +26,8 @@ #include "GUI/Util/String.h" #include "GUI/View/Info/ComboSelectorDialog.h" #include "GUI/View/Info/DetailedMessageBox.h" -#include "GUI/View/Main/ProjectManager.h" #include "GUI/View/Info/MessageBox.h" +#include "GUI/View/Main/ProjectManager.h" #include "Sample/Multilayer/MultiLayer.h" #include "Sample/Multilayer/PyImport.h" #include <QApplication> @@ -101,8 +101,8 @@ QString PyImportAssistant::fileNameToOpen() QString result = QFileDialog::getOpenFileName( m_parentForDialogs, "Open python script", dirname, "Python scripts (*.py)", nullptr, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); saveImportDir(result); diff --git a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp index 03087f98ec9..b4ab351241a 100644 --- a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp +++ b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/View/MaterialEditor/MaterialEditorDialog.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModel.h" @@ -22,10 +22,10 @@ #include "GUI/Model/Sample/ItemWithMaterial.h" #include "GUI/Model/Sample/SampleModel.h" #include "GUI/Model/Types/VectorItem.h" -#include "GUI/View/Tool/mainwindow_constants.h" #include "GUI/View/MaterialEditor/MaterialEditorModel.h" #include "GUI/View/Tool/EditUtil.h" #include "GUI/View/Tool/StyleUtils.h" +#include "GUI/View/Tool/mainwindow_constants.h" #include "ui_MaterialEditorDialog.h" #include <QAction> @@ -98,7 +98,7 @@ MaterialEditorDialog::MaterialEditorDialog(ProjectDocument* document, QWidget* p m_ui->mainLayout->insertWidget(0, toolbar); GUI::Util::Style::setResizable(this); - globalSettings->settings().loadWindowSizeAndPos(this); + appSettings->loadWindowSizeAndPos(this); connect(m_ui->treeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &MaterialEditorDialog::fill); @@ -144,7 +144,7 @@ MaterialEditorDialog::MaterialEditorDialog(ProjectDocument* document, QWidget* p MaterialEditorDialog::~MaterialEditorDialog() { - globalSettings->settings().saveWindowSizeAndPos(this); + appSettings->saveWindowSizeAndPos(this); } //! replaces original material model with the model modified by MaterialEditor diff --git a/GUI/View/Projection/SaveProjectionsAssistant.cpp b/GUI/View/Projection/SaveProjectionsAssistant.cpp index fea7a475786..4dd0b9a5658 100644 --- a/GUI/View/Projection/SaveProjectionsAssistant.cpp +++ b/GUI/View/Projection/SaveProjectionsAssistant.cpp @@ -16,7 +16,7 @@ #include "Base/Util/PyFmt.h" #include "Device/Histo/Histogram1D.h" #include "Device/Histo/Histogram2D.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Data/IntensityDataItem.h" #include "GUI/Model/Data/MaskItems.h" #include "GUI/Model/Data/ProjectionItems.h" @@ -71,8 +71,8 @@ void SaveProjectionsAssistant::saveProjections(QWidget* parent, IntensityDataIte QString defaultName = gSessionData->projectDocument->userExportDir() + "/untitled.txt"; QString fileName = QFileDialog::getSaveFileName( parent, "Save projections data", defaultName, "", nullptr, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); if (fileName.isEmpty()) return; diff --git a/GUI/View/Realspace/RealSpaceCanvas.cpp b/GUI/View/Realspace/RealSpaceCanvas.cpp index 7cff2e0d7a1..3ec0d42d4b3 100644 --- a/GUI/View/Realspace/RealSpaceCanvas.cpp +++ b/GUI/View/Realspace/RealSpaceCanvas.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/View/Realspace/RealSpaceCanvas.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Group/FilterPropertyProxy.h" #include "GUI/Model/Sample/SampleModel.h" #include "GUI/Model/Session/SessionItemUtils.h" @@ -99,8 +99,8 @@ void RealSpaceCanvas::savePicture(const QPixmap& pixmap) QString defaultName = dirname + "/untitled"; QString fileName = QFileDialog::getSaveFileName( nullptr, "Save 3D real space view", defaultName, selectedFilter, nullptr, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); QString nameToSave = fileName.endsWith(defaultExtension) ? fileName : fileName + defaultExtension; diff --git a/GUI/View/SampleDesigner/LayerOrientedSampleEditor.cpp b/GUI/View/SampleDesigner/LayerOrientedSampleEditor.cpp index edb2e32b82b..42973039edb 100644 --- a/GUI/View/SampleDesigner/LayerOrientedSampleEditor.cpp +++ b/GUI/View/SampleDesigner/LayerOrientedSampleEditor.cpp @@ -20,7 +20,7 @@ #include "GUI/View/SampleDesigner/MultiLayerForm.h" #include "GUI/View/SampleDesigner/SampleEditorController.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include <QBoxLayout> #include <QScrollArea> @@ -73,7 +73,7 @@ LayerOrientedSampleEditor::LayerOrientedSampleEditor(QWidget* parent) auto* ag = new QActionGroup(this); ag->addAction(asNanometerAction); ag->addAction(m_asAngstromAction); - if (globalSettings->settings().defaultUnitIsAngstrom()) + if (appSettings->defaultUnitIsAngstrom()) m_asAngstromAction->setChecked(true); else asNanometerAction->setChecked(true); diff --git a/GUI/View/SampleDesigner/SampleListView.cpp b/GUI/View/SampleDesigner/SampleListView.cpp index 0883862de6f..58b5aeafcb4 100644 --- a/GUI/View/SampleDesigner/SampleListView.cpp +++ b/GUI/View/SampleDesigner/SampleListView.cpp @@ -13,13 +13,13 @@ // ************************************************************************************************ #include "GUI/View/SampleDesigner/SampleListView.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Sample/GUIExamplesFactory.h" #include "GUI/Model/Sample/MultiLayerItem.h" #include "GUI/Model/Sample/SampleListModel.h" #include "GUI/Model/State/SessionData.h" -#include "GUI/View/Tool/ItemDelegateForHTML.h" #include "GUI/View/Common/ItemViewOverlayButtons.h" +#include "GUI/View/Tool/ItemDelegateForHTML.h" #include <QAction> #include <QDialog> #include <QDialogButtonBox> @@ -193,7 +193,7 @@ void SampleListView::editNameAndDescription(MultiLayerItem* item) connect(buttonBox, &QDialogButtonBox::accepted, &dlg, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, &dlg, &QDialog::reject); - globalSettings->settings().loadWindowSizeAndPos(&dlg); + appSettings->loadWindowSizeAndPos(&dlg); if (dlg.exec() == QDialog::Accepted) { QModelIndex index = m_model->indexForItem(item); m_model->setData(index, nameEdit->text(), Qt::EditRole); @@ -202,7 +202,7 @@ void SampleListView::editNameAndDescription(MultiLayerItem* item) // has to be updated -> schedule a re-layout scheduleDelayedItemsLayout(); } - globalSettings->settings().saveWindowSizeAndPos(&dlg); + appSettings->saveWindowSizeAndPos(&dlg); } void SampleListView::onCurrentChanged(const QModelIndex& index) diff --git a/GUI/View/Script/PythonScriptWidget.cpp b/GUI/View/Script/PythonScriptWidget.cpp index f68eb905e4e..d34f5ea4555 100644 --- a/GUI/View/Script/PythonScriptWidget.cpp +++ b/GUI/View/Script/PythonScriptWidget.cpp @@ -15,7 +15,7 @@ #include "GUI/View/Script/PythonScriptWidget.h" #include "Core/Export/ExportToPython.h" #include "Core/Simulation/GISASSimulation.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/To/DomainSimulationBuilder.h" #include "GUI/View/Common/StyledToolBar.h" #include "GUI/View/Info/CautionSign.h" @@ -72,13 +72,13 @@ PythonScriptWidget::PythonScriptWidget(QWidget* parent) setAttribute(Qt::WA_DeleteOnClose, true); GUI::Util::Style::setResizable(this); - globalSettings->settings().loadWindowSizeAndPos(this); + appSettings->loadWindowSizeAndPos(this); } PythonScriptWidget::~PythonScriptWidget() { - globalSettings->settings().saveWindowSizeAndPos(this); + appSettings->saveWindowSizeAndPos(this); } void PythonScriptWidget::generatePythonScript(const MultiLayerItem* sampleItem, @@ -121,8 +121,8 @@ void PythonScriptWidget::onExportToFileButton() QString fileName = QFileDialog::getSaveFileName( nullptr, "Save file", defaultName, filters, &defaultFilter, - globalSettings->settings().useNativeFileDialog() ? QFileDialog::Options() - : QFileDialog::DontUseNativeDialog); + appSettings->useNativeFileDialog() ? QFileDialog::Options() + : QFileDialog::DontUseNativeDialog); if (fileName.isEmpty()) return; diff --git a/GUI/View/Tool/GroupBoxCollapser.cpp b/GUI/View/Tool/GroupBoxCollapser.cpp index 0c72850b9aa..da06f1af307 100644 --- a/GUI/View/Tool/GroupBoxCollapser.cpp +++ b/GUI/View/Tool/GroupBoxCollapser.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GroupBoxCollapser.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include <QAction> #include <QBoxLayout> #include <QGroupBox> @@ -84,7 +84,7 @@ GroupBoxCollapser::GroupBoxCollapser(QGroupBox* groupBox) : QObject(groupBox) m_toggleButton = new QToolButton(groupBox); m_toggleButton->setObjectName("GroupBoxToggler"); - if (globalSettings->currentStyle() == ApplicationSettings::Style::native) + if (appSettings->currentStyle() == ApplicationSettings::Style::native) m_toggleButton->setStyleSheet( "QToolButton { border: none; text-align: left; font: bold; padding: 5px}"); m_toggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); diff --git a/GUI/View/Toplevel/ProjectSettingsView.cpp b/GUI/View/Toplevel/ProjectSettingsView.cpp index 8aceb07a6e9..55cd7d91f5c 100644 --- a/GUI/View/Toplevel/ProjectSettingsView.cpp +++ b/GUI/View/Toplevel/ProjectSettingsView.cpp @@ -13,7 +13,7 @@ // ************************************************************************************************ #include "GUI/View/Toplevel/ProjectSettingsView.h" -#include "GUI/Application/GlobalSettings.h" +#include "GUI/Application/ApplicationSettings.h" #include "GUI/Model/Instrument/InstrumentModel.h" #include "GUI/Model/Sample/SampleModel.h" #include "GUI/Util/Path.h" @@ -108,10 +108,9 @@ void ProjectSettingsView::updateInformation() void ProjectSettingsView::storeAsDefaults() { - globalSettings->settings().setDefaultFunctionalities(toVariant(functionalities())); - globalSettings->settings().setDefaultIsSingleInstrumentMode( - m_ui->singleInstrumentModeRadio->isChecked()); - globalSettings->settings().setDefaultIsSingleSampleMode(m_ui->singleSampleModeRadio->isChecked()); + appSettings->setDefaultFunctionalities(toVariant(functionalities())); + appSettings->setDefaultIsSingleInstrumentMode(m_ui->singleInstrumentModeRadio->isChecked()); + appSettings->setDefaultIsSingleSampleMode(m_ui->singleSampleModeRadio->isChecked()); } void ProjectSettingsView::onSingleInstrumentRadioToggled(bool newState) -- GitLab