From 3356b09410b56d2c7a63d4a0e9b018b4516fa30f Mon Sep 17 00:00:00 2001 From: pavltom Date: Tue, 31 Oct 2023 12:52:02 +0100 Subject: [PATCH] [TechDraw] - Checkable menu item for Turn View Frames On/Off --- src/Mod/TechDraw/Gui/CommandDecorate.cpp | 38 ++++++++++++++++++++---- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index 6be553cccb..c51772e607 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -285,7 +285,7 @@ bool CmdTechDrawImage::isActive() // TechDraw_ToggleFrame //=========================================================================== -DEF_STD_CMD_A(CmdTechDrawToggleFrame) +DEF_STD_CMD_AC(CmdTechDrawToggleFrame) CmdTechDrawToggleFrame::CmdTechDrawToggleFrame() : Command("TechDraw_ToggleFrame") @@ -299,6 +299,14 @@ CmdTechDrawToggleFrame::CmdTechDrawToggleFrame() sPixmap = "actions/TechDraw_ToggleFrame"; } +Gui::Action *CmdTechDrawToggleFrame::createAction() +{ + Gui::Action *action = Gui::Command::createAction(); + action->setCheckable(true); + + return action; +} + void CmdTechDrawToggleFrame::activated(int iMsg) { Q_UNUSED(iMsg); @@ -318,15 +326,35 @@ void CmdTechDrawToggleFrame::activated(int iMsg) return; } vpp->toggleFrameState(); + + Gui::Action *action = this->getAction(); + if (action) { + action->setChecked(!vpp->getFrameState(), true); + } } bool CmdTechDrawToggleFrame::isActive() { - bool havePage = DrawGuiUtil::needPage(this); - bool haveView = DrawGuiUtil::needView(this, false); - return (havePage && haveView); -} + TechDraw::DrawPage* page = DrawGuiUtil::findPage(this); + if (!page) { + return false; + } + if (!DrawGuiUtil::needView(this, false)) { + return false; + } + + Gui::Document *activeGui = Gui::Application::Instance->getDocument(page->getDocument()); + ViewProviderPage *vpp = dynamic_cast(activeGui->getViewProvider(page)); + if (vpp) { + Gui::Action *action = this->getAction(); + if (action) { + action->setChecked(!vpp->getFrameState(), true); + } + } + + return true; +} void CreateTechDrawCommandsDecorate() {