From 9b33f4130bd3200eedba852d873260d84b6c2582 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 21 Dec 2016 15:21:18 +0100 Subject: [PATCH] add command to select visible objects --- src/Gui/CommandView.cpp | 42 +++++++++++++++++++++++++++++++++++++++++ src/Gui/Workbench.cpp | 1 + 2 files changed, 43 insertions(+) diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index 8b9238e55912..a7211bd8ec69 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -906,6 +906,47 @@ bool StdCmdHideSelection::isActive(void) return (Gui::Selection().size() != 0); } +//=========================================================================== +// Std_SelectVisibleObjects +//=========================================================================== +DEF_STD_CMD_A(StdCmdSelectVisibleObjects) + +StdCmdSelectVisibleObjects::StdCmdSelectVisibleObjects() + : Command("Std_SelectVisibleObjects") +{ + sGroup = QT_TR_NOOP("Standard-View"); + sMenuText = QT_TR_NOOP("Select visible objects"); + sToolTipText = QT_TR_NOOP("Select visible objects in the active document"); + sStatusTip = QT_TR_NOOP("Select visible objects in the active document"); + sWhatsThis = "Std_SelectVisibleObjects"; + eType = Alter3DView; +} + +void StdCmdSelectVisibleObjects::activated(int iMsg) +{ + Q_UNUSED(iMsg); + // go through active document + Gui::Document* doc = Application::Instance->activeDocument(); + App::Document* app = doc->getDocument(); + const std::vector obj = app->getObjectsOfType + (App::DocumentObject::getClassTypeId()); + + std::vector visible; + visible.reserve(obj.size()); + for (std::vector::const_iterator it=obj.begin();it!=obj.end();++it) { + if (doc->isShow((*it)->getNameInDocument())) + visible.push_back(*it); + } + + SelectionSingleton& rSel = Selection(); + rSel.setSelection(app->getName(), visible); +} + +bool StdCmdSelectVisibleObjects::isActive(void) +{ + return App::GetApplication().getActiveDocument(); +} + //=========================================================================== // Std_ToggleObjects //=========================================================================== @@ -2649,6 +2690,7 @@ void CreateViewStdCommands(void) rcCmdMgr.addCommand(new StdCmdToggleSelectability()); rcCmdMgr.addCommand(new StdCmdShowSelection()); rcCmdMgr.addCommand(new StdCmdHideSelection()); + rcCmdMgr.addCommand(new StdCmdSelectVisibleObjects()); rcCmdMgr.addCommand(new StdCmdToggleObjects()); rcCmdMgr.addCommand(new StdCmdShowObjects()); rcCmdMgr.addCommand(new StdCmdHideObjects()); diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index b8f436ca1d77..c616d2868d66 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -531,6 +531,7 @@ MenuItem* StdWorkbench::setupMenuBar() const MenuItem* visu = new MenuItem; visu->setCommand("Visibility"); *visu << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" + << "Std_SelectVisibleObjects" << "Separator" << "Std_ToggleObjects" << "Std_ShowObjects" << "Std_HideObjects" << "Separator" << "Std_ToggleSelectability" << "Separator" << "View_Measure_Toggle_All" << "View_Measure_Clear_All";