mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#539) When view is unlinked, ask user to keep either override or original range filter collection
This commit is contained in:
parent
065a688c19
commit
8de8100c3e
@ -42,11 +42,17 @@ bool RicDeleteAllLinkedViewsFeature::isCommandEnabled()
|
|||||||
void RicDeleteAllLinkedViewsFeature::onActionTriggered(bool isChecked)
|
void RicDeleteAllLinkedViewsFeature::onActionTriggered(bool isChecked)
|
||||||
{
|
{
|
||||||
RimProject* proj = RiaApplication::instance()->project();
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
if (proj->viewLinkerCollection()->viewLinker())
|
|
||||||
{
|
|
||||||
delete proj->viewLinkerCollection()->viewLinker();
|
|
||||||
|
|
||||||
proj->viewLinkerCollection()->viewLinker = NULL;
|
RimViewLinker* viewLinker = proj->viewLinkerCollection()->viewLinker();
|
||||||
|
if (viewLinker)
|
||||||
|
{
|
||||||
|
// Remove the view linker object from the view linker collection
|
||||||
|
// viewLinkerCollection->viewLinker is a PdmChildField containing one RimViewLinker child object
|
||||||
|
proj->viewLinkerCollection->viewLinker.removeChildObject(viewLinker);
|
||||||
|
|
||||||
|
viewLinker->applyRangeFilterCollectionByUserChoice();
|
||||||
|
|
||||||
|
delete viewLinker;
|
||||||
|
|
||||||
proj->uiCapability()->updateConnectedEditors();
|
proj->uiCapability()->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,8 @@ void RicSetMasterViewFeature::onActionTriggered(bool isChecked)
|
|||||||
RimProject* proj = RiaApplication::instance()->project();
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
RimViewLinker* viewLinker = proj->viewLinkerCollection()->viewLinker();
|
RimViewLinker* viewLinker = proj->viewLinkerCollection()->viewLinker();
|
||||||
|
|
||||||
|
viewLinker->applyRangeFilterCollectionByUserChoice();
|
||||||
|
|
||||||
RimView* previousMasterView = viewLinker->masterView();
|
RimView* previousMasterView = viewLinker->masterView();
|
||||||
|
|
||||||
viewLinker->setMasterView(activeView);
|
viewLinker->setMasterView(activeView);
|
||||||
@ -75,7 +77,6 @@ void RicSetMasterViewFeature::onActionTriggered(bool isChecked)
|
|||||||
|
|
||||||
viewLinker->addDependentView(previousMasterView);
|
viewLinker->addDependentView(previousMasterView);
|
||||||
|
|
||||||
|
|
||||||
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
|
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
|
||||||
proj->updateConnectedEditors();
|
proj->updateConnectedEditors();
|
||||||
|
|
||||||
|
@ -60,8 +60,9 @@ void RicUnLinkViewFeature::onActionTriggered(bool isChecked)
|
|||||||
if (!activeView) return;
|
if (!activeView) return;
|
||||||
|
|
||||||
RimViewController* viewController = activeView->viewController();
|
RimViewController* viewController = activeView->viewController();
|
||||||
caf::SelectionManager::instance()->setSelectedItem(viewController);
|
viewController->applyRangeFilterCollectionByUserChoice();
|
||||||
|
|
||||||
|
caf::SelectionManager::instance()->setSelectedItem(viewController);
|
||||||
caf::CmdFeature* feature = caf::CmdFeatureManager::instance()->getCommandFeature("RicDeleteItemFeature");
|
caf::CmdFeature* feature = caf::CmdFeatureManager::instance()->getCommandFeature("RicDeleteItemFeature");
|
||||||
if (feature)
|
if (feature)
|
||||||
{
|
{
|
||||||
|
@ -705,3 +705,26 @@ RimCellRangeFilterCollection* RimView::overrideRangeFilterCollection()
|
|||||||
return m_overrideRangeFilterCollection();
|
return m_overrideRangeFilterCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimView::replaceRangeFilterCollectionWithOverride()
|
||||||
|
{
|
||||||
|
RimCellRangeFilterCollection* overrideRfc = m_overrideRangeFilterCollection;
|
||||||
|
CVF_ASSERT(overrideRfc);
|
||||||
|
|
||||||
|
RimCellRangeFilterCollection* currentRfc = m_rangeFilterCollection;
|
||||||
|
if (currentRfc)
|
||||||
|
{
|
||||||
|
delete currentRfc;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Must call removeChildObject() to make sure the object has no parent
|
||||||
|
// No parent is required when assigning a object into a field
|
||||||
|
m_overrideRangeFilterCollection.removeChildObject(overrideRfc);
|
||||||
|
|
||||||
|
m_rangeFilterCollection = overrideRfc;
|
||||||
|
|
||||||
|
this->uiCapability()->updateConnectedEditors();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ public:
|
|||||||
|
|
||||||
RimCellRangeFilterCollection* overrideRangeFilterCollection();
|
RimCellRangeFilterCollection* overrideRangeFilterCollection();
|
||||||
void setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc);
|
void setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc);
|
||||||
|
void replaceRangeFilterCollectionWithOverride();
|
||||||
|
|
||||||
caf::PdmField< std::vector<int> > windowGeometry;
|
caf::PdmField< std::vector<int> > windowGeometry;
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@
|
|||||||
#include "cafPdmUiTreeOrdering.h"
|
#include "cafPdmUiTreeOrdering.h"
|
||||||
#include "RigCaseToCaseRangeFilterMapper.h"
|
#include "RigCaseToCaseRangeFilterMapper.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimViewController, "ViewController");
|
CAF_PDM_SOURCE_INIT(RimViewController, "ViewController");
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -148,6 +150,11 @@ void RimViewController::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
|||||||
{
|
{
|
||||||
if (changedField == &m_isActive)
|
if (changedField == &m_isActive)
|
||||||
{
|
{
|
||||||
|
if (!m_isActive)
|
||||||
|
{
|
||||||
|
applyRangeFilterCollectionByUserChoice();
|
||||||
|
}
|
||||||
|
|
||||||
updateOverrides();
|
updateOverrides();
|
||||||
updateResultColorsControl();
|
updateResultColorsControl();
|
||||||
updateCameraLink();
|
updateCameraLink();
|
||||||
@ -176,6 +183,10 @@ void RimViewController::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
|||||||
}
|
}
|
||||||
else if (changedField == &m_syncRangeFilters)
|
else if (changedField == &m_syncRangeFilters)
|
||||||
{
|
{
|
||||||
|
if (!m_syncRangeFilters)
|
||||||
|
{
|
||||||
|
applyRangeFilterCollectionByUserChoice();
|
||||||
|
}
|
||||||
updateOverrides();
|
updateOverrides();
|
||||||
}
|
}
|
||||||
else if (changedField == &m_syncPropertyFilters)
|
else if (changedField == &m_syncPropertyFilters)
|
||||||
@ -478,7 +489,6 @@ RimViewLinker* RimViewController::ownerViewLinker()
|
|||||||
{
|
{
|
||||||
RimViewLinker* viewLinker = NULL;
|
RimViewLinker* viewLinker = NULL;
|
||||||
this->firstAnchestorOrThisOfType(viewLinker);
|
this->firstAnchestorOrThisOfType(viewLinker);
|
||||||
CVF_ASSERT(viewLinker);
|
|
||||||
|
|
||||||
return viewLinker;
|
return viewLinker;
|
||||||
}
|
}
|
||||||
@ -812,3 +822,52 @@ void RimViewController::updateRangeFilterOverrides(RimCellRangeFilter* changedRa
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimViewController::applyRangeFilterCollectionByUserChoice()
|
||||||
|
{
|
||||||
|
if (!m_managedView->overrideRangeFilterCollection())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool restoreOriginal = askUserToRestoreOriginalRangeFilterCollection(m_managedView->name);
|
||||||
|
if (restoreOriginal)
|
||||||
|
{
|
||||||
|
m_managedView->setOverrideRangeFilterCollection(NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_managedView->replaceRangeFilterCollectionWithOverride();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RimViewController::askUserToRestoreOriginalRangeFilterCollection(const QString& viewName)
|
||||||
|
{
|
||||||
|
RimView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
|
|
||||||
|
QMessageBox msgBox(activeView->viewer()->layoutWidget());
|
||||||
|
msgBox.setIcon(QMessageBox::Question);
|
||||||
|
|
||||||
|
QString questionText;
|
||||||
|
questionText = QString("The linked view named \"%1\" is about to be unlinked. The range filters can either restore the original or keep the current range filters based on the master view.").arg(viewName);
|
||||||
|
|
||||||
|
msgBox.setText(questionText);
|
||||||
|
msgBox.setInformativeText("Do you want to restore the original range filters?");
|
||||||
|
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||||
|
|
||||||
|
int ret = msgBox.exec();
|
||||||
|
if (ret == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,8 @@ public:
|
|||||||
void updateDisplayNameAndIcon();
|
void updateDisplayNameAndIcon();
|
||||||
|
|
||||||
void updateRangeFilterOverrides(RimCellRangeFilter* changedRangeFilter);
|
void updateRangeFilterOverrides(RimCellRangeFilter* changedRangeFilter);
|
||||||
|
void applyRangeFilterCollectionByUserChoice();
|
||||||
|
|
||||||
|
|
||||||
protected: // Pdm overridden methods
|
protected: // Pdm overridden methods
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||||
@ -98,6 +100,8 @@ private:
|
|||||||
RimGeoMechView* managedGeoView();
|
RimGeoMechView* managedGeoView();
|
||||||
static void removeOverrides(RimView* view);
|
static void removeOverrides(RimView* view);
|
||||||
|
|
||||||
|
static bool askUserToRestoreOriginalRangeFilterCollection(const QString& viewName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<QString> m_name;
|
caf::PdmField<QString> m_name;
|
||||||
caf::PdmPtrField<RimView*> m_managedView;
|
caf::PdmPtrField<RimView*> m_managedView;
|
||||||
|
@ -372,6 +372,14 @@ bool RimViewLinker::isActive()
|
|||||||
RimViewLinkerCollection* viewLinkerCollection = NULL;
|
RimViewLinkerCollection* viewLinkerCollection = NULL;
|
||||||
this->firstAnchestorOrThisOfType(viewLinkerCollection);
|
this->firstAnchestorOrThisOfType(viewLinkerCollection);
|
||||||
|
|
||||||
|
if (!viewLinkerCollection)
|
||||||
|
{
|
||||||
|
// This will happen when the all linked views are about to be deleted
|
||||||
|
// The viewLinker is taken out of the viewLinkerCollection, and no parent can be found
|
||||||
|
// See RicDeleteAllLinkedViewsFeature
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return viewLinkerCollection->isActive();
|
return viewLinkerCollection->isActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,3 +622,22 @@ void RimViewLinker::addViewControllers(caf::PdmUiTreeOrdering& uiTreeOrdering)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimViewLinker::applyRangeFilterCollectionByUserChoice()
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < m_viewControllers.size(); j++)
|
||||||
|
{
|
||||||
|
m_viewControllers[j]->applyRangeFilterCollectionByUserChoice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimViewLinker::removeViewController(RimViewController* viewController)
|
||||||
|
{
|
||||||
|
m_viewControllers.removeChildObject(viewController);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ public:
|
|||||||
|
|
||||||
void addDependentView(RimView* view);
|
void addDependentView(RimView* view);
|
||||||
void updateDependentViews();
|
void updateDependentViews();
|
||||||
|
void removeViewController(RimViewController* viewController);
|
||||||
|
|
||||||
void updateCamera(RimView* sourceView);
|
void updateCamera(RimView* sourceView);
|
||||||
void updateTimeStep(RimView* sourceView, int timeStep);
|
void updateTimeStep(RimView* sourceView, int timeStep);
|
||||||
@ -64,6 +65,7 @@ public:
|
|||||||
|
|
||||||
void updateCellResult();
|
void updateCellResult();
|
||||||
void updateRangeFilters(RimCellRangeFilter* changedRangeFilter);
|
void updateRangeFilters(RimCellRangeFilter* changedRangeFilter);
|
||||||
|
void applyRangeFilterCollectionByUserChoice();
|
||||||
|
|
||||||
void scheduleGeometryRegenForDepViews(RivCellSetEnum geometryType);
|
void scheduleGeometryRegenForDepViews(RivCellSetEnum geometryType);
|
||||||
void scheduleCreateDisplayModelAndRedrawForDependentViews();
|
void scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||||
|
@ -74,6 +74,11 @@ void RimViewLinkerCollection::fieldChangedByUi(const caf::PdmFieldHandle* change
|
|||||||
{
|
{
|
||||||
if (viewLinker())
|
if (viewLinker())
|
||||||
{
|
{
|
||||||
|
if (!isActive)
|
||||||
|
{
|
||||||
|
viewLinker()->applyRangeFilterCollectionByUserChoice();
|
||||||
|
}
|
||||||
|
|
||||||
viewLinker()->updateDependentViews();
|
viewLinker()->updateDependentViews();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,6 +231,7 @@ void RiuViewer::mouseReleaseEvent(QMouseEvent* event)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event->accept();
|
||||||
m_viewerCommands->displayContextMenu(event);
|
m_viewerCommands->displayContextMenu(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,17 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
menu.exec(event->globalPos());
|
if (menu.actions().size() > 0)
|
||||||
|
{
|
||||||
|
// event->accept();
|
||||||
|
QAction* act = menu.exec(event->globalPos());
|
||||||
|
/*
|
||||||
|
if (act)
|
||||||
|
{
|
||||||
|
cvf::Trace::show("Jadda");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user