mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#449) Added toggle on dependent views and removed toggle from master
This commit is contained in:
parent
4cf3d9ff5f
commit
9aeb949b06
@ -87,13 +87,14 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
|
||||
RimView* rimView = views[i];
|
||||
if (rimView == masterView) continue;
|
||||
|
||||
RimViewLink* viewConfig = new RimViewLink;
|
||||
viewConfig->setManagedView(rimView);
|
||||
RimViewLink* viewLink = new RimViewLink;
|
||||
viewLink->setManagedView(rimView);
|
||||
|
||||
linkedViews->viewLinks.push_back(viewConfig);
|
||||
linkedViews->viewLinks.push_back(viewLink);
|
||||
|
||||
viewConfig->initAfterReadRecursively();
|
||||
viewConfig->updateOptionSensitivity();
|
||||
viewLink->initAfterReadRecursively();
|
||||
viewLink->updateOptionSensitivity();
|
||||
viewLink->updateUiIcon();
|
||||
}
|
||||
|
||||
proj->viewLinkerCollection()->viewLinkers().push_back(linkedViews);
|
||||
|
@ -42,7 +42,10 @@ CAF_PDM_SOURCE_INIT(RimViewLink, "RimViewLink");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLink::RimViewLink(void)
|
||||
{
|
||||
CAF_PDM_InitObject("View Config", ":/ReservoirView.png", "", "");
|
||||
CAF_PDM_InitObject("View Config", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", "");
|
||||
isActive.uiCapability()->setUiHidden(true);
|
||||
|
||||
QString defaultName = "View Config: Empty view";
|
||||
CAF_PDM_InitField(&name, "Name", defaultName, "Managed View Name", "", "", "");
|
||||
@ -133,7 +136,12 @@ void RimViewLink::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, Q
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &syncCamera && syncCamera())
|
||||
if (changedField == &isActive)
|
||||
{
|
||||
updateUiIcon();
|
||||
configureOverrides();
|
||||
}
|
||||
else if (changedField == &syncCamera && syncCamera())
|
||||
{
|
||||
RimViewLinker* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
@ -214,6 +222,7 @@ void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
|
||||
|
||||
updateOptionSensitivity();
|
||||
updateDisplayNameAndIcon();
|
||||
updateUiIcon();
|
||||
|
||||
name.uiCapability()->updateConnectedEditors();
|
||||
}
|
||||
@ -231,6 +240,7 @@ void RimViewLink::initAfterRead()
|
||||
{
|
||||
configureOverrides();
|
||||
updateDisplayNameAndIcon();
|
||||
updateUiIcon();
|
||||
updateOptionSensitivity();
|
||||
}
|
||||
|
||||
@ -301,7 +311,13 @@ void RimViewLink::configureOverrides()
|
||||
RimEclipseView* manEclView = managedEclipseView();
|
||||
RimGeoMechView* manGeoView = managedGeoView();
|
||||
|
||||
if (syncVisibleCells)
|
||||
if (!isActive)
|
||||
{
|
||||
m_managedView->setOverrideRangeFilterCollection(NULL);
|
||||
if (manEclView) manEclView->setOverridePropertyFilterCollection(NULL);
|
||||
if (manGeoView) manGeoView->setOverridePropertyFilterCollection(NULL);
|
||||
}
|
||||
else if (syncVisibleCells)
|
||||
{
|
||||
m_managedView->setOverrideRangeFilterCollection(NULL);
|
||||
if (manEclView) manEclView->setOverridePropertyFilterCollection(NULL);
|
||||
@ -403,32 +419,6 @@ void RimViewLink::updateOptionSensitivity()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLink::updateDisplayNameAndIcon()
|
||||
{
|
||||
if (m_managedView)
|
||||
{
|
||||
name = RimViewLinker::displayNameForView(m_managedView);
|
||||
}
|
||||
else
|
||||
{
|
||||
name = "View Config: Empty view";
|
||||
}
|
||||
|
||||
QIcon icon;
|
||||
if (m_managedView)
|
||||
{
|
||||
RimCase* rimCase = NULL;
|
||||
m_managedView->firstAnchestorOrThisOfType(rimCase);
|
||||
|
||||
icon = rimCase->uiCapability()->uiIcon();
|
||||
}
|
||||
|
||||
this->setUiIcon(icon);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -469,7 +459,6 @@ void RimViewLink::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiO
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLink::removeOverrides()
|
||||
{
|
||||
|
||||
if (m_managedView)
|
||||
{
|
||||
RimEclipseView* manEclView = managedEclipseView();
|
||||
@ -480,3 +469,19 @@ void RimViewLink::removeOverrides()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLink::updateUiIcon()
|
||||
{
|
||||
RimViewLinker::applyIconEnabledState(this, m_originalIcon, !isActive());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLink::updateDisplayNameAndIcon()
|
||||
{
|
||||
RimViewLinker::findNameAndIconFromView(&name.v(), &m_originalIcon, managedView());
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,7 @@ public:
|
||||
RimViewLink(void);
|
||||
virtual ~RimViewLink(void);
|
||||
|
||||
caf::PdmField<bool> isActive;
|
||||
caf::PdmField<QString> name;
|
||||
|
||||
RimView* managedView();
|
||||
@ -58,6 +59,10 @@ public:
|
||||
void updateOptionSensitivity();
|
||||
void removeOverrides();
|
||||
|
||||
void updateUiIcon();
|
||||
void updateDisplayNameAndIcon();
|
||||
|
||||
|
||||
protected:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
|
||||
@ -65,14 +70,15 @@ protected:
|
||||
virtual void initAfterRead();
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||
virtual caf::PdmFieldHandle* objectToggleField() { return &isActive; }
|
||||
|
||||
|
||||
private:
|
||||
void configureOverridesUpdateDisplayModel();
|
||||
void updateDisplayNameAndIcon();
|
||||
|
||||
RimEclipseView* managedEclipseView();
|
||||
RimGeoMechView* managedGeoView();
|
||||
|
||||
caf::PdmPtrField<RimView*> m_managedView;
|
||||
QIcon m_originalIcon;
|
||||
};
|
||||
|
@ -51,10 +51,7 @@ CAF_PDM_SOURCE_INIT(RimViewLinker, "RimViewLinker");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker::RimViewLinker(void)
|
||||
{
|
||||
CAF_PDM_InitObject("Linked Views", ":/Reservoir1View.png", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_isActive, "Active", true, "Active", "", "", "");
|
||||
m_isActive.uiCapability()->setUiHidden(true);
|
||||
CAF_PDM_InitObject("Linked Views", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_name, "Name", QString("View Group Name"), "View Group Name", "", "", "");
|
||||
m_name.uiCapability()->setUiHidden(true);
|
||||
@ -65,6 +62,7 @@ RimViewLinker::RimViewLinker(void)
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&viewLinks, "ManagedViews", "Managed Views", "", "", "");
|
||||
viewLinks.uiCapability()->setUiHidden(true);
|
||||
viewLinks.uiCapability()->setUiChildrenHidden(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -96,13 +94,15 @@ void RimViewLinker::updateTimeStep(RimView* sourceView, int timeStep)
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
if (managedViewConfig->managedView() && managedViewConfig->managedView() != sourceView)
|
||||
RimViewLink* viewLink = viewLinks[i];
|
||||
if (!viewLink->isActive) continue;
|
||||
|
||||
if (viewLink->managedView() && viewLink->managedView() != sourceView)
|
||||
{
|
||||
if (managedViewConfig->syncTimeStep() && managedViewConfig->managedView()->viewer())
|
||||
if (viewLink->syncTimeStep() && viewLink->managedView()->viewer())
|
||||
{
|
||||
managedViewConfig->managedView()->viewer()->setCurrentFrame(timeStep);
|
||||
managedViewConfig->managedView()->viewer()->animationControl()->setCurrentFrameOnly(timeStep);
|
||||
viewLink->managedView()->viewer()->setCurrentFrame(timeStep);
|
||||
viewLink->managedView()->viewer()->animationControl()->setCurrentFrameOnly(timeStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -123,12 +123,14 @@ void RimViewLinker::updateCellResult()
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
if (managedViewConfig->managedView())
|
||||
RimViewLink* viewLink = viewLinks[i];
|
||||
if (!viewLink->isActive) continue;
|
||||
|
||||
if (viewLink->managedView())
|
||||
{
|
||||
if (managedViewConfig->syncCellResult())
|
||||
if (viewLink->syncCellResult())
|
||||
{
|
||||
RimView* rimView = managedViewConfig->managedView();
|
||||
RimView* rimView = viewLink->managedView();
|
||||
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (eclipeView)
|
||||
{
|
||||
@ -148,12 +150,14 @@ void RimViewLinker::updateCellResult()
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
if (managedViewConfig->managedView())
|
||||
RimViewLink* viewLink = viewLinks[i];
|
||||
if (!viewLink->isActive) continue;
|
||||
|
||||
if (viewLink->managedView())
|
||||
{
|
||||
if (managedViewConfig->syncCellResult())
|
||||
if (viewLink->syncCellResult())
|
||||
{
|
||||
RimView* rimView = managedViewConfig->managedView();
|
||||
RimView* rimView = viewLink->managedView();
|
||||
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
|
||||
if (geoView)
|
||||
{
|
||||
@ -256,8 +260,15 @@ void RimViewLinker::configureOverrides()
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
managedViewConfig->configureOverrides();
|
||||
RimViewLink* viewLink = viewLinks[i];
|
||||
if (viewLink->isActive)
|
||||
{
|
||||
viewLink->configureOverrides();
|
||||
}
|
||||
else
|
||||
{
|
||||
viewLink->removeOverrides();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,7 +286,7 @@ void RimViewLinker::allViewsForCameraSync(RimView* source, std::vector<RimView*>
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
if (viewLinks[i]->syncCamera && viewLinks[i]->managedView() && source != viewLinks[i]->managedView())
|
||||
if (viewLinks[i]->isActive() && viewLinks[i]->syncCamera && viewLinks[i]->managedView() && source != viewLinks[i]->managedView())
|
||||
{
|
||||
views.push_back(viewLinks[i]->managedView());
|
||||
}
|
||||
@ -314,23 +325,6 @@ QString RimViewLinker::displayNameForView(RimView* view)
|
||||
return displayName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
|
||||
{
|
||||
for (size_t cIdx = 0; cIdx < viewLinks.size(); ++cIdx)
|
||||
{
|
||||
PdmObjectHandle* childObject = viewLinks[cIdx];
|
||||
if (childObject)
|
||||
{
|
||||
uiTreeOrdering.add(childObject);
|
||||
}
|
||||
}
|
||||
|
||||
uiTreeOrdering.setForgetRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -410,47 +404,33 @@ bool RimViewLinker::isActive()
|
||||
RimViewLinkerCollection* viewLinkerCollection = NULL;
|
||||
this->firstAnchestorOrThisOfType(viewLinkerCollection);
|
||||
|
||||
if (!viewLinkerCollection->isActive()) return false;
|
||||
|
||||
return m_isActive;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (&m_isActive == changedField)
|
||||
{
|
||||
if (m_isActive)
|
||||
{
|
||||
this->applyAllOperations();
|
||||
}
|
||||
else
|
||||
{
|
||||
this->removeOverrides();
|
||||
}
|
||||
}
|
||||
|
||||
updateUiIcon();
|
||||
return viewLinkerCollection->isActive();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Hande icon update locally as PdmUiItem::updateUiIconFromState works only for static icons
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateUiIcon()
|
||||
void RimViewLinker::applyIconEnabledState(caf::PdmObject* obj, const QIcon& icon, bool disable)
|
||||
{
|
||||
QPixmap icPixmap;
|
||||
icPixmap = m_originalIcon.pixmap(16, 16, QIcon::Normal);
|
||||
icPixmap = icon.pixmap(16, 16, QIcon::Normal);
|
||||
|
||||
if (!m_isActive)
|
||||
if (disable)
|
||||
{
|
||||
QIcon temp(icPixmap);
|
||||
icPixmap = temp.pixmap(16, 16, QIcon::Disabled);
|
||||
}
|
||||
|
||||
QIcon newIcon(icPixmap);
|
||||
this->setUiIcon(newIcon);
|
||||
obj->setUiIcon(newIcon);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateUiIcon()
|
||||
{
|
||||
RimViewLinker::applyIconEnabledState(this, m_originalIcon, false);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -458,29 +438,7 @@ void RimViewLinker::updateUiIcon()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::setNameAndIcon()
|
||||
{
|
||||
m_name = displayNameForView(m_mainView);
|
||||
|
||||
QIcon icon;
|
||||
if (m_mainView)
|
||||
{
|
||||
RimCase* rimCase = NULL;
|
||||
m_mainView->firstAnchestorOrThisOfType(rimCase);
|
||||
|
||||
if (dynamic_cast<RimGeoMechCase*>(rimCase))
|
||||
{
|
||||
icon = QIcon(":/GeoMechCase48x48.png");
|
||||
}
|
||||
else if (dynamic_cast<RimEclipseResultCase*>(rimCase))
|
||||
{
|
||||
icon = QIcon(":/Case48x48.png");
|
||||
}
|
||||
else if (dynamic_cast<RimEclipseInputCase*>(rimCase))
|
||||
{
|
||||
icon = QIcon(":/EclipseInput48x48.png");
|
||||
}
|
||||
}
|
||||
|
||||
m_originalIcon = icon;
|
||||
RimViewLinker::findNameAndIconFromView(&m_name.v(), &m_originalIcon, m_mainView);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -490,6 +448,8 @@ void RimViewLinker::scheduleGeometryRegenForDepViews(RivCellSetEnum geometryType
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
if (!viewLinks[i]->isActive) continue;
|
||||
|
||||
if ( viewLinks[i]->syncVisibleCells()
|
||||
|| viewLinks[i]->syncPropertyFilters()
|
||||
|| viewLinks[i]->syncRangeFilters()
|
||||
@ -514,6 +474,8 @@ void RimViewLinker::scheduleCreateDisplayModelAndRedrawForDependentViews()
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
if (!viewLinks[i]->isActive) continue;
|
||||
|
||||
if (viewLinks[i]->syncVisibleCells()
|
||||
|| viewLinks[i]->syncPropertyFilters()
|
||||
|| viewLinks[i]->syncRangeFilters()
|
||||
@ -541,3 +503,36 @@ void RimViewLinker::removeOverrides()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::findNameAndIconFromView(QString* name, QIcon* icon, RimView* view)
|
||||
{
|
||||
CVF_ASSERT(name && icon);
|
||||
|
||||
*name = displayNameForView(view);
|
||||
|
||||
if (view)
|
||||
{
|
||||
RimCase* rimCase = NULL;
|
||||
view->firstAnchestorOrThisOfType(rimCase);
|
||||
|
||||
if (dynamic_cast<RimGeoMechCase*>(rimCase))
|
||||
{
|
||||
*icon = QIcon(":/GeoMechCase48x48.png");
|
||||
}
|
||||
else if (dynamic_cast<RimEclipseResultCase*>(rimCase))
|
||||
{
|
||||
*icon = QIcon(":/Case48x48.png");
|
||||
}
|
||||
else if (dynamic_cast<RimEclipseInputCase*>(rimCase))
|
||||
{
|
||||
*icon = QIcon(":/EclipseInput48x48.png");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*icon = QIcon();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,10 @@ public:
|
||||
void allViews(std::vector<RimView*>& views);
|
||||
|
||||
void updateUiIcon();
|
||||
void setNameAndIcon();
|
||||
|
||||
static void applyIconEnabledState(caf::PdmObject* obj, const QIcon& icon, bool disable);
|
||||
static void findNameAndIconFromView(QString* name, QIcon* icon, RimView* view);
|
||||
|
||||
public:
|
||||
static QString displayNameForView(RimView* view);
|
||||
@ -74,19 +78,12 @@ public:
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_name; }
|
||||
virtual caf::PdmFieldHandle* objectToggleField() { return &m_isActive; }
|
||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||
virtual void initAfterRead();
|
||||
|
||||
void setNameAndIcon();
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
|
||||
private:
|
||||
bool isActive();
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_isActive;
|
||||
caf::PdmPtrField<RimView*> m_mainView;
|
||||
caf::PdmField<QString> m_name;
|
||||
QIcon m_originalIcon;
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "RimViewLinkerCollection.h"
|
||||
|
||||
#include "RimViewLinker.h"
|
||||
#include "RimViewLink.h"
|
||||
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
|
||||
@ -56,10 +57,14 @@ void RimViewLinkerCollection::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTre
|
||||
{
|
||||
for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx)
|
||||
{
|
||||
PdmObjectHandle* childObject = viewLinkers[cIdx];
|
||||
RimViewLinker* childObject = viewLinkers[cIdx];
|
||||
if (childObject)
|
||||
{
|
||||
uiTreeOrdering.add(childObject);
|
||||
for (size_t j = 0; j < childObject->viewLinks.size(); j++)
|
||||
{
|
||||
uiTreeOrdering.add(childObject->viewLinks()[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user