mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#395) Moved managed views from RimView to RimProject
This commit is contained in:
parent
52281633d6
commit
7969e22364
@ -21,7 +21,7 @@
|
||||
|
||||
#include "RiaApplication.h"
|
||||
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimManagedViewConfig.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimView.h"
|
||||
@ -57,28 +57,32 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
std::vector<RimView*> views;
|
||||
proj->allVisibleViews(views);
|
||||
|
||||
CVF_ASSERT(views.size() > 1);
|
||||
|
||||
|
||||
RimView* masterView = views[0];
|
||||
|
||||
RimManagedViewCollection* managedViewCollection = masterView->managedViewCollection();
|
||||
RimLinkedViews* linkedViews = new RimLinkedViews;
|
||||
linkedViews->mainView = masterView;
|
||||
|
||||
for (size_t i = 1; i < views.size(); i++)
|
||||
{
|
||||
RimView* rimView = views[i];
|
||||
RimManagedViewConfig* viewConfig = new RimManagedViewConfig;
|
||||
viewConfig->managedView = rimView;
|
||||
managedViewCollection->viewConfigs.push_back(viewConfig);
|
||||
linkedViews->viewConfigs.push_back(viewConfig);
|
||||
|
||||
viewConfig->initAfterReadRecursively();
|
||||
}
|
||||
|
||||
managedViewCollection->applyAllOperations();
|
||||
managedViewCollection->updateConnectedEditors();
|
||||
proj->linkedViews.push_back(linkedViews);
|
||||
proj->linkedViews.uiCapability()->updateConnectedEditors();
|
||||
|
||||
linkedViews->applyAllOperations();
|
||||
linkedViews->updateConnectedEditors();
|
||||
|
||||
// Set managed view collection to selected and expanded in project tree
|
||||
caf::PdmUiTreeView* projTreeView = RiuMainWindow::instance()->projectTreeView();
|
||||
QModelIndex modIndex = projTreeView->findModelIndex(managedViewCollection);
|
||||
QModelIndex modIndex = projTreeView->findModelIndex(linkedViews);
|
||||
projTreeView->treeView()->setCurrentIndex(modIndex);
|
||||
|
||||
projTreeView->treeView()->setExpanded(modIndex, true);
|
||||
|
@ -60,12 +60,12 @@ ${CEE_CURRENT_LIST_DIR}RimView.h
|
||||
${CEE_CURRENT_LIST_DIR}RimCase.h
|
||||
${CEE_CURRENT_LIST_DIR}RimTreeViewStateSerializer.h
|
||||
${CEE_CURRENT_LIST_DIR}RimManagedViewConfig.h
|
||||
${CEE_CURRENT_LIST_DIR}RimManagedViewCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimMainPlotCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlot.h
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotTrace.h
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotCurve.h
|
||||
${CEE_CURRENT_LIST_DIR}RimLinkedViews.h
|
||||
)
|
||||
|
||||
set (SOURCE_GROUP_SOURCE_FILES
|
||||
@ -124,12 +124,12 @@ ${CEE_CURRENT_LIST_DIR}RimView.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimTreeViewStateSerializer.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimManagedViewConfig.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimManagedViewCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimMainPlotCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlot.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotTrace.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimWellLogPlotCurve.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimLinkedViews.cpp
|
||||
)
|
||||
|
||||
list(APPEND CODE_HEADER_FILES
|
||||
|
@ -31,7 +31,8 @@
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "cafPdmUiEditorHandle.h"
|
||||
|
||||
@ -147,16 +148,22 @@ void RimCellRangeFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* c
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCellRangeFilterCollection::updateDisplayModeNotifyManagedViews()
|
||||
{
|
||||
RimView* rimView = NULL;
|
||||
firstAnchestorOrThisOfType(rimView);
|
||||
RimView* view = NULL;
|
||||
firstAnchestorOrThisOfType(view);
|
||||
|
||||
rimView->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
rimView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
view->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
view->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
|
||||
rimView->scheduleCreateDisplayModelAndRedraw();
|
||||
view->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
// Notify managed views of range filter change in master view
|
||||
rimView->managedViewCollection()->updateRangeFilters();
|
||||
RimProject* proj = NULL;
|
||||
view->firstAnchestorOrThisOfType(proj);
|
||||
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(view);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updateRangeFilters();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -23,7 +23,8 @@
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimEclipseResultDefinition.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "cafPdmUiEditorHandle.h"
|
||||
|
||||
@ -145,6 +146,12 @@ void RimEclipsePropertyFilterCollection::updateDisplayModelNotifyManagedViews()
|
||||
view->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
view->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
// Notify managed views of range filter change in master view
|
||||
view->managedViewCollection()->updatePropertyFilters();
|
||||
RimProject* proj = NULL;
|
||||
view->firstAnchestorOrThisOfType(proj);
|
||||
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(view);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updatePropertyFilters();
|
||||
}
|
||||
}
|
||||
|
@ -28,11 +28,12 @@
|
||||
#include "RimEclipseFaultColors.h"
|
||||
#include "RimEclipsePropertyFilter.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimReservoirCellResultsStorage.h"
|
||||
#include "RimView.h"
|
||||
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimEclipseResultDefinition, "ResultDefinition");
|
||||
|
||||
@ -153,10 +154,16 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
if (view)
|
||||
{
|
||||
view->managedViewCollection->updateCellResult();
|
||||
RimProject* proj = NULL;
|
||||
view->firstAnchestorOrThisOfType(proj);
|
||||
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(view);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updateCellResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
RimEclipsePropertyFilter* propFilter = dynamic_cast<RimEclipsePropertyFilter*>(this->parentField()->ownerObject());
|
||||
|
@ -22,9 +22,10 @@
|
||||
#include "RimGeoMechCellColors.h"
|
||||
#include "RimGeoMechPropertyFilter.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "cvfAssert.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimGeoMechPropertyFilterCollection, "GeoMechPropertyFilters");
|
||||
@ -147,6 +148,12 @@ void RimGeoMechPropertyFilterCollection::updateDisplayModelNotifyManagedViews()
|
||||
view->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
view->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
// Notify managed views of range filter change in master view
|
||||
view->managedViewCollection()->updatePropertyFilters();
|
||||
RimProject* proj = NULL;
|
||||
view->firstAnchestorOrThisOfType(proj);
|
||||
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(view);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updatePropertyFilters();
|
||||
}
|
||||
}
|
||||
|
@ -30,11 +30,12 @@
|
||||
#include "RimGeoMechCellColors.h"
|
||||
#include "RimGeoMechPropertyFilter.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
namespace caf {
|
||||
|
||||
@ -188,7 +189,19 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
|
||||
if (dynamic_cast<RimGeoMechCellColors*>(this))
|
||||
{
|
||||
if (view) view->managedViewCollection->updateCellResult();
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
if (view)
|
||||
{
|
||||
RimProject* proj = NULL;
|
||||
view->firstAnchestorOrThisOfType(proj);
|
||||
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(view);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updateCellResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,31 +17,41 @@
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
|
||||
#include "RimCase.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimEclipseResultDefinition.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGeoMechCellColors.h"
|
||||
#include "RimGeoMechResultDefinition.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewConfig.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimView.h"
|
||||
|
||||
#include "RiuViewer.h"
|
||||
|
||||
#include "cvfCamera.h"
|
||||
#include "cvfMatrix4.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimGeoMechResultDefinition.h"
|
||||
#include "RimGeoMechCellColors.h"
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimManagedViewCollection, "RimManagedViewCollection");
|
||||
CAF_PDM_SOURCE_INIT(RimLinkedViews, "RimLinkedViews");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimManagedViewCollection::RimManagedViewCollection(void)
|
||||
RimLinkedViews::RimLinkedViews(void)
|
||||
{
|
||||
CAF_PDM_InitObject("Managed Views", ":/chain.png", "", "");
|
||||
CAF_PDM_InitObject("Linked Views", ":/chain.png", "", "");
|
||||
|
||||
CAF_PDM_InitField(&name, "Name", QString("View Group Name"), "View Group Name", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&mainView, "MainView", "Main View", "", "", "");
|
||||
mainView.uiCapability()->setUiChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&viewConfigs, "ManagedViews", "Managed Views", "", "", "");
|
||||
viewConfigs.uiCapability()->setUiHidden(true);
|
||||
@ -50,23 +60,38 @@ RimManagedViewCollection::RimManagedViewCollection(void)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimManagedViewCollection::~RimManagedViewCollection(void)
|
||||
RimLinkedViews::~RimLinkedViews(void)
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::updateTimeStep(int timeStep)
|
||||
void RimLinkedViews::updateTimeStep(RimView* sourceView, int timeStep)
|
||||
{
|
||||
RimManagedViewConfig* sourceViewConfig = viewConfigForView(sourceView);
|
||||
if (sourceViewConfig && !sourceViewConfig->syncTimeStep())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (sourceView && sourceView != mainView)
|
||||
{
|
||||
mainView->viewer()->setCurrentFrame(timeStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainView->viewer()->setCurrentFrame(timeStep);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
RimManagedViewConfig* managedViewConfig = viewConfigs[i];
|
||||
if (managedViewConfig->managedView())
|
||||
if (managedViewConfig->managedView() && managedViewConfig->managedView() != sourceView)
|
||||
{
|
||||
if (managedViewConfig->syncTimeStep() && managedViewConfig->managedView()->viewer())
|
||||
{
|
||||
managedViewConfig->managedView()->viewer()->slotSetCurrentFrame(timeStep);
|
||||
managedViewConfig->managedView()->viewer()->setCurrentFrame(timeStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -75,12 +100,10 @@ void RimManagedViewCollection::updateTimeStep(int timeStep)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::updateCellResult()
|
||||
void RimLinkedViews::updateCellResult()
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
|
||||
RimEclipseView* masterEclipseView = dynamic_cast<RimEclipseView*>(masterView);
|
||||
RimView* rimView = mainView;
|
||||
RimEclipseView* masterEclipseView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (masterEclipseView && masterEclipseView->cellResult())
|
||||
{
|
||||
RimEclipseResultDefinition* eclipseCellResultDefinition = masterEclipseView->cellResult();
|
||||
@ -101,14 +124,11 @@ void RimManagedViewCollection::updateCellResult()
|
||||
eclipeView->cellResult()->setResultVariable(eclipseCellResultDefinition->resultVariable());
|
||||
}
|
||||
}
|
||||
|
||||
// Notify recursively
|
||||
managedViewConfig->managedView()->managedViewCollection()->updateCellResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RimGeoMechView* masterGeoView = dynamic_cast<RimGeoMechView*>(masterView);
|
||||
RimGeoMechView* masterGeoView = dynamic_cast<RimGeoMechView*>(rimView);
|
||||
if (masterGeoView && masterGeoView->cellResult())
|
||||
{
|
||||
RimGeoMechResultDefinition* geoMechResultDefinition = masterGeoView->cellResult();
|
||||
@ -128,9 +148,6 @@ void RimManagedViewCollection::updateCellResult()
|
||||
geoView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
// Notify recursively
|
||||
managedViewConfig->managedView()->managedViewCollection()->updateCellResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -139,7 +156,7 @@ void RimManagedViewCollection::updateCellResult()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::updateRangeFilters()
|
||||
void RimLinkedViews::updateRangeFilters()
|
||||
{
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
@ -167,9 +184,6 @@ void RimManagedViewCollection::updateRangeFilters()
|
||||
geoView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
// Notify recursively
|
||||
managedViewConfig->managedView()->managedViewCollection()->updateRangeFilters();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -177,7 +191,7 @@ void RimManagedViewCollection::updateRangeFilters()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::updatePropertyFilters()
|
||||
void RimLinkedViews::updatePropertyFilters()
|
||||
{
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
@ -190,8 +204,7 @@ void RimManagedViewCollection::updatePropertyFilters()
|
||||
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (eclipeView)
|
||||
{
|
||||
eclipeView->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
eclipeView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
eclipeView->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
|
||||
eclipeView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
@ -204,9 +217,6 @@ void RimManagedViewCollection::updatePropertyFilters()
|
||||
geoView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
// Notify recursively
|
||||
managedViewConfig->managedView()->managedViewCollection()->updatePropertyFilters();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -214,7 +224,7 @@ void RimManagedViewCollection::updatePropertyFilters()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::configureOverrides()
|
||||
void RimLinkedViews::configureOverrides()
|
||||
{
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
@ -226,15 +236,15 @@ void RimManagedViewCollection::configureOverrides()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::allViewsForCameraSync(std::vector<RimView*>& views)
|
||||
void RimLinkedViews::allViewsForCameraSync(std::vector<RimView*>& views)
|
||||
{
|
||||
views.push_back(mainView());
|
||||
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
if (viewConfigs[i]->syncCamera && viewConfigs[i]->managedView())
|
||||
{
|
||||
views.push_back(viewConfigs[i]->managedView());
|
||||
|
||||
viewConfigs[i]->managedView()->managedViewCollection()->allViewsForCameraSync(views);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -242,15 +252,82 @@ void RimManagedViewCollection::allViewsForCameraSync(std::vector<RimView*>& view
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewCollection::applyAllOperations()
|
||||
void RimLinkedViews::applyAllOperations()
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
|
||||
configureOverrides();
|
||||
|
||||
updateCellResult();
|
||||
updateTimeStep(masterView->currentTimeStep());
|
||||
updateTimeStep(NULL, mainView->currentTimeStep());
|
||||
updateRangeFilters();
|
||||
updatePropertyFilters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimLinkedViews::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> optionList;
|
||||
|
||||
if (fieldNeedingOptions == &mainView)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
std::vector<RimView*> views;
|
||||
proj->allVisibleViews(views);
|
||||
|
||||
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 (optionList.size() > 0)
|
||||
{
|
||||
optionList.push_front(caf::PdmOptionItemInfo("None", QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(NULL))));
|
||||
}
|
||||
}
|
||||
|
||||
return optionList;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimLinkedViews::displayNameForView(RimView* view)
|
||||
{
|
||||
RimCase* rimCase = NULL;
|
||||
view->firstAnchestorOrThisOfType(rimCase);
|
||||
|
||||
QString displayName = rimCase->caseUserDescription() + " : " + view->name;
|
||||
|
||||
return displayName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimLinkedViews::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
|
||||
{
|
||||
for (size_t cIdx = 0; cIdx < viewConfigs.size(); ++cIdx)
|
||||
{
|
||||
PdmObjectHandle* childObject = viewConfigs[cIdx];
|
||||
if (childObject)
|
||||
{
|
||||
uiTreeOrdering.add(childObject);
|
||||
}
|
||||
}
|
||||
|
||||
uiTreeOrdering.setForgetRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimManagedViewConfig* RimLinkedViews::viewConfigForView(RimView* view)
|
||||
{
|
||||
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||
{
|
||||
if (viewConfigs[i]->managedView() == view) return viewConfigs[i];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
@ -24,6 +24,7 @@
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
class RimManagedViewConfig;
|
||||
class RiuViewer;
|
||||
@ -33,19 +34,22 @@ class RimView;
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimManagedViewCollection : public caf::PdmObject
|
||||
class RimLinkedViews : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimManagedViewCollection(void);
|
||||
virtual ~RimManagedViewCollection(void);
|
||||
RimLinkedViews(void);
|
||||
virtual ~RimLinkedViews(void);
|
||||
|
||||
caf::PdmPtrField<RimView*> mainView;
|
||||
caf::PdmField<QString> name;
|
||||
|
||||
caf::PdmChildArrayField<RimManagedViewConfig*> viewConfigs;
|
||||
|
||||
void applyAllOperations();
|
||||
|
||||
void updateTimeStep(int timeStep);
|
||||
void updateTimeStep(RimView* sourceView, int timeStep);
|
||||
void updateCellResult();
|
||||
|
||||
void updateRangeFilters();
|
||||
@ -54,4 +58,13 @@ public:
|
||||
void configureOverrides();
|
||||
|
||||
void allViewsForCameraSync(std::vector<RimView*>& views);
|
||||
|
||||
public:
|
||||
static QString displayNameForView(RimView* view);
|
||||
RimManagedViewConfig* viewConfigForView(RimView* view);
|
||||
|
||||
protected:
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
|
||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||
};
|
@ -27,7 +27,7 @@
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGeoMechPropertyFilterCollection.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimView.h"
|
||||
|
||||
@ -46,6 +46,7 @@ RimManagedViewConfig::RimManagedViewConfig(void)
|
||||
|
||||
QString defaultName = "View Config : Empty view";
|
||||
CAF_PDM_InitField(&name, "Name", defaultName, "Managed View Name", "", "", "");
|
||||
name.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&managedView, "ManagedView", "Managed View", "", "", "");
|
||||
managedView.uiCapability()->setUiChildrenHidden(true);
|
||||
@ -110,26 +111,25 @@ void RimManagedViewConfig::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOr
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &syncCamera || changedField == &syncTimeStep)
|
||||
if (changedField == &syncCamera && syncCamera())
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
|
||||
masterView->viewer()->update();
|
||||
if (managedView && managedView->viewer()) managedView->viewer()->update();
|
||||
}
|
||||
else if (changedField == &syncCellResult)
|
||||
else if (changedField == &syncTimeStep && syncTimeStep())
|
||||
{
|
||||
// When cell result is activated, update cell result in managed views
|
||||
// Original result Will not be restored when cell result is disabled
|
||||
|
||||
if (syncCellResult())
|
||||
if (managedView)
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
|
||||
masterView->managedViewCollection()->updateCellResult();
|
||||
RimLinkedViews* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
linkedViews->updateTimeStep(managedView, managedView->currentTimeStep());
|
||||
}
|
||||
}
|
||||
else if (changedField == &syncCellResult && syncCellResult())
|
||||
{
|
||||
RimLinkedViews* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
linkedViews->updateCellResult();
|
||||
}
|
||||
else if (changedField == &syncRangeFilters)
|
||||
{
|
||||
configureOverridesUpdateDisplayModel();
|
||||
@ -146,10 +146,9 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
|
||||
{
|
||||
if (syncCellResult())
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
|
||||
masterView->managedViewCollection()->updateCellResult();
|
||||
RimLinkedViews* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
linkedViews->updateCellResult();
|
||||
}
|
||||
|
||||
name = displayNameForView(managedView);
|
||||
@ -174,7 +173,9 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
|
||||
geoView->setOverridePropertyFilterCollection(NULL);
|
||||
}
|
||||
|
||||
rimView->managedViewCollection()->configureOverrides();
|
||||
RimLinkedViews* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
linkedViews->configureOverrides();
|
||||
}
|
||||
|
||||
updateDisplayName();
|
||||
@ -241,8 +242,10 @@ void RimManagedViewConfig::configureOverridesUpdateDisplayModel()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimManagedViewConfig::configureOverrides()
|
||||
{
|
||||
RimView* masterView = NULL;
|
||||
firstAnchestorOrThisOfType(masterView);
|
||||
RimLinkedViews* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
|
||||
RimView* masterView = linkedViews->mainView();
|
||||
|
||||
if (managedView)
|
||||
{
|
||||
@ -288,9 +291,6 @@ void RimManagedViewConfig::configureOverrides()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Propagate overrides in current view to managed views
|
||||
managedView->managedViewCollection()->configureOverrides();
|
||||
}
|
||||
}
|
||||
|
||||
@ -299,6 +299,8 @@ void RimManagedViewConfig::configureOverrides()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimManagedViewConfig::displayNameForView(RimView* view)
|
||||
{
|
||||
return RimLinkedViews::displayNameForView(view);
|
||||
/*
|
||||
CVF_ASSERT(view);
|
||||
|
||||
RimCase* rimCase = NULL;
|
||||
@ -307,6 +309,7 @@ QString RimManagedViewConfig::displayNameForView(RimView* view)
|
||||
QString displayName = rimCase->caseUserDescription() + " : " + view->name;
|
||||
|
||||
return displayName;
|
||||
*/
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -40,7 +40,6 @@
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RimGeoMechModels.h"
|
||||
#include "RimIdenticalGridCaseGroup.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimManagedViewConfig.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimScriptCollection.h"
|
||||
@ -50,6 +49,7 @@
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimWellLogPlotCollection.h"
|
||||
#include "RimWellLogPlot.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
|
||||
@ -92,6 +92,9 @@ RimProject::RimProject(void)
|
||||
CAF_PDM_InitFieldNoDefault(&mainPlotCollection, "MainPlotCollection", "Plots", ":/Default.png", "", "");
|
||||
mainPlotCollection.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&linkedViews, "LinkedViews", "Linked Views", ":/chain.png", "", "");
|
||||
linkedViews.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&commandObjects, "CommandObjects", "CommandObjects", "", "", "");
|
||||
//wellPathImport.uiCapability()->setUiHidden(true);
|
||||
|
||||
@ -751,6 +754,10 @@ void RimProject::actionsBasedOnSelection(QMenu& contextMenu)
|
||||
{
|
||||
commandIds << "RicDeleteItemFeature";
|
||||
}
|
||||
else if (dynamic_cast<RimLinkedViews*>(uiItem))
|
||||
{
|
||||
commandIds << "RicDeleteItemFeature";
|
||||
}
|
||||
else if (dynamic_cast<RimWellLogPlotCollection*>(uiItem))
|
||||
{
|
||||
commandIds << "RicNewWellLogPlotFeature";
|
||||
@ -769,18 +776,6 @@ void RimProject::actionsBasedOnSelection(QMenu& contextMenu)
|
||||
{
|
||||
commandIds << "RicDeleteItemFeature";
|
||||
}
|
||||
|
||||
if (dynamic_cast<RimManagedViewCollection*>(uiItem))
|
||||
{
|
||||
RimManagedViewCollection* viewCollection = dynamic_cast<RimManagedViewCollection*>(uiItem);
|
||||
caf::SelectionManager::instance()->setActiveChildArrayFieldHandle(&viewCollection->viewConfigs);
|
||||
|
||||
commandIds << "PdmListField_AddItem";
|
||||
}
|
||||
else
|
||||
{
|
||||
caf::SelectionManager::instance()->setActiveChildArrayFieldHandle(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (RicToggleItemsFeatureImpl::isToggleCommandsAvailable())
|
||||
@ -911,6 +906,28 @@ void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QS
|
||||
}
|
||||
}
|
||||
|
||||
uiTreeOrdering.add(&linkedViews);
|
||||
|
||||
uiTreeOrdering.setForgetRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimLinkedViews* RimProject::findLinkedViewsGroupForView(RimView* view)
|
||||
{
|
||||
for (size_t i = 0; i < linkedViews.size(); i++)
|
||||
{
|
||||
RimLinkedViews* group = linkedViews[i];
|
||||
if (view == group->mainView()) return group;
|
||||
|
||||
for (size_t j = 0; j < group->viewConfigs.size(); j++)
|
||||
{
|
||||
RimManagedViewConfig* viewConfig = group->viewConfigs[j];
|
||||
if (viewConfig->managedView() == view) return group;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -33,11 +33,12 @@ class RimCase;
|
||||
class RimCommandObject;
|
||||
class RimEclipseCase;
|
||||
class RimIdenticalGridCaseGroup;
|
||||
class RimLinkedViews;
|
||||
class RimMainPlotCollection;
|
||||
class RimOilField;
|
||||
class RimScriptCollection;
|
||||
class RimWellPathImport;
|
||||
class RimMainPlotCollection;
|
||||
class RimView;
|
||||
class RimWellPathImport;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -64,6 +65,7 @@ public:
|
||||
caf::PdmChildField<RimScriptCollection*> scriptCollection;
|
||||
caf::PdmChildField<RimWellPathImport*> wellPathImport;
|
||||
caf::PdmChildField<RimMainPlotCollection*> mainPlotCollection;
|
||||
caf::PdmChildArrayField<RimLinkedViews*> linkedViews;
|
||||
caf::PdmChildArrayField<RimCommandObject*> commandObjects;
|
||||
caf::PdmField<QString> treeViewState;
|
||||
caf::PdmField<QString> currentModelIndexPath;
|
||||
@ -89,6 +91,8 @@ public:
|
||||
|
||||
void actionsBasedOnSelection(QMenu& contextMenu);
|
||||
|
||||
RimLinkedViews* findLinkedViewsGroupForView(RimView* view);
|
||||
|
||||
protected:
|
||||
// Overridden methods
|
||||
void initScriptDirectories();
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include "Rim3dOverlayInfoConfig.h"
|
||||
#include "RimCellRangeFilterCollection.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimWellPathCollection.h"
|
||||
@ -86,10 +86,6 @@ RimView::RimView(void)
|
||||
CAF_PDM_InitField(&m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step", "", "", "");
|
||||
m_currentTimeStep.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&managedViewCollection, "ManagedViewCollection", "Managed View Collection", "", "", "");
|
||||
managedViewCollection = new RimManagedViewCollection;
|
||||
managedViewCollection.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_overlayInfoConfig, "OverlayInfoConfig", "Info Box", "", "", "");
|
||||
m_overlayInfoConfig = new Rim3dOverlayInfoConfig();
|
||||
m_overlayInfoConfig->setReservoirView(this);
|
||||
@ -456,7 +452,13 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
|
||||
{
|
||||
m_viewer->issueBaseClassUpdate();
|
||||
|
||||
managedViewCollection->updateTimeStep(m_currentTimeStep);
|
||||
RimProject* proj = NULL;
|
||||
this->firstAnchestorOrThisOfType(proj);
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(this);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updateTimeStep(this, m_currentTimeStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (changedField == &backgroundColor)
|
||||
|
@ -34,7 +34,6 @@
|
||||
class Rim3dOverlayInfoConfig;
|
||||
class RimCase;
|
||||
class RimCellRangeFilterCollection;
|
||||
class RimManagedViewCollection;
|
||||
class RiuViewer;
|
||||
|
||||
namespace cvf
|
||||
@ -69,8 +68,6 @@ public:
|
||||
caf::PdmField<int> maximumFrameRate;
|
||||
caf::PdmField<bool> hasUserRequestedAnimation;
|
||||
|
||||
caf::PdmChildField<RimManagedViewCollection*> managedViewCollection;
|
||||
|
||||
RimCellRangeFilterCollection* rangeFilterCollection();
|
||||
const RimCellRangeFilterCollection* rangeFilterCollection() const;
|
||||
void setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc);
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include "RimFaultCollection.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimManagedViewCollection.h"
|
||||
#include "RimManagedViewConfig.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimReservoirCellResultsStorage.h"
|
||||
@ -64,6 +63,7 @@
|
||||
#include "cafNavigationPolicy.h"
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
#include "cafPdmFieldCvfMat4d.h"
|
||||
#include "RimLinkedViews.h"
|
||||
|
||||
using cvf::ManipulatorTrackball;
|
||||
|
||||
@ -271,18 +271,18 @@ void RiuViewer::slotEndAnimation()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuViewer::slotSetCurrentFrame(int frameIndex)
|
||||
{
|
||||
cvf::Rendering* firstRendering = m_renderingSequence->firstRendering();
|
||||
CVF_ASSERT(firstRendering);
|
||||
|
||||
if (m_reservoirView) m_reservoirView->setCurrentTimeStep(frameIndex);
|
||||
|
||||
caf::Viewer::slotSetCurrentFrame(frameIndex);
|
||||
setCurrentFrame(frameIndex);
|
||||
|
||||
if (m_reservoirView)
|
||||
{
|
||||
m_reservoirView->managedViewCollection()->updateTimeStep(frameIndex);
|
||||
RimProject* proj = NULL;
|
||||
m_reservoirView->firstAnchestorOrThisOfType(proj);
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(m_reservoirView);
|
||||
if (linkedViews)
|
||||
{
|
||||
linkedViews->updateTimeStep(m_reservoirView, frameIndex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -509,29 +509,28 @@ void RiuViewer::update()
|
||||
{
|
||||
viewsToUpdate.push_back(m_reservoirView);
|
||||
|
||||
RimView* rimView = m_reservoirView;
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> objects;
|
||||
rimView->objectsWithReferringPtrFields(objects);
|
||||
|
||||
while (objects.size() > 0)
|
||||
RimProject* proj = NULL;
|
||||
m_reservoirView->firstAnchestorOrThisOfType(proj);
|
||||
RimLinkedViews* linkedViews = proj->findLinkedViewsGroupForView(m_reservoirView);
|
||||
if (linkedViews)
|
||||
{
|
||||
RimManagedViewConfig* viewConfig = dynamic_cast<RimManagedViewConfig*>(objects[0]);
|
||||
objects.clear();
|
||||
|
||||
if (viewConfig->syncCamera())
|
||||
RimManagedViewConfig* viewConf = linkedViews->viewConfigForView(m_reservoirView);
|
||||
|
||||
// There is no view config for a master view, but all views for sync must be updated
|
||||
if (!viewConf || viewConf->syncCamera())
|
||||
{
|
||||
viewConfig->firstAnchestorOrThisOfType(rimView);
|
||||
rimView->objectsWithReferringPtrFields(objects);
|
||||
std::vector<RimView*> allViews;
|
||||
linkedViews->allViewsForCameraSync(allViews);
|
||||
|
||||
for (size_t i = 0; i < allViews.size(); i++)
|
||||
{
|
||||
if (allViews[i] != m_reservoirView)
|
||||
{
|
||||
viewsToUpdate.push_back(allViews[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rimView != m_reservoirView)
|
||||
{
|
||||
viewsToUpdate.push_back(rimView);
|
||||
}
|
||||
|
||||
rimView->managedViewCollection()->allViewsForCameraSync(viewsToUpdate);
|
||||
}
|
||||
|
||||
// Propagate view matrix to all relevant views
|
||||
@ -560,3 +559,16 @@ void RiuViewer::issueBaseClassUpdate()
|
||||
|
||||
caf::OpenGLWidget::update();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuViewer::setCurrentFrame(int frameIndex)
|
||||
{
|
||||
cvf::Rendering* firstRendering = m_renderingSequence->firstRendering();
|
||||
CVF_ASSERT(firstRendering);
|
||||
|
||||
if (m_reservoirView) m_reservoirView->setCurrentTimeStep(frameIndex);
|
||||
|
||||
caf::Viewer::slotSetCurrentFrame(frameIndex);
|
||||
}
|
||||
|
@ -77,6 +77,8 @@ public:
|
||||
virtual void update(); // Override of caf::Viewer::update()
|
||||
void issueBaseClassUpdate();
|
||||
|
||||
void setCurrentFrame(int frameIndex);
|
||||
|
||||
public slots:
|
||||
virtual void slotSetCurrentFrame(int frameIndex);
|
||||
virtual void slotEndAnimation();
|
||||
|
Loading…
Reference in New Issue
Block a user