#4490 Command Features : Use app state for toggle features

This commit is contained in:
Magne Sjaastad 2019-06-17 09:03:22 +02:00
parent 41235a2f00
commit bdcc7c53f7
2 changed files with 46 additions and 11 deletions

View File

@ -19,9 +19,10 @@
#include "RicToggleItemsFeatureImpl.h"
#include "RiaFeatureCommandContext.h"
#include "RiaGuiApplication.h"
#include "RiuMainWindow.h"
#include "RiuPlotMainWindow.h"
#include "RiaGuiApplication.h"
#include "cafPdmUiFieldHandle.h"
#include "cafPdmUiItem.h"
@ -153,22 +154,54 @@ void RicToggleItemsFeatureImpl::setObjectToggleStateForSelection(SelectionToggle
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiTreeView* RicToggleItemsFeatureImpl::findTreeView(const caf::PdmUiItem* uiItem)
{
{
RiaFeatureCommandContext* context = RiaFeatureCommandContext::instance();
caf::PdmUiTreeView* customActiveTreeView = dynamic_cast<caf::PdmUiTreeView*>(context->object());
if (customActiveTreeView)
{
return customActiveTreeView;
}
}
{
QModelIndex modIndex = RiuMainWindow::instance()->projectTreeView()->findModelIndex(uiItem);
if (modIndex.isValid())
{
return RiuMainWindow::instance()->projectTreeView();
}
}
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow();
if (mainPlotWindow)
{
QModelIndex modIndex = mainPlotWindow->projectTreeView()->findModelIndex(uiItem);
if (modIndex.isValid())
{
return mainPlotWindow->projectTreeView();
}
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
/// Finds the tree item in either the 3D main window or plot main window project tree view
//--------------------------------------------------------------------------------------------------
caf::PdmUiTreeOrdering* RicToggleItemsFeatureImpl::findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem)
{
QModelIndex modIndex = RiuMainWindow::instance()->projectTreeView()->findModelIndex(uiItem);
if(!modIndex.isValid())
caf::PdmUiTreeView* pdmUiTreeView = findTreeView(uiItem);
if (pdmUiTreeView)
{
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow();
if(mainPlotWindow)
{
modIndex = mainPlotWindow->projectTreeView()->findModelIndex(uiItem);
}
QModelIndex modIndex = pdmUiTreeView->findModelIndex(uiItem);
return static_cast<caf::PdmUiTreeOrdering*>(modIndex.internalPointer());
}
caf::PdmUiTreeOrdering* treeItem = static_cast<caf::PdmUiTreeOrdering*>(modIndex.internalPointer());
return treeItem;
return nullptr;
}

View File

@ -23,6 +23,7 @@ namespace caf
{
class PdmUiItem;
class PdmUiTreeOrdering;
class PdmUiTreeView;
};
//==================================================================================================
@ -45,6 +46,7 @@ public:
static void setObjectToggleStateForSelection(SelectionToggleType state);
private:
static caf::PdmUiTreeView* findTreeView(const caf::PdmUiItem* uiItem);
static caf::PdmUiTreeOrdering* findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem);
};