diff --git a/src/Mod/TechDraw/App/CMakeLists.txt b/src/Mod/TechDraw/App/CMakeLists.txt index 375c63112..2125ce6bb 100644 --- a/src/Mod/TechDraw/App/CMakeLists.txt +++ b/src/Mod/TechDraw/App/CMakeLists.txt @@ -32,6 +32,7 @@ generate_from_xml(DrawTemplatePy) generate_from_xml(DrawParametricTemplatePy) generate_from_xml(DrawSVGTemplatePy) generate_from_xml(DrawViewSymbolPy) +generate_from_xml(DrawViewClipPy) SET(Draw_SRCS DrawPage.cpp @@ -95,6 +96,8 @@ SET(Python_SRCS DrawParametricTemplatePyImp.cpp DrawSVGTemplatePy.xml DrawSVGTemplatePyImp.cpp + DrawViewClipPy.xml + DrawViewClipPyImp.cpp ) SOURCE_GROUP("Mod" FILES ${TechDraw_SRCS}) diff --git a/src/Mod/TechDraw/App/DrawViewClip.cpp b/src/Mod/TechDraw/App/DrawViewClip.cpp index 315943d79..b0f12c194 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.cpp +++ b/src/Mod/TechDraw/App/DrawViewClip.cpp @@ -50,7 +50,7 @@ using namespace std; PROPERTY_SOURCE(TechDraw::DrawViewClip, TechDraw::DrawView) -DrawViewClip::DrawViewClip(void) +DrawViewClip::DrawViewClip(void) { static const char *group = "Clip Group"; //App::PropertyType hidden = (App::PropertyType)(App::Prop_Hidden); @@ -72,11 +72,11 @@ DrawViewClip::DrawViewClip(void) //ScaleType.StatusBits.set(bitReadOnly, true); //ScaleType.StatusBits.set(bitHidden, true); //Scale.StatusBits.set(bitReadOnly, true); - //Scale.StatusBits.set(bitHidden,true); + //Scale.StatusBits.set(bitHidden,true); ScaleType.setStatus(App::Property::ReadOnly,true); ScaleType.setStatus(App::Property::Hidden,true); Scale.setStatus(App::Property::ReadOnly,true); - Scale.setStatus(App::Property::Hidden,true); + Scale.setStatus(App::Property::Hidden,true); } DrawViewClip::~DrawViewClip() @@ -164,7 +164,7 @@ namespace App { /// @cond DOXERR PROPERTY_SOURCE_TEMPLATE(TechDraw::DrawViewClipPython, TechDraw::DrawViewClip) template<> const char* TechDraw::DrawViewClipPython::getViewProviderName(void) const { - return "TechDrawGui::ViewProviderDrawClip"; + return "TechDrawGui::ViewProviderViewClip"; } /// @endcond diff --git a/src/Mod/TechDraw/App/DrawViewClip.h b/src/Mod/TechDraw/App/DrawViewClip.h index 1672433ab..b47a2fb2b 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.h +++ b/src/Mod/TechDraw/App/DrawViewClip.h @@ -64,7 +64,7 @@ public: /// returns the type name of the ViewProvider virtual const char* getViewProviderName(void) const { - return "TechDrawGui::ViewProviderDrawClip"; + return "TechDrawGui::ViewProviderViewClip"; } std::vector getChildViewNames(); diff --git a/src/Mod/TechDraw/App/DrawViewClipPy.xml b/src/Mod/TechDraw/App/DrawViewClipPy.xml new file mode 100644 index 000000000..434524878 --- /dev/null +++ b/src/Mod/TechDraw/App/DrawViewClipPy.xml @@ -0,0 +1,33 @@ + + + + + + Feature for creating and manipulating Technical Drawing Clip Views + + + + addView(DrawView) - Add a View to this ClipView + + + + + removeView(DrawView) - Remove specified View to this ClipView + + + + + getChildViewNames() - get a list of the DrawViews in this ClipView + + + + + diff --git a/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp new file mode 100644 index 000000000..b68c8424b --- /dev/null +++ b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp @@ -0,0 +1,100 @@ + +#include "PreCompiled.h" +#include +#include + +#include "Mod/TechDraw/App/DrawViewClip.h" +#include "Mod/TechDraw/App/DrawView.h" +#include "DrawViewPy.h" + +// inclusion of the generated files (generated out of DrawViewClipPy.xml) +#include "DrawViewClipPy.h" +#include "DrawViewClipPy.cpp" + +using namespace TechDraw; + +// returns a string which represents the object e.g. when printed in python +std::string DrawViewClipPy::representation(void) const +{ + return std::string(""); +} + +PyObject* DrawViewClipPy::addView(PyObject* args) +{ + //this implements iRC = pyClip.addView(pyView) -or- + //doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); + PyObject *pcDocObj; + + if (!PyArg_ParseTuple(args, "O!", &(App::DocumentObjectPy::Type), &pcDocObj)) { + Base::Console().Error("Error: DrawViewClipPy::addView - Bad Arg - not DocumentObject\n"); + return NULL; + //TODO: sb PyErr?? + //PyErr_SetString(PyExc_TypeError,"addView expects a DrawView"); + //return -1; + } + + DrawViewClip* clip = getDrawViewClipPtr(); //get DrawViewClip for pyClip + //TODO: argument 1 arrives as "DocumentObjectPy", not "DrawViewPy" + //how to validate that obj is DrawView before use?? + DrawViewPy* pyView = static_cast(pcDocObj); + DrawView* view = pyView->getDrawViewPtr(); //get DrawView for pyView + + clip->addView(view); + Py_Return; +} + +PyObject* DrawViewClipPy::removeView(PyObject* args) +{ + //this implements iRC = pyClip.removeView(pyView) -or- + //doCommand(Doc,"App.activeDocument().%s.removeView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); + PyObject *pcDocObj; + + if (!PyArg_ParseTuple(args, "O!", &(App::DocumentObjectPy::Type), &pcDocObj)) { + Base::Console().Error("Error: DrawViewClipPy::removeView - Bad Arg - not DocumentObject\n"); + return NULL; + //TODO: sb PyErr?? + //PyErr_SetString(PyExc_TypeError,"removeView expects a DrawView"); + //return -1; + } + + DrawViewClip* clip = getDrawViewClipPtr(); //get DrawViewClip for pyClip + //TODO: argument 1 arrives as "DocumentObjectPy", not "DrawViewPy" + //how to validate that obj is DrawView before use?? + DrawViewPy* pyView = static_cast(pcDocObj); + DrawView* view = pyView->getDrawViewPtr(); //get DrawView for pyView + + clip->removeView(view); + Py_Return; +} + +// std::vector getChildViewNames(); +PyObject* DrawViewClipPy::getChildViewNames(PyObject* args) +{ + if (!PyArg_ParseTuple(args, "")) + return 0; + + DrawViewClip* clip = getDrawViewClipPtr(); + std::vector strings = clip->getChildViewNames(); + int stringSize = strings.size(); + + PyObject* result = PyList_New(stringSize); + + std::vector::iterator it = strings.begin(); + for( ; it != strings.end(); it++) { + PyObject* pString = PyString_FromString(it->c_str()); //TODO: unicode & py3 + int rc = PyList_Append(result, pString); + } + +// PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + return result; +} + +PyObject *DrawViewClipPy::getCustomAttributes(const char* attr) const +{ + return 0; +} + +int DrawViewClipPy::setCustomAttributes(const char* attr, PyObject *obj) +{ + return 0; +} diff --git a/src/Mod/TechDraw/App/DrawViewDimension.h b/src/Mod/TechDraw/App/DrawViewDimension.h index 90c3b947c..e16c3fd0b 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.h +++ b/src/Mod/TechDraw/App/DrawViewDimension.h @@ -58,6 +58,8 @@ public: App::PropertyBool CentreLines; App::PropertyString FormatSpec; + //TODO: do we need a property for the actual dimension value? how else to access from Py? + short mustExecute() const; bool hasReferences(void) const; diff --git a/src/Mod/TechDraw/App/DrawViewPart.h b/src/Mod/TechDraw/App/DrawViewPart.h index f33ee7496..507c7b25a 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.h +++ b/src/Mod/TechDraw/App/DrawViewPart.h @@ -64,6 +64,8 @@ public: //int removeHatch(App::DocumentObject *docObj); std::vector getHatches(void) const; + //TODO: are there use-cases for Python access to TechDrawGeometry??? + const std::vector & getVertexGeometry() const; const std::vector & getEdgeGeometry() const; const std::vector & getFaceGeometry() const; diff --git a/src/Mod/TechDraw/App/DrawViewPy.xml b/src/Mod/TechDraw/App/DrawViewPy.xml index 224650122..750819f6b 100644 --- a/src/Mod/TechDraw/App/DrawViewPy.xml +++ b/src/Mod/TechDraw/App/DrawViewPy.xml @@ -11,7 +11,7 @@ FatherNamespace="App"> - Feature for creating and manipulating Drawing Views + Feature for creating and manipulating Technical Drawing Views diff --git a/src/Mod/TechDraw/App/DrawViewSymbol.cpp b/src/Mod/TechDraw/App/DrawViewSymbol.cpp index 12177784a..950564edd 100644 --- a/src/Mod/TechDraw/App/DrawViewSymbol.cpp +++ b/src/Mod/TechDraw/App/DrawViewSymbol.cpp @@ -88,7 +88,7 @@ App::DocumentObjectExecReturn *DrawViewSymbol::execute(void) { std::string svg = Symbol.getValue(); const std::vector& editText = EditableTexts.getValues(); - + if (!editText.empty()) { boost::regex e1 ("(.*?)"); string::const_iterator begin, end; @@ -115,7 +115,8 @@ App::DocumentObjectExecReturn *DrawViewSymbol::execute(void) newsvg.insert(newsvg.end(), begin, end); svg = newsvg; } - + //TODO: shouldn't there be a Symbol.setValue(svg) here??? -wf +#if 0 std::stringstream result; result << " ViewProviderDrawingClip::getDisplayModes(void) const +std::vector ViewProviderViewClip::getDisplayModes(void) const { // get the modes of the father std::vector StrList; return StrList; } -std::vector ViewProviderDrawingClip::claimChildren(void) const +std::vector ViewProviderViewClip::claimChildren(void) const { // Collect any child views // for Clip, valid children are any View in Views @@ -89,7 +89,7 @@ std::vector ViewProviderDrawingClip::claimChildren(void) c return views; } -void ViewProviderDrawingClip::show(void) +void ViewProviderViewClip::show(void) { ViewProviderDrawingView::show(); @@ -106,7 +106,7 @@ void ViewProviderDrawingClip::show(void) } } -void ViewProviderDrawingClip::hide(void) +void ViewProviderViewClip::hide(void) { ViewProviderDrawingView::hide(); @@ -123,26 +123,26 @@ void ViewProviderDrawingClip::hide(void) } } -bool ViewProviderDrawingClip::isShow(void) const +bool ViewProviderViewClip::isShow(void) const { return Visibility.getValue(); } -void ViewProviderDrawingClip::startRestoring() +void ViewProviderViewClip::startRestoring() { // do nothing } -void ViewProviderDrawingClip::finishRestoring() +void ViewProviderViewClip::finishRestoring() { // do nothing } -void ViewProviderDrawingClip::updateData(const App::Property*) +void ViewProviderViewClip::updateData(const App::Property*) { } -TechDraw::DrawViewClip* ViewProviderDrawingClip::getObject() const +TechDraw::DrawViewClip* ViewProviderViewClip::getObject() const { return dynamic_cast(pcObject); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h index d832b6b31..d9006e092 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h @@ -34,15 +34,15 @@ namespace TechDraw{ namespace TechDrawGui { -class TechDrawGuiExport ViewProviderDrawingClip : public ViewProviderDrawingView +class TechDrawGuiExport ViewProviderViewClip : public ViewProviderDrawingView { - PROPERTY_HEADER(TechDrawGui::ViewProviderDrawingClip); + PROPERTY_HEADER(TechDrawGui::ViewProviderViewClip); public: /// constructor - ViewProviderDrawingClip(); + ViewProviderViewClip(); /// destructor - virtual ~ViewProviderDrawingClip(); + virtual ~ViewProviderViewClip(); virtual void attach(App::DocumentObject *); @@ -70,4 +70,3 @@ public: #endif // DRAWINGGUI_VIEWPROVIDERCLIP_H -