diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index b7a728601..11e5a4dfb 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 b3293d13b..205c79f5b 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 2a35362c3..fb2af61b5 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 91fc38e45..fd5c1a312 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 000000000..1fb7b858d --- /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 da8c42ad3..1427762f8 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; }