src/main.cpp

changeset 243
959469a7e149
parent 241
c4e2afabcb90
child 249
37d3c819cafa
--- a/src/main.cpp	Mon Jun 20 22:22:15 2022 +0300
+++ b/src/main.cpp	Mon Jun 20 22:40:31 2022 +0300
@@ -49,6 +49,20 @@
 	std::unique_ptr<GridLayer> gridLayer;
 	Model* model;
 };
+
+class Signal final : public QObject
+{
+	Q_OBJECT
+public:
+	Signal() : QObject{}{}
+	virtual ~Signal(){}
+	void emit()
+	{
+		Q_EMIT this->triggered();
+	}
+Q_SIGNALS:
+	void triggered();
+};
 #include "main.moc"
 
 static void doQtRegistrations()
@@ -359,6 +373,7 @@
 	ColorTable colorTable;
 	gl::RenderPreferences renderPreferences;
 	MessageLog messageLog;
+	Signal settingsChanged;
 	ui.setupUi(&mainWindow);
 	const uiutilities::KeySequenceMap defaultKeyboardShortcuts =
 		uiutilities::makeKeySequenceMap(uiutilities::collectActions(&mainWindow));
@@ -370,6 +385,7 @@
 		setSetting<Setting::DrawAxes>(renderPreferences.drawAxes);
 		setSetting<Setting::Wireframe>(renderPreferences.wireframe);
 		libraries.storeToSettings();
+		settingsChanged.emit();
 	};
 	const auto updateRecentlyOpenedDocumentsMenu = [&]{
 		rebuildRecentFilesMenu(ui.menuRecentFiles, recentlyOpenedFiles, &mainWindow);
@@ -406,6 +422,7 @@
 		updateRenderPreferences(&ui, &renderPreferences, &documents);
 		ui.mdiArea->setViewMode(setting<Setting::ViewMode>());
 		ui.retranslateUi(&mainWindow);
+		settingsChanged.emit();
 	};
 	const auto addRecentlyOpenedFile = [&](const QString& path){
 		constexpr int maxRecentlyOpenedFiles = 10;
@@ -480,6 +497,12 @@
 						}
 					}
 				});
+			QObject::connect(&settingsChanged, &Signal::triggered, [modelId, &documents]{
+				ModelData* data = findModelData(&documents, modelId);
+				if (data != nullptr) {
+					data->gridLayer->settingsChanged();
+				}
+			});
 			QObject::connect(data->canvas.get(), &PartRenderer::message, &messageLog, &MessageLog::addMessage);
 			const QFileInfo fileInfo{*documents.modelPath(modelId)};
 			ModelSubWindow* subWindow = new ModelSubWindow{modelId, ui.mdiArea};

mercurial