diff --git a/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.cpp b/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.cpp index 6f99121d5f5a7aa2019be64a378ba0d29e466b30..7faec18e91811731c0fb80535aeac67b2efba933 100644 --- a/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.cpp +++ b/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.cpp @@ -27,6 +27,7 @@ #include "GUI/coregui/Views/MaterialEditor/MaterialEditorDialog.h" #include "GUI/coregui/Views/SampleDesigner/DesignerHelper.h" #include "GUI/coregui/mainwindow/AppSvc.h" +#include "GUI/coregui/mainwindow/mainwindow.h" #include "GUI/coregui/utils/GUIHelpers.h" #include "Sample/Material/Material.h" #include <QColorDialog> @@ -141,7 +142,7 @@ ExternalProperty MaterialItemUtils::colorProperty(const QColor& color) { } ExternalProperty MaterialItemUtils::selectMaterialProperty(const ExternalProperty& previous) { - MaterialEditorDialog dialog(AppSvc::materialModel()); + MaterialEditorDialog dialog(AppSvc::materialModel(), MainWindow::instance()); dialog.setMaterialProperty(previous); if (dialog.exec() == QDialog::Accepted) { return dialog.selectedMaterialProperty(); diff --git a/GUI/coregui/mainwindow/mainwindow.cpp b/GUI/coregui/mainwindow/mainwindow.cpp index 24b460fb69af26b0ed8dd033fe6cbbee469498d0..005416b175599b41390b5554a9c14c2c8bc3591b 100644 --- a/GUI/coregui/mainwindow/mainwindow.cpp +++ b/GUI/coregui/mainwindow/mainwindow.cpp @@ -38,6 +38,8 @@ #include <qt-manhattan-style/progressbar.h> #include <qt-manhattan-style/stylehelper.h> +MainWindow* MainWindow::s_instance = nullptr; + MainWindow::MainWindow() : Manhattan::FancyMainWindow(nullptr) , m_tabWidget(new Manhattan::FancyTabWidget(this)) @@ -54,6 +56,7 @@ MainWindow::MainWindow() , m_simulationView(0) , m_jobView(0) , m_sessionModelView(0) { + s_instance = this; initApplication(); readSettings(); initProgressBar(); @@ -65,6 +68,14 @@ MainWindow::MainWindow() // m_applicationModels->createTestRealData(); } +MainWindow::~MainWindow() { + s_instance = nullptr; +} + +MainWindow* MainWindow::instance() { + return s_instance; +} + MaterialModel* MainWindow::materialModel() { return models()->materialModel(); } diff --git a/GUI/coregui/mainwindow/mainwindow.h b/GUI/coregui/mainwindow/mainwindow.h index fad9c7e04205b2aab90737d4741d3ef279259175..d6df9c74623894e30efbca661898fcb26f5fbe3f 100644 --- a/GUI/coregui/mainwindow/mainwindow.h +++ b/GUI/coregui/mainwindow/mainwindow.h @@ -48,6 +48,10 @@ public: enum ETabViewId { WELCOME, INSTRUMENT, SAMPLE, IMPORT, SIMULATION, JOB, MAXVIEWCOUNT }; explicit MainWindow(); + ~MainWindow(); + + //! Returns the one and only instance of this class + static MainWindow* instance(); MaterialModel* materialModel(); InstrumentModel* instrumentModel(); @@ -96,6 +100,9 @@ private: SimulationView* m_simulationView; JobView* m_jobView; SessionModelView* m_sessionModelView; + + //! Holds the one and only instance of this class + static MainWindow* s_instance; }; #endif // BORNAGAIN_GUI_COREGUI_MAINWINDOW_MAINWINDOW_H