From 12202fe4e647ad2709721730c1e10f5d460c93a5 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Wed, 22 Aug 2018 11:42:15 +0200 Subject: [PATCH] #3255 Add convenience methods to caf::SelectionManager --- .../cafPdmUiCore/cafSelectionManager.h | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafSelectionManager.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafSelectionManager.h index 325a3e38d5..4f80799beb 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafSelectionManager.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafSelectionManager.h @@ -121,6 +121,32 @@ public: } } + template + T* selectedItemOfType(int selectionLevel = 0) + { + std::vector typedObjects; + this->objectsByType(&typedObjects, selectionLevel); + if (!typedObjects.empty()) + { + return typedObjects.front(); + } + return nullptr; + } + + template + T* selectedItemAncestorOfType(int selectionLevel = 0) + { + PdmUiItem* item = this->selectedItem(selectionLevel); + PdmObjectHandle* selectedObject = dynamic_cast(item); + if (selectedObject) + { + T* ancestor = nullptr; + selectedObject->firstAncestorOrThisOfType(ancestor); + return ancestor; + } + return nullptr; + } + private: SelectionManager();