diff --git a/icons/circle.svg b/icons/circle.svg
new file mode 100644
index 0000000..fafb656
--- /dev/null
+++ b/icons/circle.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/line.svg b/icons/line.svg
new file mode 100644
index 0000000..47291bf
--- /dev/null
+++ b/icons/line.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/rectangle.svg b/icons/rectangle.svg
new file mode 100644
index 0000000..b7e530a
--- /dev/null
+++ b/icons/rectangle.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/save-sketch.svg b/icons/save-sketch.svg
new file mode 100644
index 0000000..04fdbf7
--- /dev/null
+++ b/icons/save-sketch.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 39b5e1c..4e8c936 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -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();
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 9dc5655..197c616 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -6,6 +6,8 @@
class ViewportWidget;
class Document;
class Feature;
+class QTabWidget;
+class QWidget;
class MainWindow : public QMainWindow
{
@@ -20,6 +22,7 @@ private slots:
bool save();
bool saveAs();
void createSketch();
+ void saveSketch();
private:
void setCurrentFile(const QString &fileName);
@@ -27,6 +30,12 @@ private:
ViewportWidget *m_viewport;
Document *m_document;
QString m_currentFile;
+
+ QTabWidget *m_tabWidget;
+ QWidget *m_solidTab;
+ QWidget *m_surfaceTab;
+ QWidget *m_toolsTab;
+ QWidget *m_sketchTab;
};
#endif // MAINWINDOW_H