mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2820 Legends : Support selection of legend items when clicking in 2D intersection view
This commit is contained in:
@@ -17,24 +17,26 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Rim2dIntersectionView.h"
|
||||
#include "RimCase.h"
|
||||
#include "RimIntersection.h"
|
||||
#include "RimGridView.h"
|
||||
|
||||
#include "Rim3dOverlayInfoConfig.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimCase.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGeoMechCellColors.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimGridView.h"
|
||||
#include "RimIntersection.h"
|
||||
#include "RimRegularLegendConfig.h"
|
||||
#include "RimTernaryLegendConfig.h"
|
||||
#include "RimSimWellInView.h"
|
||||
#include "RimTernaryLegendConfig.h"
|
||||
#include "RimWellPath.h"
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
#include "RiuViewer.h"
|
||||
|
||||
#include "RivIntersectionPartMgr.h"
|
||||
#include "RivTernarySaturationOverlayItem.h"
|
||||
#include "RivSimWellPipesPartMgr.h"
|
||||
#include "RivTernarySaturationOverlayItem.h"
|
||||
#include "RivWellHeadPartMgr.h"
|
||||
#include "RivWellPathPartMgr.h"
|
||||
|
||||
@@ -345,12 +347,26 @@ std::vector<RimLegendConfig*> Rim2dIntersectionView::legendConfigs() const
|
||||
{
|
||||
std::vector<RimLegendConfig*> legendsIn3dView;
|
||||
|
||||
legendsIn3dView.push_back(m_legendConfig);
|
||||
legendsIn3dView.push_back(m_ternaryLegendConfig);
|
||||
|
||||
// Return empty list, as the intersection view has a copy of the legend items. Picking and selection of the corresponding
|
||||
// item is handeled by handleOverlayItemPicked()
|
||||
return legendsIn3dView;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool Rim2dIntersectionView::handleOverlayItemPicked(const cvf::OverlayItem* pickedOverlayItem) const
|
||||
{
|
||||
if (m_legendObjectToSelect)
|
||||
{
|
||||
RiuMainWindow::instance()->selectAsCurrentItem(m_legendObjectToSelect);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -574,6 +590,8 @@ void Rim2dIntersectionView::updateCurrentTimeStep()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Rim2dIntersectionView::updateLegends()
|
||||
{
|
||||
m_legendObjectToSelect = nullptr;
|
||||
|
||||
if (!m_viewer) return;
|
||||
|
||||
m_viewer->removeAllColorLegends();
|
||||
@@ -598,11 +616,15 @@ void Rim2dIntersectionView::updateLegends()
|
||||
{
|
||||
m_ternaryLegendConfig()->setTitle("Cell Result:\n");
|
||||
legend = m_ternaryLegendConfig()->titledOverlayFrame();
|
||||
|
||||
m_legendObjectToSelect = eclView->cellResult()->ternaryLegendConfig();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_legendConfig()->setTitle("Cell Result:\n" + eclView->cellResult()->resultVariableUiShortName());
|
||||
legend = m_legendConfig()->titledOverlayFrame();
|
||||
|
||||
m_legendObjectToSelect = eclView->cellResult()->legendConfig();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,6 +634,8 @@ void Rim2dIntersectionView::updateLegends()
|
||||
|
||||
geoView->updateLegendTextAndRanges(m_legendConfig(), m_currentTimeStep());
|
||||
legend = m_legendConfig()->titledOverlayFrame();
|
||||
|
||||
m_legendObjectToSelect = geoView->cellResult()->legendConfig();
|
||||
}
|
||||
|
||||
if ( legend )
|
||||
|
||||
@@ -32,6 +32,7 @@ class RivIntersectionPartMgr;
|
||||
namespace cvf
|
||||
{
|
||||
class ModelBasicList;
|
||||
class OverlayItem;
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
@@ -69,6 +70,7 @@ public:
|
||||
bool showDefiningPoints() const;
|
||||
|
||||
std::vector<RimLegendConfig*> legendConfigs() const override;
|
||||
bool handleOverlayItemPicked(const cvf::OverlayItem* pickedOverlayItem) const;
|
||||
|
||||
protected:
|
||||
void updateLegends() override;
|
||||
@@ -108,4 +110,6 @@ protected:
|
||||
cvf::ref<cvf::Transform> m_scaleTransform;
|
||||
|
||||
caf::PdmField<bool> m_showDefiningPoints;
|
||||
|
||||
caf::PdmPointer<caf::PdmObject> m_legendObjectToSelect;
|
||||
};
|
||||
|
||||
@@ -1062,15 +1062,22 @@ bool RiuViewerCommands::handleOverlayItemPicking(int winPosX, int winPosY)
|
||||
|
||||
if (pickedOverlayItem)
|
||||
{
|
||||
std::vector<RimLegendConfig*> legendConfigs = m_reservoirView->legendConfigs();
|
||||
|
||||
for (const auto& legendConfig : legendConfigs)
|
||||
auto intersectionView = dynamic_cast<Rim2dIntersectionView*>(m_reservoirView.p());
|
||||
if (intersectionView && intersectionView->handleOverlayItemPicked(pickedOverlayItem))
|
||||
{
|
||||
if (legendConfig && legendConfig->titledOverlayFrame() == pickedOverlayItem)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<RimLegendConfig*> legendConfigs = m_reservoirView->legendConfigs();
|
||||
for (const auto& legendConfig : legendConfigs)
|
||||
{
|
||||
RiuMainWindow::instance()->selectAsCurrentItem(legendConfig);
|
||||
if (legendConfig && legendConfig->titledOverlayFrame() == pickedOverlayItem)
|
||||
{
|
||||
RiuMainWindow::instance()->selectAsCurrentItem(legendConfig);
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user