Added LinkVisibleViewsFeature, and added action to draw toolbar

This commit is contained in:
Magne Sjaastad
2015-08-30 13:30:46 +02:00
parent e5d5543cd9
commit 3f09c1bc66
11 changed files with 208 additions and 51 deletions

View File

@@ -44,7 +44,6 @@ RimManagedViewCollection::RimManagedViewCollection(void)
CAF_PDM_InitObject("Managed Views", ":/chain.png", "", "");
CAF_PDM_InitFieldNoDefault(&managedViews, "ManagedViews", "Managed Views", "", "", "");
managedViews.push_back(new RimManagedViewConfig);
managedViews.uiCapability()->setUiHidden(true);
}
@@ -234,3 +233,19 @@ void RimManagedViewCollection::allManagedViews(std::vector<RimView*>& views)
managedViews[i]->allManagedViews(views);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimManagedViewCollection::applyAllOperations()
{
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
configureOverrides();
updateCellResult();
updateTimeStep(masterView->currentTimeStep());
updateRangeFilters();
updatePropertyFilters();
}

View File

@@ -41,7 +41,9 @@ public:
RimManagedViewCollection(void);
virtual ~RimManagedViewCollection(void);
caf::PdmChildArrayField<RimManagedViewConfig*> managedViews;
caf::PdmChildArrayField<RimManagedViewConfig*> managedViews;
void applyAllOperations();
void updateTimeStep(int timeStep);
void updateCellResult();
@@ -51,6 +53,5 @@ public:
void configureOverrides();
void allManagedViews(std::vector<RimView*>& views);
void allManagedViews(std::vector<RimView*>& views);
};

View File

@@ -73,12 +73,19 @@ QList<caf::PdmOptionItemInfo> RimManagedViewConfig::calculateValueOptions(const
if (fieldNeedingOptions == &managedView)
{
RimProject* proj = RiaApplication::instance()->project();
std::vector<RimView*> views;
allVisibleViews(views);
proj->allVisibleViews(views);
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
for (size_t i = 0; i< views.size(); i++)
{
optionList.push_back(caf::PdmOptionItemInfo(displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(views[i]))));
if (views[i] != masterView)
{
optionList.push_back(caf::PdmOptionItemInfo(displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(views[i]))));
}
}
if (optionList.size() > 0)
@@ -90,36 +97,6 @@ QList<caf::PdmOptionItemInfo> RimManagedViewConfig::calculateValueOptions(const
return optionList;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimManagedViewConfig::allVisibleViews(std::vector<RimView*>& views)
{
RimProject* proj = RiaApplication::instance()->project();
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
if (proj)
{
std::vector<RimCase*> cases;
proj->allCases(cases);
for (size_t caseIdx = 0; caseIdx < cases.size(); caseIdx++)
{
RimCase* rimCase = cases[caseIdx];
std::vector<RimView*> caseViews = rimCase->views();
for (size_t viewIdx = 0; viewIdx < caseViews.size(); viewIdx++)
{
if (caseViews[viewIdx]->viewer() && caseViews[viewIdx] != masterView)
{
views.push_back(caseViews[viewIdx]);
}
}
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -49,8 +49,7 @@ public:
caf::PdmField<bool> syncRangeFilters;
caf::PdmField<bool> syncPropertyFilters;
void configureOverrides();
void configureOverrides();
void allManagedViews(std::vector<RimView*>& views);
protected:
@@ -62,7 +61,6 @@ protected:
private:
void allVisibleViews(std::vector<RimView*>& views);
void configureOverridesUpdateDisplayModel();
RimEclipseView* managedEclipseView();

View File

@@ -458,6 +458,29 @@ void RimProject::allCases(std::vector<RimCase*>& cases)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::allVisibleViews(std::vector<RimView*>& views)
{
std::vector<RimCase*> cases;
allCases(cases);
for (size_t caseIdx = 0; caseIdx < cases.size(); caseIdx++)
{
RimCase* rimCase = cases[caseIdx];
if (!rimCase) continue;
std::vector<RimView*> caseViews = rimCase->views();
for (size_t viewIdx = 0; viewIdx < caseViews.size(); viewIdx++)
{
if (caseViews[viewIdx] && caseViews[viewIdx]->viewer())
{
views.push_back(caseViews[viewIdx]);
}
}
}
}
//--------------------------------------------------------------------------------------------------
///

View File

@@ -37,6 +37,7 @@ class RimOilField;
class RimScriptCollection;
class RimWellPathImport;
class RimMainPlotCollection;
class RimView;
namespace caf
{
@@ -77,7 +78,9 @@ public:
void assignCaseIdToCase(RimCase* reservoirCase);
void assignIdToCaseGroup(RimIdenticalGridCaseGroup* caseGroup);
void allCases(std::vector<RimCase*>& cases);
void allCases(std::vector<RimCase*>& cases);
void allVisibleViews(std::vector<RimView*>& views);
void createDisplayModelAndRedrawAllViews();
void computeUtmAreaOfInterest();