diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc index 852503f25dcf9f7133c72f066efc10e946f9b340..f4bf46f0aed2598552e5615cb45186fddcaf2d7f 100644 --- a/src/VivyApplication.cc +++ b/src/VivyApplication.cc @@ -57,8 +57,8 @@ VivyApplication::exec() noexcept setCursorFlashTime(0); // Show the main window - MainWindow mainWindow; - mainWindow.show(); + mainWindowPtr = std::make_unique<MainWindow>(); + mainWindowPtr->show(); // Main loop return QApplication::exec(); @@ -83,3 +83,11 @@ VivyApplication::getApplicationFont(Font id) const noexcept // Let the program crash qFatal("UNREACHABLE"); } + +MainWindow * +VivyApplication::getMainWindow() const +{ + if (!mainWindowPtr) + throw std::logic_error("No main window in the graphic VivyApplication"); + return mainWindowPtr.get(); +} diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh index 184a4fb36758c176a9313d0ae86be12f2749f0d8..06e04780be68fcb541ba5dc6d3c0af559806d9fa 100644 --- a/src/VivyApplication.hh +++ b/src/VivyApplication.hh @@ -33,6 +33,9 @@ namespace Vivy { +class MainWindow; + +// Vivy application class class VivyApplication : public QApplication { Q_OBJECT @@ -59,12 +62,15 @@ private: int fontIdBold; int fontIdBoldItalic; + std::unique_ptr<MainWindow> mainWindowPtr{ nullptr }; + public: VivyApplication(int &argc, char **argv); int exec() noexcept; QFont getApplicationFont(Font) const noexcept; + [[nodiscard("handle-it")]] MainWindow *getMainWindow() const; void setTheme(Theme) noexcept; };