From f396541f83c03b1c6ae58626676779f7bb6355c3 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 18 Aug 2021 09:15:11 +0200
Subject: [PATCH] LIB: Add the getMainWindow to the VivyApplication

---
 src/VivyApplication.cc | 12 ++++++++++--
 src/VivyApplication.hh |  6 ++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index 852503f2..f4bf46f0 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 184a4fb3..06e04780 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;
 };
 
-- 
GitLab