Linked Views: Refactored and cleaned up more. Refactored some features.

This commit is contained in:
Jacob Støren
2015-09-24 14:29:13 +02:00
parent 5e0505dfe8
commit d83d9e967b
10 changed files with 131 additions and 240 deletions

View File

@@ -42,24 +42,24 @@ bool RicLinkViewFeature::isCommandEnabled()
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (!activeView) return false;
RimProject* proj = RiaApplication::instance()->project();
if (!proj->findViewLinkerFromView(activeView))
RimViewController* viewController = activeView->controllingViewLink();
if(viewController)
{
RimViewLinkerCollection* viewLinkerCollection = proj->viewLinkerCollection();
if (viewLinkerCollection)
return false;
}
else
{
RimViewLinker* vLinker = RimViewLinker::viewLinkerIfMainView(activeView);
if (!vLinker)
{
RimViewLinker* viewLinker = viewLinkerCollection->viewLinker();
if (viewLinker)
{
if (viewLinker->viewLinks().size() > 0)
{
return true;
}
}
return true;
}
else
{
return false;
}
}
return false;
}
//--------------------------------------------------------------------------------------------------

View File

@@ -125,29 +125,9 @@ void RicLinkVisibleViewsFeature::findNotLinkedVisibleViews(std::vector<RimView*>
void RicLinkVisibleViewsFeature::linkViews(std::vector<RimView*>& views)
{
RimProject* proj = RiaApplication::instance()->project();
RimViewLinker* viewLinker = NULL;
RimViewLinker* viewLinker = proj->viewLinkerCollection->viewLinker();
if (proj->viewLinkerCollection->viewLinker())
{
// We have a view linker, add not already linked views
viewLinker = proj->viewLinkerCollection->viewLinker();
for (size_t i = 0; i < views.size(); i++)
{
RimView* rimView = views[i];
if (rimView == viewLinker->masterView()) continue;
RimViewController* viewLink = new RimViewController;
viewLink->setManagedView(rimView);
viewLinker->viewLinks.push_back(viewLink);
viewLink->initAfterReadRecursively();
viewLink->updateOptionSensitivity();
viewLink->updateUiIconFromActiveState();
}
}
else
if (!viewLinker)
{
// Create a new view linker
@@ -167,35 +147,23 @@ void RicLinkVisibleViewsFeature::linkViews(std::vector<RimView*>& views)
viewLinker = new RimViewLinker;
proj->viewLinkerCollection()->viewLinker = viewLinker;
viewLinker->setMasterView(masterView);
for (size_t i = 0; i < views.size(); i++)
{
RimView* rimView = views[i];
if (rimView == masterView) continue;
RimViewController* viewLink = new RimViewController;
viewLink->setManagedView(rimView);
viewLinker->viewLinks.push_back(viewLink);
viewLink->initAfterReadRecursively();
viewLink->updateOptionSensitivity();
viewLink->updateUiIconFromActiveState();
}
viewLinker->updateUiIcon();
}
viewLinker->applyAllOperations();
for (size_t i = 0; i < views.size(); i++)
{
RimView* rimView = views[i];
if (rimView == viewLinker->masterView()) continue;
viewLinker->addDependentView(rimView);
}
viewLinker->updateUiNameAndIcon();
viewLinker->updateDependentViews();
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
proj->updateConnectedEditors();
// Set managed view collection to selected and expanded in project tree
caf::PdmUiTreeView* projTreeView = RiuMainWindow::instance()->projectTreeView();
QModelIndex modIndex = projTreeView->findModelIndex(viewLinker);
projTreeView->treeView()->setCurrentIndex(modIndex);
RiuMainWindow::instance()->projectTreeView()->setExpanded(viewLinker, true);
projTreeView->treeView()->setExpanded(modIndex, true);
}

View File

@@ -70,51 +70,18 @@ void RicSetMasterViewFeature::onActionTriggered(bool isChecked)
RimView* previousMasterView = viewLinker->masterView();
RimViewController* previousViewLink = RimViewLinker::viewLinkForView(activeView);
if (previousViewLink)
{
size_t indexToErase = cvf::UNDEFINED_SIZE_T;
for (size_t i = 0; i < viewLinker->viewLinks.size(); i++)
{
if (viewLinker->viewLinks()[i] == previousViewLink)
{
indexToErase = i;
}
}
if (indexToErase != cvf::UNDEFINED_SIZE_T)
{
viewLinker->viewLinks().erase(indexToErase);
}
delete previousViewLink;
}
viewLinker->removeOverrides();
viewLinker->setMasterView(activeView);
viewLinker->addDependentView(previousMasterView);
viewLinker->updateDependentViews();
if (previousMasterView)
{
RimViewController* viewLink = new RimViewController;
viewLink->setManagedView(previousMasterView);
viewLinker->viewLinks.push_back(viewLink);
viewLink->initAfterReadRecursively();
viewLink->updateOptionSensitivity();
viewLink->updateUiIconFromActiveState();
}
viewLinker->applyAllOperations();
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
proj->updateConnectedEditors();
// Set managed view collection to selected and expanded in project tree
caf::PdmUiTreeView* projTreeView = RiuMainWindow::instance()->projectTreeView();
QModelIndex modIndex = projTreeView->findModelIndex(viewLinker);
projTreeView->treeView()->setCurrentIndex(modIndex);
projTreeView->treeView()->setExpanded(modIndex, true);
projTreeView->selectAsCurrentItem(viewLinker);
projTreeView->setExpanded(viewLinker, true);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -42,8 +42,9 @@ bool RicShowLinkOptionsFeature::isCommandEnabled()
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (!activeView) return false;
RimProject* proj = RiaApplication::instance()->project();
if (proj->findViewLinkerFromView(activeView))
RimViewController* viewController = activeView->controllingViewLink();
if (viewController)
{
return true;
}
@@ -59,28 +60,9 @@ void RicShowLinkOptionsFeature::onActionTriggered(bool isChecked)
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (!activeView) return;
RimProject* proj = RiaApplication::instance()->project();
RimViewLinker* viewLinker = proj->findViewLinkerFromView(activeView);
if (viewLinker)
{
if (viewLinker->masterView() == activeView)
{
RiuMainWindow::instance()->projectTreeView()->selectAsCurrentItem(viewLinker);
RimViewController* viewController = activeView->controllingViewLink();
return;
}
for (size_t i = 0; i < viewLinker->viewLinks.size(); i++)
{
RimViewController* viewLink = viewLinker->viewLinks[i];
if (viewLink->managedView() == activeView)
{
RiuMainWindow::instance()->projectTreeView()->selectAsCurrentItem(viewLink);
return;
}
}
}
RiuMainWindow::instance()->projectTreeView()->selectAsCurrentItem(viewController);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -39,20 +39,16 @@ bool RicUnLinkViewFeature::isCommandEnabled()
{
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (!activeView) return false;
RimProject* proj = RiaApplication::instance()->project();
RimViewLinker* viewLinker = proj->findViewLinkerFromView(activeView);
if (viewLinker)
RimViewController* viewController = activeView->controllingViewLink();
if (viewController)
{
if (viewLinker->masterView() == activeView)
{
return false;
}
return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
@@ -62,27 +58,16 @@ void RicUnLinkViewFeature::onActionTriggered(bool isChecked)
{
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (!activeView) return;
RimViewController* viewController = activeView->controllingViewLink();
caf::SelectionManager::instance()->setSelectedItem(viewController);
RimProject* proj = RiaApplication::instance()->project();
RimViewLinker* viewLinker = proj->findViewLinkerFromView(activeView);
if (viewLinker)
caf::CmdFeature* feature = caf::CmdFeatureManager::instance()->getCommandFeature("RicDeleteItemFeature");
if (feature)
{
for (size_t i = 0; i < viewLinker->viewLinks.size(); i++)
{
RimViewController* viewLink = viewLinker->viewLinks[i];
if (viewLink->managedView() == activeView)
{
caf::SelectionManager::instance()->setSelectedItem(viewLink);
feature->action()->trigger();
caf::CmdFeature* feature = caf::CmdFeatureManager::instance()->getCommandFeature("RicDeleteItemFeature");
if (feature)
{
feature->action()->trigger();
return;
}
}
}
return;
}
}