diff --git a/src/ViewportWidget.cpp b/src/ViewportWidget.cpp index 0f2798c..0766b92 100644 --- a/src/ViewportWidget.cpp +++ b/src/ViewportWidget.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,10 @@ ViewportWidget::ViewportWidget(QWidget *parent) m_sketchGrid = new SketchGrid(); m_featureBrowser = new FeatureBrowser(); setMouseTracking(true); + + m_toolIcons.insert(static_cast(ApplicationController::ToolType::Line), new QSvgRenderer(QString(":/icons/line.svg"), this)); + m_toolIcons.insert(static_cast(ApplicationController::ToolType::Rectangle), new QSvgRenderer(QString(":/icons/rectangle.svg"), this)); + m_toolIcons.insert(static_cast(ApplicationController::ToolType::Circle), new QSvgRenderer(QString(":/icons/circle.svg"), this)); } ViewportWidget::~ViewportWidget() @@ -148,6 +153,17 @@ void ViewportWidget::paintGL() drawAxisLabels(painter, model, projection); } m_featureBrowser->paint(painter, width(), height()); + + if (m_currentPlane != SketchPlane::NONE && m_activeTool != static_cast(ApplicationController::ToolType::None) && m_toolIcons.contains(m_activeTool)) { + QSvgRenderer* renderer = m_toolIcons.value(m_activeTool); + if (renderer && renderer->isValid()) { + const QSize iconSize(16, 16); + const QPoint iconPos = m_currentMousePos + QPoint(15, 15); + const QRect iconRect(iconPos, iconSize); + renderer->render(&painter, iconRect); + } + } + painter.end(); } diff --git a/src/ViewportWidget.h b/src/ViewportWidget.h index 099cc93..8a11b52 100644 --- a/src/ViewportWidget.h +++ b/src/ViewportWidget.h @@ -8,7 +8,9 @@ #include #include #include +#include +class QSvgRenderer; class ViewCube; class SketchGrid; class Document; @@ -88,6 +90,8 @@ private: gp_Pnt m_firstLinePoint; QPoint m_currentMousePos; + QMap m_toolIcons; + float m_xRot = 35.264f * 16.0f; // Default to isometric view float m_yRot = -45.0f * 16.0f; // Default to isometric view float m_zoom = -5.0f;