From 23ccd81ff5721b8df5d399326abea66c6f2be729 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Sat, 30 Jan 2016 13:02:23 -0500 Subject: [PATCH] add ToggleFrame command --- src/Mod/TechDraw/Gui/CommandDecorate.cpp | 59 ++- src/Mod/TechDraw/Gui/MDIViewPage.cpp | 11 +- src/Mod/TechDraw/Gui/MDIViewPage.h | 4 + src/Mod/TechDraw/Gui/Resources/TechDraw.qrc | 1 + .../icons/actions/techdraw-toggleframe.svg | 464 ++++++++++++++++++ src/Mod/TechDraw/Gui/Workbench.cpp | 2 + 6 files changed, 537 insertions(+), 4 deletions(-) create mode 100644 src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-toggleframe.svg diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index b7a7286017..11e5a4dfb7 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -67,8 +67,8 @@ DEF_STD_CMD(CmdTechDrawNewHatch); CmdTechDrawNewHatch::CmdTechDrawNewHatch() : Command("TechDraw_NewHatch") { - sAppModule = "Drawing"; - sGroup = QT_TR_NOOP("Drawing"); + sAppModule = "TechDraw"; + sGroup = QT_TR_NOOP("TechDraw"); sMenuText = QT_TR_NOOP("Insert a hatched area into a view"); sToolTipText = QT_TR_NOOP("Insert a hatched area into a view"); sWhatsThis = "TechDraw_NewHatch"; @@ -120,12 +120,65 @@ void CmdTechDrawNewHatch::activated(int iMsg) objFeat->X.setValue(x); } +//=========================================================================== +// TechDraw_ToggleFrame +//=========================================================================== + +DEF_STD_CMD(CmdTechDrawToggleFrame); + +CmdTechDrawToggleFrame::CmdTechDrawToggleFrame() + : Command("TechDraw_ToggleFrame") +{ + sAppModule = "TechDraw"; + sGroup = QT_TR_NOOP("TechDraw"); + sMenuText = QT_TR_NOOP("Turn View Frames on or off"); + sToolTipText = QT_TR_NOOP("Turn View Frames on or off"); + sWhatsThis = "TechDraw_ToggleFrame"; + sStatusTip = sToolTipText; + sPixmap = "actions/techdraw-toggleframe"; +} + +void CmdTechDrawToggleFrame::activated(int iMsg) +{ + std::vector pages = getSelection().getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + if (pages.empty()) { // no Pages in Selection + pages = getDocument()->getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + if (pages.empty()) { // no Pages in Document + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No pages found"), + QObject::tr("Create a TechDraw Page first.")); + return; + } + } + + unsigned int n = getSelection().countObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + if (n > 1) { // too many Pages + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select only one Page object.")); + return; + } + + TechDraw::DrawPage* page = dynamic_cast(pages.front()); + +//TODO: this should probably work on the currently displayed page, rather than selecting one in the Tree + Gui::Document* activeGui = Gui::Application::Instance->getDocument(page->getDocument()); + Gui::ViewProvider* vp = activeGui->getViewProvider(page); + ViewProviderPage* dvp = dynamic_cast(vp); + + if (dvp && dvp->getMDIViewPage()) { + dvp->getMDIViewPage()->setFrameState(!dvp->getMDIViewPage()->getFrameState()); + } else { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No TechDraw Page"), + QObject::tr("Need a TechDraw Page for this command")); + return; + } +} + void CreateTechDrawCommandsDecorate(void) { Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); rcCmdMgr.addCommand(new CmdTechDrawNewHatch()); - //rcCmdMgr.addCommand(new CmdTechDrawHideLabels()); + rcCmdMgr.addCommand(new CmdTechDrawToggleFrame()); } //=========================================================================== diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index b3293d13b1..205c79f5b0 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -104,7 +104,9 @@ using namespace TechDrawGui; /* TRANSLATOR TechDrawGui::MDIViewPage */ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* parent) - : Gui::MDIView(doc, parent), pageGui(pageVp) + : Gui::MDIView(doc, parent), + pageGui(pageVp), + m_frameState(true) { m_view = new QGVPage(pageVp); @@ -1091,6 +1093,13 @@ void MDIViewPage::saveSVG() m_view->scene()->update(); } +void MDIViewPage::setFrameState(bool state) +{ + m_frameState = state; + m_view->toggleEdit(state); + m_view->scene()->update(); +} + PyObject* MDIViewPage::getPyObject() { Py_Return; diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 2a35362c31..fb2af61b53 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -87,6 +87,8 @@ public: void print(QPrinter* printer); void printPdf(); void printPreview(); + void setFrameState(bool state); + bool getFrameState(void) {return m_frameState;}; void setDocumentObject(const std::string&); PyObject* getPyObject(); @@ -120,6 +122,8 @@ private: QPrinter::PageSize m_pageSize; ViewProviderPage *pageGui; + bool m_frameState; + QList deleteItems; }; diff --git a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc index 91fc38e457..fd5c1a312c 100644 --- a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc +++ b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc @@ -39,6 +39,7 @@ icons/actions/saveSVG.svg icons/actions/techdraw-viewsection.svg icons/actions/techdraw-hatch.svg + icons/actions/techdraw-toggleframe.svg icons/ProjBottom.svg icons/ProjFront.svg icons/ProjGroup.svg diff --git a/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-toggleframe.svg b/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-toggleframe.svg new file mode 100644 index 0000000000..1fb7b858d4 --- /dev/null +++ b/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-toggleframe.svg @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + View + + + + + + + diff --git a/src/Mod/TechDraw/Gui/Workbench.cpp b/src/Mod/TechDraw/Gui/Workbench.cpp index da8c42ad30..1427762f8e 100644 --- a/src/Mod/TechDraw/Gui/Workbench.cpp +++ b/src/Mod/TechDraw/Gui/Workbench.cpp @@ -121,6 +121,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const Gui::ToolBarItem *decor = new Gui::ToolBarItem(root); decor->setCommand("TechDraw Decoration"); *decor << "TechDraw_NewHatch"; + *decor << "TechDraw_ToggleFrame"; return root; } @@ -163,6 +164,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const Gui::ToolBarItem *decor = new Gui::ToolBarItem(root); decor->setCommand("TechDraw Decoration"); *decor << "TechDraw_NewHatch"; + *decor << "TechDraw_ToggleFrame"; return root; }