From 5a7dd5d123ff98bb9666c0946aa4755838dc687f Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 21 Jan 2016 13:32:36 -0500 Subject: [PATCH] implement page.addView for Python --- src/Mod/TechDraw/App/DrawPagePyImp.cpp | 25 ++++++++++++------ src/Mod/TechDraw/Gui/Command.cpp | 35 +++++++++++++++----------- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawPagePyImp.cpp b/src/Mod/TechDraw/App/DrawPagePyImp.cpp index 3574a1dae..e4427b783 100644 --- a/src/Mod/TechDraw/App/DrawPagePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawPagePyImp.cpp @@ -1,5 +1,6 @@ #include "PreCompiled.h" +#include #include #include "Mod/TechDraw/App/DrawPage.h" @@ -20,17 +21,27 @@ std::string DrawPagePy::representation(void) const PyObject* DrawPagePy::addView(PyObject* args) { - PyObject *pcFeatView; + //this implements iRC = pyPage.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!", &(TechDraw::DrawViewPy::Type), &pcFeatView)) { // convert args: Python->C - Base::Console().Error("Error: DrawPagePy::addView - Bad Args\n"); - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "O!", &(App::DocumentObjectPy::Type), &pcDocObj)) { + Base::Console().Error("Error: DrawPagePy::addView - Bad Arg - not DocumentObject\n"); + return NULL; + //TODO: sb PyErr?? + //PyErr_SetString(PyExc_TypeError,"addView expects a DrawView"); + //return -1; } - //page->addView(page->getDocument()->getObject(FeatName.c_str())); + DrawPage* page = getDrawPagePtr(); //get DrawPage for pyPage + //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 - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); - return 0; + int rc = page->addView(view); + + return PyInt_FromLong((long) rc); } // double getPageWidth() const; diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 7081313b3..346bd4f87 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -295,10 +295,10 @@ void CmdTechDrawNewView::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Y = %e",FeatName.c_str(), newY); doCommand(Doc,"App.activeDocument().%s.Scale = %e",FeatName.c_str(), newScale); doCommand(Doc,"App.activeDocument().%s.Rotation = %e",FeatName.c_str(), newRotation); - //doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",PageName.c_str(),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()); + //TechDraw::DrawPage *page = dynamic_cast(pages.front()); //TODO: page->addView sb Python function?? - page->addView(page->getDocument()->getObject(FeatName.c_str())); + //page->addView(page->getDocument()->getObject(FeatName.c_str())); } updateActive(); commitCommand(); @@ -348,9 +348,9 @@ void CmdTechDrawNewViewSection::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.Scale = 1.0",FeatName.c_str()); -// doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",PageName.c_str(),); - TechDraw::DrawPage *page = dynamic_cast(pages.front()); - page->addView(page->getDocument()->getObject(FeatName.c_str())); + doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); + //TechDraw::DrawPage *page = dynamic_cast(pages.front()); + //page->addView(page->getDocument()->getObject(FeatName.c_str())); } updateActive(); commitCommand(); @@ -425,7 +425,9 @@ void CmdTechDrawProjGroup::activated(int iMsg) Gui::Control().showDialog(new TaskDlgProjGroup(multiView)); // add the multiView to the page - page->addView(getDocument()->getObject(multiViewName.c_str())); + std::string PageName = page->getNameInDocument(); + doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),multiViewName.c_str()); + //page->addView(getDocument()->getObject(multiViewName.c_str())); updateActive(); commitCommand(); @@ -473,9 +475,9 @@ void CmdTechDrawAnnotation::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.Scale = 7.0",FeatName.c_str()); - //doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); - TechDraw::DrawPage *page = dynamic_cast(pages.front()); - page->addView(page->getDocument()->getObject(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(); } @@ -523,8 +525,9 @@ 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()); - page->addView(page->getDocument()->getObject(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(); } @@ -592,6 +595,7 @@ void CmdTechDrawClipPlus::activated(int iMsg) } openCommand("ClipPlus"); + //TODO: implement Py addView for Clip clip->addView(view); updateActive(); commitCommand(); @@ -659,6 +663,7 @@ void CmdTechDrawClipMinus::activated(int iMsg) } openCommand("ClipMinus"); + //TODO: implement Py removeView for Clip clip->removeView(view); updateActive(); commitCommand(); @@ -713,9 +718,9 @@ 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()); - //doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); - TechDraw::DrawPage *page = dynamic_cast(pages.front()); - page->addView(page->getDocument()->getObject(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(); }