From cbca02f7f30df5f0d58f760853c20d10d60cbec0 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Tue, 13 Feb 2018 19:26:21 -0500 Subject: [PATCH] HatchColor & HatchScale prop to Gui side --- src/Mod/TechDraw/App/DrawHatch.cpp | 20 +++-------- src/Mod/TechDraw/App/DrawHatch.h | 5 --- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 9 +++-- src/Mod/TechDraw/Gui/ViewProviderHatch.cpp | 39 +++++++++++++++++++--- src/Mod/TechDraw/Gui/ViewProviderHatch.h | 9 ++++- 5 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawHatch.cpp b/src/Mod/TechDraw/App/DrawHatch.cpp index b7d715af74..57b9dcb37c 100644 --- a/src/Mod/TechDraw/App/DrawHatch.cpp +++ b/src/Mod/TechDraw/App/DrawHatch.cpp @@ -50,30 +50,20 @@ using namespace TechDraw; using namespace std; -App::PropertyFloatConstraint::Constraints DrawHatch::scaleRange = {Precision::Confusion(), - std::numeric_limits::max(), - pow(10,- Base::UnitsApi::getDecimals())}; - PROPERTY_SOURCE(TechDraw::DrawHatch, App::DocumentObject) DrawHatch::DrawHatch(void) { static const char *vgroup = "Hatch"; - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Colors"); - App::Color fcColor; - fcColor.setPackedValue(hGrp->GetUnsigned("Hatch", 0x00FF0000)); ADD_PROPERTY_TYPE(DirProjection ,(0,0,1.0) ,vgroup,App::Prop_None,"Projection direction when Hatch was defined"); //sb RO? ADD_PROPERTY_TYPE(Source,(0),vgroup,(App::PropertyType)(App::Prop_None),"The View + Face to be hatched"); ADD_PROPERTY_TYPE(HatchPattern ,(""),vgroup,App::Prop_None,"The hatch pattern file for this area"); - ADD_PROPERTY_TYPE(HatchColor,(fcColor),vgroup,App::Prop_None,"The color of the hatch pattern"); - ADD_PROPERTY_TYPE(HatchScale,(1.0),vgroup,App::Prop_None,"Hatch pattern size adjustment"); - HatchScale.setConstraints(&scaleRange); + DirProjection.setStatus(App::Property::ReadOnly,true); - hGrp = App::GetApplication().GetUserParameter() + Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Files"); std::string defaultDir = App::Application::getResourceDir() + "Mod/Drawing/patterns/"; @@ -94,10 +84,8 @@ DrawHatch::~DrawHatch() void DrawHatch::onChanged(const App::Property* prop) { - if (prop == &Source || - prop == &HatchPattern || //sb VP property? - prop == &HatchScale || - prop == &HatchColor) { + if ((prop == &Source) || + (prop == &HatchPattern)) { if (!isRestoring()) { DrawHatch::execute(); } diff --git a/src/Mod/TechDraw/App/DrawHatch.h b/src/Mod/TechDraw/App/DrawHatch.h index b7c83123a8..d4419ee729 100644 --- a/src/Mod/TechDraw/App/DrawHatch.h +++ b/src/Mod/TechDraw/App/DrawHatch.h @@ -43,10 +43,6 @@ public: App::PropertyVector DirProjection; //Source is only valid for original projection? App::PropertyLinkSub Source; //the dvp & face this hatch belongs to App::PropertyFile HatchPattern; - App::PropertyColor HatchColor; - App::PropertyFloatConstraint HatchScale; - - //short mustExecute() const; virtual App::DocumentObjectExecReturn *execute(void); @@ -62,7 +58,6 @@ protected: void onChanged(const App::Property* prop); private: - static App::PropertyFloatConstraint::Constraints scaleRange; }; diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 98cf8e5e58..2ee2659bf8 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -70,6 +70,7 @@ #include "QGIMatting.h" #include "QGIViewPart.h" #include "ViewProviderGeomHatch.h" +#include "ViewProviderHatch.h" using namespace TechDrawGui; using namespace TechDrawGeometry; @@ -412,8 +413,12 @@ void QGIViewPart::drawViewPart() newFace->isHatched(true); newFace->setFillMode(QGIFace::FromFile); newFace->setHatchFile(fHatch->HatchPattern.getValue()); - newFace->setHatchScale(fHatch->HatchScale.getValue()); - newFace->setHatchColor(fHatch->HatchColor.getValue()); + Gui::ViewProvider* gvp = QGIView::getViewProvider(fHatch); + ViewProviderHatch* hatchVp = dynamic_cast(gvp); + if (hatchVp != nullptr) { + newFace->setHatchScale(hatchVp->HatchScale.getValue()); + newFace->setHatchColor(hatchVp->HatchColor.getValue()); + } } } bool drawEdges = getFaceEdgesPref(); diff --git a/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp b/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp index 8092a05653..da2c94194c 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp @@ -25,24 +25,33 @@ #include "PreCompiled.h" #ifndef _PreComp_ +#include + #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... #include #include -#include -#include +//#include +//#include +#include #include #include #include -#include -#include +//#include +//#include #include +#include #include "ViewProviderHatch.h" using namespace TechDrawGui; +App::PropertyFloatConstraint::Constraints ViewProviderHatch::scaleRange = {Precision::Confusion(), + std::numeric_limits::max(), + pow(10,- Base::UnitsApi::getDecimals())}; + + PROPERTY_SOURCE(TechDrawGui::ViewProviderHatch, Gui::ViewProviderDocumentObject) //************************************************************************** @@ -51,6 +60,16 @@ PROPERTY_SOURCE(TechDrawGui::ViewProviderHatch, Gui::ViewProviderDocumentObject) ViewProviderHatch::ViewProviderHatch() { sPixmap = "TechDraw_Tree_Hatch"; + + static const char *vgroup = "Hatch"; + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Colors"); + App::Color fcColor; + fcColor.setPackedValue(hGrp->GetUnsigned("Hatch", 0x00FF0000)); + + ADD_PROPERTY_TYPE(HatchColor,(fcColor),vgroup,App::Prop_None,"The color of the hatch pattern"); + ADD_PROPERTY_TYPE(HatchScale,(1.0),vgroup,App::Prop_None,"Hatch pattern size adjustment"); + HatchScale.setConstraints(&scaleRange); } ViewProviderHatch::~ViewProviderHatch() @@ -76,9 +95,19 @@ std::vector ViewProviderHatch::getDisplayModes(void) const return StrList; } +void ViewProviderHatch::onChanged(const App::Property* prop) +{ + if ((prop == &HatchScale) || + (prop == &HatchColor)) { + TechDraw::DrawViewPart* parent = getViewObject()->getSourceView(); + if (parent) { + parent->requestPaint(); + } + } +} void ViewProviderHatch::updateData(const App::Property* prop) { - Gui::ViewProviderDocumentObject::updateData(prop); + Gui::ViewProviderDocumentObject::updateData(prop); } TechDraw::DrawHatch* ViewProviderHatch::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderHatch.h b/src/Mod/TechDraw/Gui/ViewProviderHatch.h index 324b12a215..5686dcba88 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderHatch.h +++ b/src/Mod/TechDraw/Gui/ViewProviderHatch.h @@ -25,7 +25,7 @@ #ifndef DRAWINGGUI_VIEWPROVIDERHATCH_H #define DRAWINGGUI_VIEWPROVIDERHATCH_H -#include +#include namespace TechDraw{ class DrawHatch; @@ -44,15 +44,22 @@ public: /// destructor virtual ~ViewProviderHatch(); + App::PropertyColor HatchColor; + App::PropertyFloatConstraint HatchScale; virtual void attach(App::DocumentObject *); virtual void setDisplayMode(const char* ModeName); virtual bool useNewSelectionModel(void) const {return false;} /// returns a list of all possible modes virtual std::vector getDisplayModes(void) const; + virtual void onChanged(const App::Property* prop); virtual void updateData(const App::Property*); TechDraw::DrawHatch* getViewObject() const; + +private: + static App::PropertyFloatConstraint::Constraints scaleRange; + }; } // namespace TechDrawGui