From bfe542fd67b222f073dbf860f80b9793edb4fc00 Mon Sep 17 00:00:00 2001 From: donovaly Date: Wed, 18 Mar 2020 22:45:19 +0100 Subject: [PATCH] [TD] use enum for line style see https://forum.freecadweb.org/viewtopic.php?f=10&t=44268#p377798 --- src/Mod/TechDraw/Gui/ViewProviderLeader.cpp | 27 +++++++++++++++------ src/Mod/TechDraw/Gui/ViewProviderLeader.h | 4 ++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp index e6688706dc..8016becb94 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp @@ -63,11 +63,16 @@ using namespace TechDrawGui; -// there are only 5 line styles -App::PropertyIntegerConstraint::Constraints ViewProviderLeader::LineStyleRange = { 0, 5, 1 }; - PROPERTY_SOURCE(TechDrawGui::ViewProviderLeader, TechDrawGui::ViewProviderDrawingView) +const char* ViewProviderLeader::LineStyleEnums[] = { "NoLine", + "Continuous", + "Dash", + "Dot", + "DashDot", + "DashDotDot", + NULL }; + //************************************************************************** // Construction/Destruction @@ -78,10 +83,9 @@ ViewProviderLeader::ViewProviderLeader() static const char *group = "Line Format"; ADD_PROPERTY_TYPE(LineWidth,(getDefLineWeight()),group,(App::PropertyType)(App::Prop_None),"Line width"); - ADD_PROPERTY_TYPE(LineStyle,(1),group,(App::PropertyType)(App::Prop_None),"Line style index"); - ADD_PROPERTY_TYPE(Color,(getDefLineColor()),group,App::Prop_None,"The color of the Markup"); - - LineStyle.setConstraints(&LineStyleRange); + LineStyle.setEnums(LineStyleEnums); + ADD_PROPERTY_TYPE(LineStyle,(1),group,(App::PropertyType)(App::Prop_None),"Line style"); + ADD_PROPERTY_TYPE(Color,(getDefLineColor()),group,App::Prop_None,"Color of the Markup"); } ViewProviderLeader::~ViewProviderLeader() @@ -191,7 +195,6 @@ TechDraw::DrawLeaderLine* ViewProviderLeader::getFeature() const return dynamic_cast(pcObject); } - double ViewProviderLeader::getDefLineWeight(void) { double result = 0.0; @@ -230,6 +233,14 @@ void ViewProviderLeader::handleChangedPropertyType(Base::XMLReader &reader, cons LineStyleProperty.Restore(reader); LineStyle.setValue(LineStyleProperty.getValue()); } + + // property LineStyle had the App::PropertyIntegerConstraint and was changed to App::PropertyEnumeration + if (prop == &LineStyle && strcmp(TypeName, "App::PropertyIntegerConstraint") == 0) { + App::PropertyIntegerConstraint LineStyleProperty; + // restore the PropertyIntegerConstraint to be able to set its value + LineStyleProperty.Restore(reader); + LineStyle.setValue(LineStyleProperty.getValue()); + } } bool ViewProviderLeader::onDelete(const std::vector &) diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.h b/src/Mod/TechDraw/Gui/ViewProviderLeader.h index 8ac982f2e2..66973e49fe 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.h +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.h @@ -49,7 +49,7 @@ public: virtual ~ViewProviderLeader(); App::PropertyLength LineWidth; - App::PropertyIntegerConstraint LineStyle; + App::PropertyEnumeration LineStyle; App::PropertyColor Color; virtual void attach(App::DocumentObject *); @@ -64,6 +64,8 @@ public: virtual bool onDelete(const std::vector &); virtual bool canDelete(App::DocumentObject* obj) const; + static const char* LineStyleEnums[]; + std::vector claimChildren(void) const; virtual TechDraw::DrawLeaderLine* getViewObject() const;