From a5b5104875b7f682cf44d355ee9b59bcdbaaa391 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 8 Sep 2016 11:27:21 -0400 Subject: [PATCH] Implement Cancel logic for TaskViewSection --- src/Mod/TechDraw/App/DrawPagePy.xml | 5 +++++ src/Mod/TechDraw/App/DrawPagePyImp.cpp | 25 ++++++++++++++++++++++++ src/Mod/TechDraw/Gui/TaskSectionView.cpp | 10 +++++++++- src/Mod/TechDraw/Gui/TaskSectionView.h | 4 ++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawPagePy.xml b/src/Mod/TechDraw/App/DrawPagePy.xml index 560456b9fa3e..5357768f2f3a 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 48cc29af6857..daaaaac5b599 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 0b555f53108e..63e0b9279523 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 ffc25a995289..9e698f74d2a8 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.h +++ b/src/Mod/TechDraw/Gui/TaskSectionView.h @@ -46,8 +46,8 @@ class TaskSectionView : public QWidget ~TaskSectionView(); public: - bool accept(); - bool reject(); + virtual bool accept(); + virtual bool reject(); protected Q_SLOTS: void onHorizontalClicked(bool b);