| 2 #include "src/modelsubwindow.h" |
2 #include "src/modelsubwindow.h" |
| 3 #include "src/version.h" |
3 #include "src/version.h" |
| 4 #include <QTextBrowser> |
4 #include <QTextBrowser> |
| 5 #include <QOpenGLWidget> |
5 #include <QOpenGLWidget> |
| 6 #include <ui_about.h> |
6 #include <ui_about.h> |
| |
7 #include "src/settings.h" |
| 7 |
8 |
| 8 static constexpr MemberData<MainWindow, QAction*, gl::RenderStyle> renderStyleButtons[] = { |
9 static constexpr MemberData<MainWindow, QAction*, gl::RenderStyle> renderStyleButtons[] = { |
| 9 { offsetof(MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal }, |
10 { offsetof(MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal }, |
| 10 { offsetof(MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen }, |
11 { offsetof(MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen }, |
| 11 { offsetof(MainWindow, actionRenderStyleRandom), gl::RenderStyle::RandomColors }, |
12 { offsetof(MainWindow, actionRenderStyleRandom), gl::RenderStyle::RandomColors }, |
| 24 Q_EMIT this->renderStyleSelected(newStyle); |
25 Q_EMIT this->renderStyleSelected(newStyle); |
| 25 this->setRenderStyle(newStyle); |
26 this->setRenderStyle(newStyle); |
| 26 }); |
27 }); |
| 27 } |
28 } |
| 28 this->connect(this->actionAbout, &QAction::triggered, this, &MainWindow::showAboutDialog); |
29 this->connect(this->actionAbout, &QAction::triggered, this, &MainWindow::showAboutDialog); |
| |
30 this->connect(this->mdiArea, &QMdiArea::subWindowActivated, this, &MainWindow::updateTitle); |
| |
31 this->gridMatrix->setValue(DEFAULT_GRID_MATRIX); |
| |
32 this->tabifyDockWidget(this->messageLogDock, this->toolOptionsDock); |
| |
33 this->restoreGeometry(setting<Setting::MainWindowGeometry>()); |
| |
34 this->restoreState(setting<Setting::MainWindowState>()); |
| |
35 // If a dock is made floating and the app is closed, the dock becomes invisible |
| |
36 // after the restoreState call. So we make them visible again here. |
| |
37 for (QDockWidget* dock : this->findChildren<QDockWidget*>()) { |
| |
38 dock->setVisible(true); |
| |
39 } |
| |
40 this->actionAbout->setText(this->actionAbout->text().arg(CMAKE_PROJECT_NAME)); |
| |
41 this->updateTitle(); |
| |
42 this->show(); |
| 29 } |
43 } |
| 30 |
44 |
| 31 void MainWindow::setRenderStyle(gl::RenderStyle style) |
45 void MainWindow::setRenderStyle(gl::RenderStyle style) |
| 32 { |
46 { |
| 33 for (const auto& memberData : ::renderStyleButtons) |
47 for (const auto& memberData : ::renderStyleButtons) |
| 98 connect(action, &QAction::triggered, [&, path]{ |
112 connect(action, &QAction::triggered, [&, path]{ |
| 99 Q_EMIT this->recentFileSelected(path); |
113 Q_EMIT this->recentFileSelected(path); |
| 100 }); |
114 }); |
| 101 } |
115 } |
| 102 } |
116 } |
| |
117 |
| |
118 static QString title(MainWindow* ui) |
| |
119 { |
| |
120 QMdiSubWindow* subWindow = ui->mdiArea->activeSubWindow(); |
| |
121 QString titlestring; |
| |
122 const QString versionString = fullVersionString(QLocale::ShortFormat); |
| |
123 if (subWindow != nullptr) { |
| |
124 titlestring = QObject::tr("%1 - %2").arg(subWindow->windowTitle(), versionString); |
| |
125 } |
| |
126 else { |
| |
127 titlestring = versionString; |
| |
128 } |
| |
129 if (/* DISABLES CODE */ (true) |
| |
130 and std::strcmp(CMAKE_BUILD_TYPE, "Release") != 0 |
| |
131 and std::strcmp(CMAKE_BUILD_TYPE, "MinSizeRel") != 0 |
| |
132 ) { |
| |
133 titlestring += QObject::tr(" [%1]").arg(CMAKE_BUILD_TYPE); |
| |
134 } |
| |
135 return titlestring; |
| |
136 } |
| |
137 |
| |
138 void MainWindow::updateTitle() |
| |
139 { |
| |
140 this->setWindowTitle(title(this)); |
| |
141 } |