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