From bd5eb2e554f296e31747e9ca922cf70b76f014c2 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Tue, 2 Nov 2021 16:03:11 +0100 Subject: [PATCH] move global settings out of qApp --- App/main.cpp | 23 +++++++++---- GUI/Application/Application.cpp | 33 ++++++++----------- GUI/Application/Application.h | 7 ++-- .../Instrument/InstrumentsTreeModel.cpp | 1 + GUI/Project/projectmanager.cpp | 1 + .../ImportDataWidgets/RealDataTreeModel.cpp | 18 +++++----- GUI/mainwindow/PyImportAssistant.cpp | 1 + GUI/mainwindow/mainwindow.cpp | 1 + 8 files changed, 48 insertions(+), 37 deletions(-) diff --git a/App/main.cpp b/App/main.cpp index d72f056457c..394d53c0d05 100644 --- a/App/main.cpp +++ b/App/main.cpp @@ -17,8 +17,11 @@ #include "GUI/Application/Application.h" #include "GUI/DataLoaders/DataLoaderUtil.h" #include "GUI/mainwindow/mainwindow.h" +#include "GUI/utils/hostosinfo.h" +#include "GUI/utils/Helpers.h" #include "config_build.h" #include <QDir> +#include <QIcon> #include <QLocale> #include <QMessageBox> #include <QMetaType> @@ -38,7 +41,14 @@ int main(int argc, char* argv[]) if (!options.disableHighDPISupport()) QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); - Application app(argc, argv); + QApplication app(argc, argv); + app.setApplicationName("BornAgain"); + app.setApplicationVersion(GUI::Helpers::getBornAgainVersionString()); + app.setOrganizationName("BornAgain"); + if (!GUI::Utils::OS::HostOsInfo::isMacHost()) + QApplication::setWindowIcon(QIcon(":/images/BornAgain.ico")); + + GlobalSettings GSettings; int ret; #if !defined(BUILD_DEBUG) @@ -48,12 +58,13 @@ int main(int argc, char* argv[]) register1DDataLoaders(); - app.loadStyle(app.settings().styleToUse()); + auto style = baApp->settings().styleToUse(); + baApp->loadStyle(style); - if (!QDir().exists(app.appDataFolder())) - QDir().mkpath(app.appDataFolder()); + if (!QDir().exists(baApp->appDataFolder())) + QDir().mkpath(baApp->appDataFolder()); - app.instrumentLibrary().load(app.instrumentLibraryFilePath()); + baApp->instrumentLibrary().load(baApp->instrumentLibraryFilePath()); MainWindow win; if (options.find("geometry")) @@ -63,7 +74,7 @@ int main(int argc, char* argv[]) ret = QApplication::exec(); - app.instrumentLibrary().saveIfModified(app.instrumentLibraryFilePath()); + baApp->instrumentLibrary().saveIfModified(baApp->instrumentLibraryFilePath()); #if !defined(BUILD_DEBUG) } catch (...) { QMessageBox box; diff --git a/GUI/Application/Application.cpp b/GUI/Application/Application.cpp index d99d18019fd..1df382b2b13 100644 --- a/GUI/Application/Application.cpp +++ b/GUI/Application/Application.cpp @@ -13,29 +13,24 @@ // ************************************************************************************************ #include "GUI/Application/Application.h" -#include "GUI/utils/Helpers.h" -#include "GUI/utils/hostosinfo.h" +#include <QApplication> #include <QFile> -#include <QIcon> #include <QStandardPaths> -Application::Application(int& argc, char** argv) - : QApplication(argc, argv), m_currentStyle(ApplicationSettings::Style::native) -{ - setApplicationName("BornAgain"); - setApplicationVersion(GUI::Helpers::getBornAgainVersionString()); - setOrganizationName("BornAgain"); +GlobalSettings* baApp; //!< global pointer to _the_ instance - if (!GUI::Utils::OS::HostOsInfo::isMacHost()) - QApplication::setWindowIcon(QIcon(":/images/BornAgain.ico")); +GlobalSettings::GlobalSettings() + : m_currentStyle(ApplicationSettings::Style::native) +{ + baApp = this; } -ApplicationSettings& Application::settings() +ApplicationSettings& GlobalSettings::settings() { return m_settings; } -void Application::loadStyle(ApplicationSettings::Style style) +void GlobalSettings::loadStyle(ApplicationSettings::Style style) { QString stylesheet; @@ -64,7 +59,7 @@ void Application::loadStyle(ApplicationSettings::Style style) } } - setStyleSheet(stylesheet); + qApp->setStyleSheet(stylesheet); m_currentStyle = style; // -- init palette for later usage; could be improved by parsing the stylesheet @@ -87,27 +82,27 @@ void Application::loadStyle(ApplicationSettings::Style style) } } -ApplicationSettings::Style Application::currentStyle() +ApplicationSettings::Style GlobalSettings::currentStyle() { return m_currentStyle; } -const Application::Palette& Application::styleSheetPalette() const +const GlobalSettings::Palette& GlobalSettings::styleSheetPalette() const { return m_styleSheetPalette; } -InstrumentLibrary& Application::instrumentLibrary() +InstrumentLibrary& GlobalSettings::instrumentLibrary() { return m_instrumentLibrary; } -QString Application::instrumentLibraryFilePath() const +QString GlobalSettings::instrumentLibraryFilePath() const { return appDataFolder() + "/BornAgainInstrumentLibrary.balib"; } -QString Application::appDataFolder() const +QString GlobalSettings::appDataFolder() const { return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); } diff --git a/GUI/Application/Application.h b/GUI/Application/Application.h index 4d40388f6ff..38f433819f8 100644 --- a/GUI/Application/Application.h +++ b/GUI/Application/Application.h @@ -17,14 +17,13 @@ #include "GUI/Application/ApplicationSettings.h" #include "GUI/Models/Instrument/InstrumentLibrary.h" -#include <QApplication> #include <QColor> //! Provides access to application wide stuff like settings. -class Application : public QApplication { +class GlobalSettings { public: - Application(int& argc, char** argv); + GlobalSettings(); ApplicationSettings& settings(); @@ -54,6 +53,6 @@ private: Palette m_styleSheetPalette; }; -#define baApp (static_cast<Application*>(qApp)) +extern GlobalSettings* baApp; //!< global pointer to the single instance #endif // BORNAGAIN_GUI_APPLICATION_APPLICATION_H diff --git a/GUI/Models/Instrument/InstrumentsTreeModel.cpp b/GUI/Models/Instrument/InstrumentsTreeModel.cpp index cb545ef99bd..a5624d9bc56 100644 --- a/GUI/Models/Instrument/InstrumentsTreeModel.cpp +++ b/GUI/Models/Instrument/InstrumentsTreeModel.cpp @@ -15,6 +15,7 @@ #include "GUI/Models/Instrument/InstrumentsTreeModel.h" #include "GUI/Application/Application.h" #include "GUI/Items/InstrumentItems.h" +#include <QApplication> #include <QtCore> #include <QtGui> diff --git a/GUI/Project/projectmanager.cpp b/GUI/Project/projectmanager.cpp index 756a0228d27..588b3ce47ec 100644 --- a/GUI/Project/projectmanager.cpp +++ b/GUI/Project/projectmanager.cpp @@ -26,6 +26,7 @@ #include "GUI/utils/GUIHelpers.h" #include "GUI/utils/MessageService.h" #include "GUI/utils/mainwindow_constants.h" +#include <QApplication> #include <QDateTime> #include <QFileDialog> #include <QMessageBox> diff --git a/GUI/Views/ImportDataWidgets/RealDataTreeModel.cpp b/GUI/Views/ImportDataWidgets/RealDataTreeModel.cpp index cdc178fb915..e6d21ac1116 100644 --- a/GUI/Views/ImportDataWidgets/RealDataTreeModel.cpp +++ b/GUI/Views/ImportDataWidgets/RealDataTreeModel.cpp @@ -16,6 +16,7 @@ #include "GUI/Application/Application.h" #include "GUI/Items/RealDataItem.h" #include "GUI/Models/Data/RealDataModel.h" +#include <QApplication> #include <QtCore> #include <QtGui> @@ -33,16 +34,17 @@ RealDataTreeModel::RealDataTreeModel(QObject* parent, RealDataModel* model) void RealDataTreeModel::setVisibleRanks(QSet<int> visibleRanks) { - if (m_visibleRanks != visibleRanks) { - m_visibleRanks = visibleRanks; + if (m_visibleRanks == visibleRanks) + return; - beginResetModel(); - for (auto rank : m_visibleRanks) - m_items[rank - 1] = m_model->realDataItems(rank); - endResetModel(); + m_visibleRanks = visibleRanks; - updateSubsriptions(); - } + beginResetModel(); + for (auto rank : m_visibleRanks) + m_items[rank - 1] = m_model->realDataItems(rank); + endResetModel(); + + updateSubsriptions(); } void RealDataTreeModel::refreshAfterModelChange() diff --git a/GUI/mainwindow/PyImportAssistant.cpp b/GUI/mainwindow/PyImportAssistant.cpp index 3e7d1c24c5e..136ff8c20dd 100644 --- a/GUI/mainwindow/PyImportAssistant.cpp +++ b/GUI/mainwindow/PyImportAssistant.cpp @@ -30,6 +30,7 @@ #include "GUI/utils/Helpers.h" #include "Sample/Multilayer/MultiLayer.h" #include "Sample/Multilayer/PyImport.h" +#include <QApplication> #include <QFileDialog> #include <QTextStream> diff --git a/GUI/mainwindow/mainwindow.cpp b/GUI/mainwindow/mainwindow.cpp index 393eccd27c2..df26a6ed9b5 100644 --- a/GUI/mainwindow/mainwindow.cpp +++ b/GUI/mainwindow/mainwindow.cpp @@ -29,6 +29,7 @@ #include "GUI/utils/hostosinfo.h" #include "GUI/utils/mainwindow_constants.h" #include <QAction> +#include <QApplication> #include <QBoxLayout> #include <QButtonGroup> #include <QCloseEvent> -- GitLab