From e473ec23331e98738260a33156f9d4b2fcad889c Mon Sep 17 00:00:00 2001 From: hlorus <64740362+hlorus@users.noreply.github.com> Date: Mon, 13 May 2024 12:21:15 +0200 Subject: [PATCH 1/4] Measure Prefs: Set background default color to white --- src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.ui | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.ui b/src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.ui index e370751ca8..4befac72aa 100644 --- a/src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.ui +++ b/src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.ui @@ -113,9 +113,9 @@ - 60 - 240 - 0 + 255 + 255 + 255 @@ -180,9 +180,9 @@ - 60 - 240 - 0 + 255 + 255 + 255 From c9b2287e821a82303ef2f8f669b29a441a27440a Mon Sep 17 00:00:00 2001 From: hlorus <64740362+hlorus@users.noreply.github.com> Date: Tue, 14 May 2024 17:53:22 +0200 Subject: [PATCH 2/4] Gui: Add icon support in SoFrameLabel --- src/Gui/SoTextLabel.cpp | 39 +++++++++++++++++++++++++++++++++++---- src/Gui/SoTextLabel.h | 4 ++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/Gui/SoTextLabel.cpp b/src/Gui/SoTextLabel.cpp index 9aaf958a81..a081055819 100644 --- a/src/Gui/SoTextLabel.cpp +++ b/src/Gui/SoTextLabel.cpp @@ -61,7 +61,6 @@ #include #include "SoTextLabel.h" -#include "BitmapFactory.h" #include "SoFCInteractiveElement.h" #include "Tools.h" @@ -383,6 +382,12 @@ SoFrameLabel::SoFrameLabel() //SO_NODE_ADD_FIELD(image, (SbVec2s(0,0), 0, NULL)); } +void SoFrameLabel::setIcon(const QPixmap &pixMap) +{ + iconPixmap = pixMap; +} + + void SoFrameLabel::notify(SoNotList * list) { SoField *f = list->getLastField(); @@ -425,7 +430,27 @@ void SoFrameLabel::drawImage() lines << line; } - QImage image(w+10,h+10,QImage::Format_ARGB32_Premultiplied); + int padding = 5; + + bool drawIcon = false; + QImage iconImg; + int widthIcon = 0; + int heightIcon = 0; + if (!iconPixmap.isNull()) { + drawIcon = true; + iconImg = iconPixmap.toImage(); + widthIcon = iconImg.width() + 2*padding; + heightIcon = iconImg.height() + 2*padding; + } + + int widthText = w + 2*padding; + int heightText = h + 2*padding; + int widthTotal = widthText + widthIcon; + int heightTotal = heightText > heightIcon ? heightText : heightIcon; + int paddingTextV = (heightTotal - h) / 2; + int paddingIconV = (heightTotal - iconImg.height()) / 2; + + QImage image(widthTotal, heightTotal, QImage::Format_ARGB32_Premultiplied); image.fill(0x00000000); QPainter painter(&image); painter.setRenderHint(QPainter::Antialiasing); @@ -435,10 +460,16 @@ void SoFrameLabel::drawImage() painter.setPen(QPen(QColor(0,0,127), 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush(QBrush(brush, Qt::SolidPattern)); - QRectF rectangle(0.0, 0.0, w+10, h+10); + QRectF rectangle(0.0, 0.0, widthTotal, heightTotal); painter.drawRoundedRect(rectangle, 5, 5); } + + if (drawIcon) { + painter.drawImage(QPoint(padding, paddingIconV), iconImg); + + } + painter.setPen(front); Qt::Alignment align = Qt::AlignVCenter; @@ -450,7 +481,7 @@ void SoFrameLabel::drawImage() align = Qt::AlignVCenter | Qt::AlignHCenter; QString text = lines.join(QLatin1String("\n")); painter.setFont(font); - painter.drawText(5,5,w,h,align,text); + painter.drawText(widthIcon + padding, paddingTextV, w, h, align, text); painter.end(); SoSFImage sfimage; diff --git a/src/Gui/SoTextLabel.h b/src/Gui/SoTextLabel.h index 6581455d6a..b91feb1980 100644 --- a/src/Gui/SoTextLabel.h +++ b/src/Gui/SoTextLabel.h @@ -34,6 +34,8 @@ #include #include +#include "BitmapFactory.h" + namespace Gui { @@ -107,6 +109,7 @@ public: static void initClass(); SoFrameLabel(); + void setIcon(const QPixmap &pixMap); SoMFString string; SoSFColor textColor; @@ -116,6 +119,7 @@ public: SoSFInt32 size; SoSFBool frame; //SoSFImage image; + QPixmap iconPixmap; protected: ~SoFrameLabel() override = default; From 381d10e30521ba081cd432fda3761b3af26bc930 Mon Sep 17 00:00:00 2001 From: hlorus <64740362+hlorus@users.noreply.github.com> Date: Mon, 13 May 2024 12:20:38 +0200 Subject: [PATCH 3/4] MeasureGui: Add icons Co-Authored-By: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com> --- src/Mod/Measure/App/MeasureArea.h | 2 +- src/Mod/Measure/App/MeasureLength.h | 2 +- src/Mod/Measure/App/MeasurePosition.h | 2 +- src/Mod/Measure/App/MeasureRadius.h | 2 +- src/Mod/Measure/Gui/AppMeasureGui.cpp | 5 + src/Mod/Measure/Gui/Resources/Measure.qrc | 9 + .../Gui/Resources/icons/Measurement-Angle.svg | 66 ++++ .../Gui/Resources/icons/Measurement-Area.svg | 188 ++++++++++ .../icons/Measurement-CenterOfMass.svg | 124 ++++++ .../Resources/icons/Measurement-Distance.svg | 58 +++ .../Gui/Resources/icons/Measurement-Group.svg | 354 ++++++++++++++++++ .../Resources/icons/Measurement-Inertia.svg | 62 +++ .../Resources/icons/Measurement-Position.svg | 106 ++++++ .../Resources/icons/Measurement-Radius.svg | 58 +++ .../Resources/icons/Measurement-Volume.svg | 118 ++++++ .../Measure/Gui/ViewProviderMeasureAngle.cpp | 2 +- .../Measure/Gui/ViewProviderMeasureBase.cpp | 12 +- src/Mod/Measure/Gui/ViewProviderMeasureBase.h | 46 +++ .../Gui/ViewProviderMeasureDistance.cpp | 2 +- 19 files changed, 1211 insertions(+), 7 deletions(-) create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Angle.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Area.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-CenterOfMass.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Distance.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Group.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Inertia.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Position.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Radius.svg create mode 100644 src/Mod/Measure/Gui/Resources/icons/Measurement-Volume.svg diff --git a/src/Mod/Measure/App/MeasureArea.h b/src/Mod/Measure/App/MeasureArea.h index 0fef35e382..d40fdae55e 100644 --- a/src/Mod/Measure/App/MeasureArea.h +++ b/src/Mod/Measure/App/MeasureArea.h @@ -58,7 +58,7 @@ public: void recalculateArea(); const char* getViewProviderName() const override { - return "MeasureGui::ViewProviderMeasure"; + return "MeasureGui::ViewProviderMeasureArea"; } static bool isValidSelection(const App::MeasureSelection& selection); diff --git a/src/Mod/Measure/App/MeasureLength.h b/src/Mod/Measure/App/MeasureLength.h index 6904205a7e..13f90bdf0d 100644 --- a/src/Mod/Measure/App/MeasureLength.h +++ b/src/Mod/Measure/App/MeasureLength.h @@ -53,7 +53,7 @@ public: void recalculateLength(); const char* getViewProviderName() const override { - return "MeasureGui::ViewProviderMeasure"; + return "MeasureGui::ViewProviderMeasureLength"; } static bool isValidSelection(const App::MeasureSelection& selection); diff --git a/src/Mod/Measure/App/MeasurePosition.h b/src/Mod/Measure/App/MeasurePosition.h index 054ff37021..735cc23ff1 100644 --- a/src/Mod/Measure/App/MeasurePosition.h +++ b/src/Mod/Measure/App/MeasurePosition.h @@ -56,7 +56,7 @@ public: void recalculatePosition(); const char* getViewProviderName() const override { - return "MeasureGui::ViewProviderMeasure"; + return "MeasureGui::ViewProviderMeasurePosition"; } static bool isValidSelection(const App::MeasureSelection& selection); diff --git a/src/Mod/Measure/App/MeasureRadius.h b/src/Mod/Measure/App/MeasureRadius.h index 9686e4a392..51869f88b4 100644 --- a/src/Mod/Measure/App/MeasureRadius.h +++ b/src/Mod/Measure/App/MeasureRadius.h @@ -54,7 +54,7 @@ public: App::DocumentObjectExecReturn *execute() override; const char* getViewProviderName() const override { - return "MeasureGui::ViewProviderMeasure"; + return "MeasureGui::ViewProviderMeasureRadius"; } void recalculateRadius(); diff --git a/src/Mod/Measure/Gui/AppMeasureGui.cpp b/src/Mod/Measure/Gui/AppMeasureGui.cpp index ec717a13bc..5b9043e1af 100644 --- a/src/Mod/Measure/Gui/AppMeasureGui.cpp +++ b/src/Mod/Measure/Gui/AppMeasureGui.cpp @@ -92,6 +92,11 @@ PyMOD_INIT_FUNC(MeasureGui) MeasureGui::ViewProviderMeasureAngle ::init(); MeasureGui::ViewProviderMeasureDistance ::init(); + MeasureGui::ViewProviderMeasureArea ::init(); + MeasureGui::ViewProviderMeasureLength ::init(); + MeasureGui::ViewProviderMeasurePosition ::init(); + MeasureGui::ViewProviderMeasureRadius ::init(); + // register preferences pages new Gui::PrefPageProducer(QT_TRANSLATE_NOOP("QObject", "Measure")); diff --git a/src/Mod/Measure/Gui/Resources/Measure.qrc b/src/Mod/Measure/Gui/Resources/Measure.qrc index 43a28bbdab..8baf77aaf0 100644 --- a/src/Mod/Measure/Gui/Resources/Measure.qrc +++ b/src/Mod/Measure/Gui/Resources/Measure.qrc @@ -2,5 +2,14 @@ icons/umf-measurement.svg icons/preferences-measure.svg + icons/Measurement-Angle.svg + icons/Measurement-Area.svg + icons/Measurement-CenterOfMass.svg + icons/Measurement-Distance.svg + icons/Measurement-Group.svg + icons/Measurement-Inertia.svg + icons/Measurement-Position.svg + icons/Measurement-Radius.svg + icons/Measurement-Volume.svg diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Angle.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Angle.svg new file mode 100644 index 0000000000..41489adf52 --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Angle.svg @@ -0,0 +1,66 @@ + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Area.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Area.svg new file mode 100644 index 0000000000..c1346b7400 --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Area.svg @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-CenterOfMass.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-CenterOfMass.svg new file mode 100644 index 0000000000..8dc38b0612 --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-CenterOfMass.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Distance.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Distance.svg new file mode 100644 index 0000000000..016c49397b --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Distance.svg @@ -0,0 +1,58 @@ + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Group.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Group.svg new file mode 100644 index 0000000000..0406f0836d --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Group.svg @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + 2015-07-04 + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Stock.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Inertia.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Inertia.svg new file mode 100644 index 0000000000..f0793e83be --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Inertia.svg @@ -0,0 +1,62 @@ + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Position.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Position.svg new file mode 100644 index 0000000000..e402ca8750 --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Position.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Radius.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Radius.svg new file mode 100644 index 0000000000..e32a7b666d --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Radius.svg @@ -0,0 +1,58 @@ + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + diff --git a/src/Mod/Measure/Gui/Resources/icons/Measurement-Volume.svg b/src/Mod/Measure/Gui/Resources/icons/Measurement-Volume.svg new file mode 100644 index 0000000000..1ded544f76 --- /dev/null +++ b/src/Mod/Measure/Gui/Resources/icons/Measurement-Volume.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/ + + + FreeCAD LGPL2+ + + + 2024 + + + + + + + + + + diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureAngle.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureAngle.cpp index 392ef01ce4..50630a3965 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureAngle.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureAngle.cpp @@ -243,7 +243,7 @@ PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureAngle, MeasureGui::ViewProviderMe ViewProviderMeasureAngle::ViewProviderMeasureAngle() { - sPixmap = "umf-measurement"; + sPixmap = "Measurement-Angle"; // Primary Arc Gui::ArcEngine *arcEngine = new Gui::ArcEngine(); diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp index a0bf468f27..fbcb9270b7 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp @@ -268,7 +268,11 @@ void ViewProviderMeasureBase::positionAnno(const Measure::MeasureBase* measureOb void ViewProviderMeasureBase::attach(App::DocumentObject *pcObj) { ViewProviderDocumentObject::attach(pcObj); - positionAnno(static_cast(pcObj)); + auto measureObj = static_cast(pcObj); + positionAnno(measureObj); + + // Set the icon + pLabel->setIcon(Gui::BitmapFactory().pixmapFromSvg(sPixmap, QSize(20, 20))); } @@ -595,3 +599,9 @@ void ViewProviderMeasureBase::show() ViewProviderDocumentObject::show(); } } + + +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureArea, MeasureGui::ViewProviderMeasure) +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureLength, MeasureGui::ViewProviderMeasure) +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasurePosition, MeasureGui::ViewProviderMeasure) +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureRadius, MeasureGui::ViewProviderMeasure) \ No newline at end of file diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h index 42832ca035..5b6f456d32 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h @@ -128,6 +128,7 @@ private: boost::signals2::connection _mVisibilityChangedConnection; }; + //NOLINTBEGIN class MeasureGuiExport ViewProviderMeasure : public MeasureGui::ViewProviderMeasureBase { @@ -153,6 +154,51 @@ private: SoIndexedLineSet * pLines; }; + +class ViewProviderMeasureArea : public ViewProviderMeasure +{ + PROPERTY_HEADER(MeasureGui::ViewProviderMeasureArea); + +public: + ViewProviderMeasureArea() { + sPixmap = "Measurement-Area"; + } +}; + + +class ViewProviderMeasureLength : public ViewProviderMeasure +{ + PROPERTY_HEADER(MeasureGui::ViewProviderMeasureLength); + +public: + ViewProviderMeasureLength() { + sPixmap = "Measurement-Distance"; + } +}; + + +class ViewProviderMeasurePosition : public ViewProviderMeasure +{ + PROPERTY_HEADER(MeasureGui::ViewProviderMeasurePosition); + +public: + ViewProviderMeasurePosition() { + sPixmap = "Measurement-Position"; + } +}; + + +class ViewProviderMeasureRadius : public ViewProviderMeasure +{ + PROPERTY_HEADER(MeasureGui::ViewProviderMeasureRadius); + +public: + ViewProviderMeasureRadius() { + sPixmap = "Measurement-Radius"; + } +}; + + } // namespace Gui #endif // GUI_VIEWPROVIDER_MEASUREMENTBASE_H diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp index 019932eebf..f3d944d0b1 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp @@ -116,7 +116,7 @@ Base::Vector3d ViewProviderMeasureDistance::getTextDirection(Base::Vector3d elem ViewProviderMeasureDistance::ViewProviderMeasureDistance() { - sPixmap = "umf-measurement"; + sPixmap = "Measurement-Distance"; // vert indexes used to create the annotation lines const size_t lineCount(3); From 3bb78b1873943dc2e5b717242dc887f7f98f5db5 Mon Sep 17 00:00:00 2001 From: hlorus <64740362+hlorus@users.noreply.github.com> Date: Tue, 14 May 2024 12:07:21 +0200 Subject: [PATCH 4/4] MeasureGui: Add UMF folder icon Co-Authored-By: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com> --- src/Gui/TaskMeasure.cpp | 2 +- src/Mod/Measure/Gui/AppMeasureGui.cpp | 1 + .../Measure/Gui/ViewProviderMeasureBase.cpp | 17 ++++++++++++++++- src/Mod/Measure/Gui/ViewProviderMeasureBase.h | 19 +++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/Gui/TaskMeasure.cpp b/src/Gui/TaskMeasure.cpp index 7d18b5593a..3b09f43e5f 100644 --- a/src/Gui/TaskMeasure.cpp +++ b/src/Gui/TaskMeasure.cpp @@ -259,7 +259,7 @@ void ensureGroup(Measure::MeasureBase* measurement) { App::Document* doc = App::GetApplication().getActiveDocument(); App::DocumentObject* obj = doc->getObject(measurementGroupName); if (!obj || !obj->isValid()) { - obj = doc->addObject("App::DocumentObjectGroup", measurementGroupName); + obj = doc->addObject("App::DocumentObjectGroup", measurementGroupName, true, "MeasureGui::ViewProviderMeasureGroup"); } auto group = static_cast(obj); diff --git a/src/Mod/Measure/Gui/AppMeasureGui.cpp b/src/Mod/Measure/Gui/AppMeasureGui.cpp index 5b9043e1af..4e109250c6 100644 --- a/src/Mod/Measure/Gui/AppMeasureGui.cpp +++ b/src/Mod/Measure/Gui/AppMeasureGui.cpp @@ -87,6 +87,7 @@ PyMOD_INIT_FUNC(MeasureGui) // instantiating the commands CreateMeasureCommands(); + MeasureGui::ViewProviderMeasureGroup ::init(); MeasureGui::ViewProviderMeasureBase ::init(); MeasureGui::ViewProviderMeasure ::init(); MeasureGui::ViewProviderMeasureAngle ::init(); diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp index fbcb9270b7..167daef964 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -50,10 +51,24 @@ #include #include "ViewProviderMeasureBase.h" - using namespace MeasureGui; using namespace Measure; + +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureGroup, Gui::ViewProviderDocumentObjectGroup) + +ViewProviderMeasureGroup::ViewProviderMeasureGroup() +{} + +ViewProviderMeasureGroup::~ViewProviderMeasureGroup() = default; + +QIcon ViewProviderMeasureGroup::getIcon() const +{ + return Gui::BitmapFactory().pixmap("Measurement-Group.svg"); +} + + + //NOLINTBEGIN PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureBase, Gui::ViewProviderDocumentObject) //NOLINTEND diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h index 5b6f456d32..79d87593cc 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -49,6 +50,24 @@ class SoTranslate2Dragger; namespace MeasureGui { + +class MeasureGuiExport ViewProviderMeasureGroup : public Gui::ViewProviderDocumentObjectGroup +{ + PROPERTY_HEADER_WITH_OVERRIDE(MeasureGui::ViewProviderMeasureGroup); + +public: + ViewProviderMeasureGroup(); + ~ViewProviderMeasureGroup() override; + + bool allowOverride(const App::DocumentObject &) const override { + return true; + } + + QIcon getIcon() const override; +}; + + + //NOLINTBEGIN class MeasureGuiExport ViewProviderMeasureBase :public Gui::ViewProviderDocumentObject {