diff --git a/src/Mod/TechDraw/App/DrawPagePy.xml b/src/Mod/TechDraw/App/DrawPagePy.xml index 560456b9f..5357768f2 100644 --- a/src/Mod/TechDraw/App/DrawPagePy.xml +++ b/src/Mod/TechDraw/App/DrawPagePy.xml @@ -18,6 +18,11 @@ addView(DrawView) - Add a View to this Page + + + removeView(DrawView) - Remove a View to this Page + + Return the width of this page diff --git a/src/Mod/TechDraw/App/DrawPagePyImp.cpp b/src/Mod/TechDraw/App/DrawPagePyImp.cpp index 48cc29af6..daaaaac5b 100644 --- a/src/Mod/TechDraw/App/DrawPagePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawPagePyImp.cpp @@ -45,6 +45,31 @@ PyObject* DrawPagePy::addView(PyObject* args) return PyInt_FromLong((long) rc); } +PyObject* DrawPagePy::removeView(PyObject* args) +{ + //this implements iRC = pyPage.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: DrawPagePy::removeView - Bad Arg - not DocumentObject\n"); + return NULL; + //TODO: sb PyErr?? + //PyErr_SetString(PyExc_TypeError,"removeView expects a DrawView"); + //return -1; + } + + DrawPage* page = getDrawPagePtr(); //get DrawPage for pyPage + //how to validate that obj is DrawView before use?? + DrawViewPy* pyView = static_cast(pcDocObj); + DrawView* view = pyView->getDrawViewPtr(); //get DrawView for pyView + + int rc = page->removeView(view); + + return PyInt_FromLong((long) rc); +} + + // double getPageWidth() const; PyObject* DrawPagePy::getPageWidth(PyObject *args) { diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.cpp b/src/Mod/TechDraw/Gui/TaskSectionView.cpp index 0b555f531..63e0b9279 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.cpp +++ b/src/Mod/TechDraw/Gui/TaskSectionView.cpp @@ -272,12 +272,20 @@ bool TaskSectionView::accept() { //calcValues(); updateValues(); + std::string BaseName = m_base->getNameInDocument(); + Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().%s.ShowSectionLine=True",BaseName.c_str()); return true; } bool TaskSectionView::reject() { - //TODO: remove viewSection + std::string BaseName = m_base->getNameInDocument(); + std::string PageName = m_base->findParentPage()->getNameInDocument(); + std::string SectionName = m_section->getNameInDocument(); + Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().%s.ShowSectionLine=False",BaseName.c_str()); + Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().%s.removeView(App.activeDocument().%s)", + PageName.c_str(),SectionName.c_str()); + Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().removeObject('%s')",SectionName.c_str()); return false; } diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.h b/src/Mod/TechDraw/Gui/TaskSectionView.h index ffc25a995..9e698f74d 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.h +++ b/src/Mod/TechDraw/Gui/TaskSectionView.h @@ -46,8 +46,8 @@ public: ~TaskSectionView(); public: - bool accept(); - bool reject(); + virtual bool accept(); + virtual bool reject(); protected Q_SLOTS: void onHorizontalClicked(bool b);