feat: Add sketch mode UI tab with drawing tools

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-09 17:57:22 -07:00
parent c8b178e0a0
commit 606720030e
6 changed files with 83 additions and 9 deletions

View File

@@ -42,12 +42,12 @@ MainWindow::MainWindow(QWidget *parent)
mainToolBar->setFloatable(false);
mainToolBar->setStyleSheet("QToolBar { border: 0px }");
QTabWidget *tabWidget = new QTabWidget();
mainToolBar->addWidget(tabWidget);
m_tabWidget = new QTabWidget();
mainToolBar->addWidget(m_tabWidget);
// --- SOLID Tab ---
QWidget *solidTab = new QWidget();
QHBoxLayout *solidLayout = new QHBoxLayout(solidTab);
m_solidTab = new QWidget();
QHBoxLayout *solidLayout = new QHBoxLayout(m_solidTab);
solidLayout->setContentsMargins(5, 5, 5, 5);
solidLayout->setSpacing(5);
solidLayout->setAlignment(Qt::AlignLeft);
@@ -67,15 +67,55 @@ MainWindow::MainWindow(QWidget *parent)
extrudeButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
solidLayout->addWidget(extrudeButton);
tabWidget->addTab(solidTab, "SOLID");
m_tabWidget->addTab(m_solidTab, "SOLID");
// --- SURFACE Tab ---
QWidget *surfaceTab = new QWidget();
tabWidget->addTab(surfaceTab, "SURFACE");
m_surfaceTab = new QWidget();
m_tabWidget->addTab(m_surfaceTab, "SURFACE");
// --- TOOLS Tab ---
QWidget *toolsTab = new QWidget();
tabWidget->addTab(toolsTab, "TOOLS");
m_toolsTab = new QWidget();
m_tabWidget->addTab(m_toolsTab, "TOOLS");
// --- SKETCH Tab ---
m_sketchTab = new QWidget();
QHBoxLayout *sketchLayout = new QHBoxLayout(m_sketchTab);
sketchLayout->setContentsMargins(5, 5, 5, 5);
sketchLayout->setSpacing(5);
sketchLayout->setAlignment(Qt::AlignLeft);
QToolButton *lineButton = new QToolButton();
lineButton->setText("Line");
lineButton->setIcon(QIcon(":/icons/line.svg"));
lineButton->setIconSize(QSize(48, 48));
lineButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
lineButton->setFixedSize(56, 56);
sketchLayout->addWidget(lineButton);
QToolButton *rectangleButton = new QToolButton();
rectangleButton->setText("Rectangle");
rectangleButton->setIcon(QIcon(":/icons/rectangle.svg"));
rectangleButton->setIconSize(QSize(48, 48));
rectangleButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
rectangleButton->setFixedSize(56, 56);
sketchLayout->addWidget(rectangleButton);
QToolButton *circleButton = new QToolButton();
circleButton->setText("Circle");
circleButton->setIcon(QIcon(":/icons/circle.svg"));
circleButton->setIconSize(QSize(48, 48));
circleButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
circleButton->setFixedSize(56, 56);
sketchLayout->addWidget(circleButton);
QToolButton *saveSketchButton = new QToolButton();
saveSketchButton->setText("Save Sketch");
saveSketchButton->setIcon(QIcon(":/icons/save-sketch.svg"));
saveSketchButton->setIconSize(QSize(48, 48));
saveSketchButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
saveSketchButton->setFixedSize(56, 56);
connect(saveSketchButton, &QToolButton::clicked, this, &MainWindow::saveSketch);
sketchLayout->addWidget(saveSketchButton);
m_viewport = new ViewportWidget;
setCentralWidget(m_viewport);
@@ -109,9 +149,22 @@ void MainWindow::createSketch()
feature->setPlane(SketchFeature::SketchPlane::YZ);
}
m_document->addFeature(feature);
m_tabWidget->removeTab(m_tabWidget->indexOf(m_toolsTab));
m_tabWidget->removeTab(m_tabWidget->indexOf(m_surfaceTab));
m_tabWidget->removeTab(m_tabWidget->indexOf(m_solidTab));
m_tabWidget->addTab(m_sketchTab, "SKETCH");
}
}
void MainWindow::saveSketch()
{
m_tabWidget->removeTab(m_tabWidget->indexOf(m_sketchTab));
m_tabWidget->addTab(m_solidTab, "SOLID");
m_tabWidget->addTab(m_surfaceTab, "SURFACE");
m_tabWidget->addTab(m_toolsTab, "TOOLS");
}
void MainWindow::newFile()
{
m_document->clear();