(#446) Changed from list of ViewLinkers to one single ViewLinker

This commit is contained in:
Magne Sjaastad 2015-09-16 14:26:25 +02:00
parent 66333e0367
commit 36f5f628f3
4 changed files with 27 additions and 31 deletions

View File

@ -82,10 +82,9 @@ void RicLinkVisibleViewsFeature::setupActionLook(QAction* actionToSetup)
void RicLinkVisibleViewsFeature::allLinkedViews(std::vector<RimView*>& views) void RicLinkVisibleViewsFeature::allLinkedViews(std::vector<RimView*>& views)
{ {
RimProject* proj = RiaApplication::instance()->project(); RimProject* proj = RiaApplication::instance()->project();
for (size_t i = 0; i < proj->viewLinkerCollection()->viewLinkers().size(); i++) if (proj->viewLinkerCollection()->viewLinker())
{ {
RimViewLinker* linkedViews = proj->viewLinkerCollection()->viewLinkers()[i]; proj->viewLinkerCollection()->viewLinker()->allViews(views);
linkedViews->allViews(views);
} }
} }
@ -128,10 +127,10 @@ void RicLinkVisibleViewsFeature::linkViews(std::vector<RimView*>& views)
RimProject* proj = RiaApplication::instance()->project(); RimProject* proj = RiaApplication::instance()->project();
RimViewLinker* viewLinker = NULL; RimViewLinker* viewLinker = NULL;
if (proj->viewLinkerCollection->viewLinkers().size() > 0) if (proj->viewLinkerCollection->viewLinker())
{ {
// We have a view linker, add not already linked views // We have a view linker, add not already linked views
viewLinker = proj->viewLinkerCollection->viewLinkers()[0]; viewLinker = proj->viewLinkerCollection->viewLinker();
for (size_t i = 0; i < views.size(); i++) for (size_t i = 0; i < views.size(); i++)
{ {
@ -166,7 +165,7 @@ void RicLinkVisibleViewsFeature::linkViews(std::vector<RimView*>& views)
RimView* masterView = featureUi.masterView(); RimView* masterView = featureUi.masterView();
viewLinker = new RimViewLinker; viewLinker = new RimViewLinker;
proj->viewLinkerCollection()->viewLinkers().push_back(viewLinker); proj->viewLinkerCollection()->viewLinker = viewLinker;
viewLinker->setMainView(masterView); viewLinker->setMainView(masterView);
for (size_t i = 0; i < views.size(); i++) for (size_t i = 0; i < views.size(); i++)

View File

@ -155,7 +155,8 @@ void RimProject::close()
commandObjects.deleteAllChildObjects(); commandObjects.deleteAllChildObjects();
viewLinkerCollection->viewLinkers().deleteAllChildObjects(); delete viewLinkerCollection->viewLinker();
viewLinkerCollection->viewLinker = NULL;
fileName = ""; fileName = "";
@ -475,10 +476,9 @@ void RimProject::allNotLinkedViews(std::vector<RimView*>& views)
allCases(cases); allCases(cases);
std::vector<RimView*> alreadyLinkedViews; std::vector<RimView*> alreadyLinkedViews;
for (size_t i = 0; i < viewLinkerCollection->viewLinkers().size(); i++) if (viewLinkerCollection->viewLinker())
{ {
RimViewLinker* viewLinker = viewLinkerCollection->viewLinkers()[i]; viewLinkerCollection->viewLinker()->allViews(alreadyLinkedViews);
viewLinker->allViews(alreadyLinkedViews);
} }
for (size_t caseIdx = 0; caseIdx < cases.size(); caseIdx++) for (size_t caseIdx = 0; caseIdx < cases.size(); caseIdx++)
@ -938,7 +938,7 @@ void RimProject::appendScriptItems(QMenu* menu, RimScriptCollection* scriptColle
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/) void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
{ {
if (viewLinkerCollection()->viewLinkers().size() > 0) if (viewLinkerCollection()->viewLinker())
{ {
// Use object instead of field to avoid duplicate entries in the tree view // Use object instead of field to avoid duplicate entries in the tree view
uiTreeOrdering.add(viewLinkerCollection()); uiTreeOrdering.add(viewLinkerCollection());
@ -973,9 +973,9 @@ void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QS
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimViewLinker* RimProject::findViewLinkerFromView(RimView* view) RimViewLinker* RimProject::findViewLinkerFromView(RimView* view)
{ {
for (size_t i = 0; i < viewLinkerCollection()->viewLinkers().size(); i++) if (viewLinkerCollection()->viewLinker())
{ {
RimViewLinker* group = viewLinkerCollection()->viewLinkers()[i]; RimViewLinker* group = viewLinkerCollection()->viewLinker();
if (view == group->mainView()) return group; if (view == group->mainView()) return group;
for (size_t j = 0; j < group->viewLinks.size(); j++) for (size_t j = 0; j < group->viewLinks.size(); j++)

View File

@ -38,8 +38,8 @@ RimViewLinkerCollection::RimViewLinkerCollection(void)
CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", ""); CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", "");
isActive.uiCapability()->setUiHidden(true); isActive.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&viewLinkers, "ViewLinkers", "View Linkers", "", "", ""); CAF_PDM_InitFieldNoDefault(&viewLinker, "ViewLinkers", "View Linkers", "", "", "");
viewLinkers.uiCapability()->setUiHidden(true); viewLinker.uiCapability()->setUiHidden(true);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -47,7 +47,7 @@ RimViewLinkerCollection::RimViewLinkerCollection(void)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimViewLinkerCollection::~RimViewLinkerCollection(void) RimViewLinkerCollection::~RimViewLinkerCollection(void)
{ {
viewLinkers.deleteAllChildObjects(); if (viewLinker()) delete viewLinker();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -55,16 +55,13 @@ RimViewLinkerCollection::~RimViewLinkerCollection(void)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimViewLinkerCollection::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/) void RimViewLinkerCollection::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
{ {
for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx) RimViewLinker* childObject = viewLinker();
if (childObject)
{ {
RimViewLinker* childObject = viewLinkers[cIdx]; uiTreeOrdering.add(childObject);
if (childObject) for (size_t j = 0; j < childObject->viewLinks.size(); j++)
{ {
uiTreeOrdering.add(childObject); uiTreeOrdering.add(childObject->viewLinks()[j]);
for (size_t j = 0; j < childObject->viewLinks.size(); j++)
{
uiTreeOrdering.add(childObject->viewLinks()[j]);
}
} }
} }
@ -80,16 +77,16 @@ void RimViewLinkerCollection::fieldChangedByUi(const caf::PdmFieldHandle* change
{ {
if (isActive) if (isActive)
{ {
for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx) if (viewLinker())
{ {
viewLinkers[cIdx]->applyAllOperations(); viewLinker()->applyAllOperations();
} }
} }
else else
{ {
for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx) if (viewLinker())
{ {
viewLinkers[cIdx]->removeOverrides(); viewLinker()->removeOverrides();
} }
} }
} }

View File

@ -21,7 +21,7 @@
#include "RimDefines.h" #include "RimDefines.h"
#include "cafPdmChildArrayField.h" #include "cafPdmChildField.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
@ -39,8 +39,8 @@ public:
RimViewLinkerCollection(void); RimViewLinkerCollection(void);
virtual ~RimViewLinkerCollection(void); virtual ~RimViewLinkerCollection(void);
caf::PdmField<bool> isActive; caf::PdmField<bool> isActive;
caf::PdmChildArrayField<RimViewLinker*> viewLinkers; caf::PdmChildField<RimViewLinker*> viewLinker;
protected: protected:
virtual caf::PdmFieldHandle* objectToggleField() { return &isActive; } virtual caf::PdmFieldHandle* objectToggleField() { return &isActive; }