новый файл: CMakeLists.txt

новый файл:    shell.nix
	новый файл:    src/MainWindow.cpp
	новый файл:    src/MainWindow.h
	новый файл:    src/items/ArrowItem.cpp
	новый файл:    src/items/ArrowItem.h
	новый файл:    src/items/BlockItem.cpp
	новый файл:    src/items/BlockItem.h
	новый файл:    src/items/DiagramScene.cpp
	новый файл:    src/items/DiagramScene.h
	новый файл:    src/items/JunctionItem.cpp
	новый файл:    src/items/JunctionItem.h
	новый файл:    src/main.cpp
	изменено:      src/items/ArrowItem.cpp
	изменено:      src/items/ArrowItem.h
	изменено:      src/items/BlockItem.h
	изменено:      src/items/DiagramScene.cpp
	изменено:      src/items/DiagramScene.h
This commit is contained in:
Gregory Bednov 2026-02-23 00:21:10 +03:00
commit 53afa3f728
87 changed files with 48249 additions and 0 deletions

39
src/MainWindow.cpp Normal file
View file

@ -0,0 +1,39 @@
#include "MainWindow.h"
#include "items/DiagramScene.h"
#include <QGraphicsView>
#include <QToolBar>
#include <QAction>
#include <QStatusBar>
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
{
setupUi();
setupActions();
statusBar()->showMessage("RMB: add block. LMB on port: drag arrow. Double click block: rename.");
}
void MainWindow::setupUi() {
m_scene = new DiagramScene(this);
m_view = new QGraphicsView(m_scene, this);
m_view->setRenderHint(QPainter::Antialiasing, true);
m_view->setDragMode(QGraphicsView::RubberBandDrag);
// Полное обновление избавляет от графических артефактов во время drag временной стрелки.
m_view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
setCentralWidget(m_view);
// стартовые блоки
m_scene->createBlockAt(QPointF(-200, -50))->setPos(-300, -150);
m_scene->createBlockAt(QPointF(200, -50))->setPos(200, -150);
}
void MainWindow::setupActions() {
auto* tb = addToolBar("Tools");
auto* actFit = new QAction("Fit", this);
connect(actFit, &QAction::triggered, this, [this]{
m_view->fitInView(m_scene->itemsBoundingRect().adjusted(-50,-50,50,50), Qt::KeepAspectRatio);
});
tb->addAction(actFit);
}