src/main.cpp

changeset 215
34c6e7bc4ee1
parent 214
8e1fe64ce4e3
child 216
c7241f504117
--- a/src/main.cpp	Sun Jun 12 20:47:04 2022 +0300
+++ b/src/main.cpp	Sun Jun 12 23:59:37 2022 +0300
@@ -7,7 +7,8 @@
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 #include "version.h"
-#include "ui/canvas.h"
+#include "gl/axesprogram.h"
+#include "gl/partrenderer.h"
 #include "document.h"
 #include "settingseditor/settingseditor.h"
 #include "widgets/colorselectdialog.h"
@@ -31,6 +32,19 @@
 	}
 };
 
+class ModelData : public QObject
+{
+	Q_OBJECT
+public:
+	ModelData(QObject* parent) : QObject {parent} {}
+	std::unique_ptr<PartRenderer> canvas;
+	std::unique_ptr<QItemSelectionModel> itemSelectionModel;
+	std::unique_ptr<EditTools> tools;
+	std::unique_ptr<AxesLayer> axesLayer;
+	Model* model;
+};
+#include "main.moc"
+
 static void doQtRegistrations()
 {
 	QCoreApplication::setApplicationName(::appName);
@@ -51,18 +65,6 @@
 	}
 };
 
-class ModelData : public QObject
-{
-	Q_OBJECT
-public:
-	ModelData(QObject* parent) : QObject {parent} {}
-	std::unique_ptr<Canvas> canvas;
-	std::unique_ptr<QItemSelectionModel> itemSelectionModel;
-	std::unique_ptr<EditTools> tools;
-	Model* model;
-};
-#include "main.moc"
-
 static constexpr MemberData<Ui_MainWindow, QAction*, gl::RenderStyle> renderStyleButtons[] = {
 	{ offsetof(Ui_MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal },
 	{ offsetof(Ui_MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen },
@@ -236,6 +238,7 @@
 	forModel(documents, [&renderPreferences](const void*, const ModelData* data){
 		if (data->canvas != nullptr) {
 			data->canvas->setRenderPreferences(*renderPreferences);
+			data->canvas->setLayerEnabled(data->axesLayer.get(), renderPreferences->drawAxes);
 		}
 	});
 	for (auto data : ::renderStyleButtons) {
@@ -391,13 +394,18 @@
 		if (model != nullptr) {
 			ModelData* data = new ModelData(&documents);
 			data->tools = std::make_unique<EditTools>(model, colorTable);
-			data->canvas = std::make_unique<Canvas>(model, data->tools.get(), &documents, colorTable);
+			data->canvas = std::make_unique<PartRenderer>(model, &documents, colorTable);
 			data->itemSelectionModel = std::make_unique<QItemSelectionModel>(model);
+			data->axesLayer = std::make_unique<AxesLayer>();
 			data->model = model;
+			data->canvas->addRenderLayer(data->axesLayer.get());
+			data->canvas->setLayerEnabled(data->axesLayer.get(), settings.drawAxes());
+			documents.setModelPayload(modelId, data);
 			QObject::connect(
 				data->tools.get(),
 				&EditTools::modelAction,
 				std::bind(executeAction, model, std::placeholders::_1));
+#if 0
 			QObject::connect(data->itemSelectionModel.get(), &QItemSelectionModel::selectionChanged,
 				[modelId, &documents](
 				const QItemSelection& selected,
@@ -415,6 +423,7 @@
 					data->canvas->handleSelectionChange(resolve(selected), resolve(deselected));
 				}
 			});
+#endif
 			data->canvas->setRenderPreferences(renderPreferences);
 			QObject::connect(
 				data->tools.get(),
@@ -451,11 +460,13 @@
 		}
 	});
 	QObject::connect(ui.actionQuit, &QAction::triggered, &mainWindow, &QMainWindow::close);
+#if 0
 	QObject::connect(ui.actionAdjustGridToView, &QAction::triggered, [&]{
 		if (ModelData* data = currentModelData(&ui, &documents)) {
 			adjustGridToView(data->canvas.get());
 		}
 	});
+#endif
 	QObject::connect(ui.actionClose, &QAction::triggered, [&ui, &documents]{
 		if (ModelData* data = currentModelData(&ui, &documents)) {
 			// TODO

mercurial