From 6d07fec2194de110279ee67eeb45ffb13b34801d Mon Sep 17 00:00:00 2001 From: WandererFan Date: Sat, 23 Jan 2016 16:05:34 -0500 Subject: [PATCH] Python functionality for ViewPart and ViewClip --- src/Mod/TechDraw/App/CMakeLists.txt | 3 +++ src/Mod/TechDraw/App/DrawView.cpp | 11 +++++++++++ src/Mod/TechDraw/App/DrawView.h | 2 ++ src/Mod/TechDraw/App/DrawViewClip.cpp | 12 ++++++++++++ src/Mod/TechDraw/App/DrawViewClip.h | 3 +++ src/Mod/TechDraw/App/DrawViewPart.cpp | 11 +++++++++++ src/Mod/TechDraw/App/DrawViewPart.h | 2 ++ src/Mod/TechDraw/Gui/Command.cpp | 17 ++++++----------- 8 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/Mod/TechDraw/App/CMakeLists.txt b/src/Mod/TechDraw/App/CMakeLists.txt index 2125ce6bb..74f4b419c 100644 --- a/src/Mod/TechDraw/App/CMakeLists.txt +++ b/src/Mod/TechDraw/App/CMakeLists.txt @@ -27,6 +27,7 @@ set(TechDrawLIBS generate_from_xml(DrawPagePy) generate_from_xml(DrawViewPy) +generate_from_xml(DrawViewPartPy) generate_from_xml(DrawViewSymbolPy) generate_from_xml(DrawTemplatePy) generate_from_xml(DrawParametricTemplatePy) @@ -88,6 +89,8 @@ SET(Python_SRCS DrawPagePyImp.cpp DrawViewPy.xml DrawViewPyImp.cpp + DrawViewPartPy.xml + DrawViewPartPyImp.cpp DrawViewSymbolPy.xml DrawViewSymbolPyImp.cpp DrawTemplatePy.xml diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 192024316..c900092ec 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -41,6 +41,8 @@ #include "DrawViewCollection.h" #include "DrawViewClip.h" +#include "DrawViewPy.h" // generated from DrawViewPy.xml + using namespace TechDraw; @@ -170,6 +172,15 @@ bool DrawView::isInClip() return false; } +PyObject *DrawView::getPyObject(void) +{ + if (PythonObject.is(Py::_None())) { + // ref counter is set to 1 + PythonObject = Py::Object(new DrawViewPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + // Python Drawing feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 6170ef480..4e82832e5 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -65,6 +65,8 @@ public: virtual const char* getViewProviderName(void) const { return "TechDrawGui::ViewProviderDrawingView"; } + //return PyObject as DrawViewPy + virtual PyObject *getPyObject(void); DrawPage* findParentPage() const; diff --git a/src/Mod/TechDraw/App/DrawViewClip.cpp b/src/Mod/TechDraw/App/DrawViewClip.cpp index b0f12c194..27d286a61 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.cpp +++ b/src/Mod/TechDraw/App/DrawViewClip.cpp @@ -40,6 +40,8 @@ #include "DrawView.h" #include "DrawPage.h" +#include "DrawViewClipPy.h" // generated from DrawViewClipPy.xml + using namespace TechDraw; using namespace std; @@ -158,6 +160,16 @@ std::vector DrawViewClip::getChildViewNames() return childNames; } +PyObject *DrawViewClip::getPyObject(void) +{ + if (PythonObject.is(Py::_None())) { + // ref counter is set to 1 + PythonObject = Py::Object(new DrawViewClipPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + + // Python Drawing feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/TechDraw/App/DrawViewClip.h b/src/Mod/TechDraw/App/DrawViewClip.h index b47a2fb2b..67415c90b 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.h +++ b/src/Mod/TechDraw/App/DrawViewClip.h @@ -66,6 +66,9 @@ public: virtual const char* getViewProviderName(void) const { return "TechDrawGui::ViewProviderViewClip"; } + //return PyObject as DrawViewClipPy + virtual PyObject *getPyObject(void); + std::vector getChildViewNames(); diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 287d34bf4..dd23815f0 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -66,6 +66,8 @@ #include "DrawHatch.h" //#include "DrawViewDimension.h" +#include "DrawViewPartPy.h" // generated from DrawViewPartPy.xml + using namespace TechDraw; using namespace std; @@ -456,6 +458,15 @@ void DrawViewPart::dumpVertexRefs(char* text) const } } +PyObject *DrawViewPart::getPyObject(void) +{ + if (PythonObject.is(Py::_None())) { + // ref counter is set to 1 + PythonObject = Py::Object(new DrawViewPartPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + // Python Drawing feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/TechDraw/App/DrawViewPart.h b/src/Mod/TechDraw/App/DrawViewPart.h index 507c7b25a..0b6e12333 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.h +++ b/src/Mod/TechDraw/App/DrawViewPart.h @@ -101,6 +101,8 @@ public: virtual const char* getViewProviderName(void) const { return "TechDrawGui::ViewProviderViewPart"; } + //return PyObject as DrawViewPartPy + virtual PyObject *getPyObject(void); void dumpVertexRefs(char* text) const; diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index fbfaf51a9..d8281cc0e 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -474,10 +474,7 @@ void CmdTechDrawAnnotation::activated(int iMsg) doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewAnnotation','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.X = 10.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Y = 10.0",FeatName.c_str()); - doCommand(Doc,"App.activeDocument().%s.Scale = 7.0",FeatName.c_str()); - //TechDraw::DrawPage *page = dynamic_cast(pages.front()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); - //page->addView(page->getDocument()->getObject(FeatName.c_str())); updateActive(); commitCommand(); } @@ -525,9 +522,7 @@ void CmdTechDrawClip::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Height = 30.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Width = 30.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.ShowLabels = False",FeatName.c_str()); - //TechDraw::DrawPage *page = dynamic_cast(pages.front()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); - //page->addView(page->getDocument()->getObject(FeatName.c_str())); updateActive(); commitCommand(); } @@ -594,9 +589,10 @@ void CmdTechDrawClipPlus::activated(int iMsg) return; } + std::string ClipName = clip->getNameInDocument(); + std::string ViewName = view->getNameInDocument(); openCommand("ClipPlus"); - //TODO: implement Py addView for Clip - clip->addView(view); + doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); updateActive(); commitCommand(); } @@ -662,9 +658,10 @@ void CmdTechDrawClipMinus::activated(int iMsg) return; } + std::string ClipName = clip->getNameInDocument(); + std::string ViewName = view->getNameInDocument(); openCommand("ClipMinus"); - //TODO: implement Py removeView for Clip - clip->removeView(view); + doCommand(Doc,"App.activeDocument().%s.removeView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); updateActive(); commitCommand(); } @@ -718,9 +715,7 @@ void CmdTechDrawSymbol::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.X = 10.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Y = 10.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Symbol = svg",FeatName.c_str()); - //TechDraw::DrawPage *page = dynamic_cast(pages.front()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); - //page->addView(page->getDocument()->getObject(FeatName.c_str())); updateActive(); commitCommand(); }