src/main.cpp

changeset 356
65b4741b302d
parent 355
e81f4ad53efd
child 359
73b6c478378e
--- a/src/main.cpp	Sat Apr 08 16:59:55 2023 +0300
+++ b/src/main.cpp	Sat Apr 08 21:48:49 2023 +0300
@@ -323,6 +323,23 @@
 	}, action);
 }
 
+QFont codeEditorFontFromSettings()
+{
+	QFont font{};
+	if (setting<Setting::CodeEditorUseSystemFont>())
+	{
+		font.setStyleHint(QFont::Monospace);
+	}
+	else
+	{
+		font.setFamily(setting<Setting::CodeEditorFontFamily>());
+		font.setPointSize(setting<Setting::CodeEditorFontSize>());
+	}
+	return font;
+}
+
+constexpr glm::mat4 DEFAULT_GRID_MATRIX = {{1, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 1}};
+
 int main(int argc, char *argv[])
 {
 	doQtRegistrations();
@@ -377,10 +394,9 @@
 			data->tools = std::make_unique<EditTools>();
 			data->canvas = std::make_unique<PartRenderer>(model, &documents, colorTable);
 			data->axesLayer = std::make_unique<AxesLayer>();
-			constexpr glm::mat4 XZ = {{1, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 1}};
 			data->gridLayer = std::make_unique<GridLayer>();
-			data->gridLayer->setGridMatrix(XZ);
-			data->tools->setGridMatrix(XZ);
+			data->gridLayer->setGridMatrix(DEFAULT_GRID_MATRIX);
+			data->tools->setGridMatrix(DEFAULT_GRID_MATRIX);
 			data->model = model;
 			data->canvas->addRenderLayer(data->axesLayer.get());
 			data->canvas->setLayerEnabled(data->axesLayer.get(), setting<Setting::DrawAxes>());
@@ -669,6 +685,7 @@
 				checkEditingModeAction(data->tools->currentEditingMode());
 				mainWindow.modelEdit->setDocument(data->model);
 				mainWindow.modelEdit->setTextCursor(*data->textcursor);
+				mainWindow.modelEdit->setFont(codeEditorFontFromSettings());
 			}
 		}
 		else {
@@ -718,6 +735,23 @@
 				data->canvas->update();
 			}
 		});
+	QObject::connect(
+		mainWindow.gridMatrix,
+		&MatrixEditor::valueChanged,
+		[&](const glm::mat4& newGridMatrix)
+		{
+			forEachModel(&documents, [&](const void*, const ModelData* data)
+			{
+				if (data->gridLayer != nullptr and data->tools != nullptr and data->canvas != nullptr)
+				{
+					data->gridLayer->setGridMatrix(newGridMatrix);
+					data->tools->setGridMatrix(newGridMatrix);
+					data->canvas->update();
+				}
+			});
+		}
+	);
+	mainWindow.gridMatrix->setValue(DEFAULT_GRID_MATRIX);
 	mainWindow.tabifyDockWidget(mainWindow.messageLogDock, mainWindow.toolOptionsDock);
 	mainWindow.restoreGeometry(setting<Setting::MainWindowGeometry>());
 	mainWindow.restoreState(setting<Setting::MainWindowState>());

mercurial