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 @@
+
+
+
+
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 @@
+
+
+
+
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 @@
+
+
+
+
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 @@
+
+
+
+
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 @@
+
+
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 @@
+
+
+
+
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 @@
+
+
+
+
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 @@
+
+
+
+
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 @@
+
+
+
+
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
{