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);