#2476 2dIntersectionView. Clean up context menus

This commit is contained in:
Bjørn Erik Jensen 2018-03-14 08:05:38 +01:00
parent 15e242d1e3
commit b7e8834b4c
5 changed files with 109 additions and 65 deletions

View File

@ -25,18 +25,31 @@
#include "RimGeoMechCellColors.h"
#include "RimGeoMechView.h"
#include "RimGridView.h"
#include "Rim2dIntersectionView.h"
#include "RimIntersection.h"
#include "Riu3DMainWindowTools.h"
#include <QAction>
CAF_CMD_SOURCE_INIT(RicSelectColorResult, "RicSelectColorResult");
//--------------------------------------------------------------------------------------------------
/// Internal function
//--------------------------------------------------------------------------------------------------
RimGridView* gridViewFrom2dIntersectionView(const Rim2dIntersectionView* int2dView)
{
RimGridView* gridView = nullptr;
int2dView->intersection()->firstAncestorOrThisOfType(gridView);
return gridView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSelectColorResult::setupActionLook(QAction* actionToSetup)
{
actionToSetup->setText("Color Result");
actionToSetup->setText("Select Color Result");
actionToSetup->setIcon(QIcon(":/CellResult.png"));
}
@ -47,7 +60,7 @@ bool RicSelectColorResult::isCommandEnabled()
{
if (RicWellLogTools::isWellPathOrSimWellSelectedInView()) return false;
return RiaApplication::instance()->activeGridView() != nullptr;
return RiaApplication::instance()->activeReservoirView() != nullptr;
}
//--------------------------------------------------------------------------------------------------
@ -55,18 +68,23 @@ bool RicSelectColorResult::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicSelectColorResult::onActionTriggered(bool isChecked)
{
RimGridView* activeView = RiaApplication::instance()->activeGridView();
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim2dIntersectionView* int2dView = dynamic_cast<Rim2dIntersectionView*>(activeView);
RimGridView* gridView = nullptr;
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>(activeView);
if (int2dView) gridView = gridViewFrom2dIntersectionView(int2dView);
else gridView = dynamic_cast<RimGridView*>(activeView);
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>(gridView);
if (eclView)
{
Riu3DMainWindowTools::selectAsCurrentItem(eclView->cellResult());
Riu3DMainWindowTools::selectAsCurrentItem(eclView->cellResult(), int2dView == nullptr);
return;
}
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>(activeView);
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>(gridView);
if (geoMechView)
{
Riu3DMainWindowTools::selectAsCurrentItem(geoMechView->cellResult());
Riu3DMainWindowTools::selectAsCurrentItem(geoMechView->cellResult(), int2dView== nullptr);
}
}

View File

@ -116,10 +116,10 @@ bool RicWellLogTools::isWellPathOrSimWellSelectedInView()
RiuSelectionManager* riuSelManager = RiuSelectionManager::instance();
RiuSelectionItem* selItem = riuSelManager->selectedItem(RiuSelectionManager::RUI_TEMPORARY);
RiuSimWellSelectionItem* simWellSelectionItem = static_cast<RiuSimWellSelectionItem*>(selItem);
RiuSimWellSelectionItem* simWellSelectionItem = dynamic_cast<RiuSimWellSelectionItem*>(selItem);
if (simWellSelectionItem) return true;
RiuWellPathSelectionItem* wellPathSelectionItem = static_cast<RiuWellPathSelectionItem*>(selItem);
RiuWellPathSelectionItem* wellPathSelectionItem = dynamic_cast<RiuWellPathSelectionItem*>(selItem);
if (wellPathSelectionItem) return true;
return false;

View File

@ -120,7 +120,7 @@ void Rim2dIntersectionView::setIntersection(RimIntersection* intersection)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimIntersection* Rim2dIntersectionView::intersection()
RimIntersection* Rim2dIntersectionView::intersection() const
{
return m_intersection();
}

View File

@ -44,7 +44,7 @@ public:
void setVisible(bool isVisible);
void setIntersection(RimIntersection* intersection);
RimIntersection* intersection();
RimIntersection* intersection() const;
virtual bool isUsingFormationNames() const override;
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) override;

View File

@ -160,6 +160,10 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
m_currentPickPositionInDomainCoords = cvf::Vec3d::UNDEFINED;
// Check type of view
RimGridView* gridView = dynamic_cast<RimGridView*>(m_reservoirView.p());
Rim2dIntersectionView* int2dView = dynamic_cast<Rim2dIntersectionView*>(m_reservoirView.p());
cvf::HitItemCollection hitItems;
if (m_viewer->rayPick(winPosX, winPosY, &hitItems))
{
@ -187,10 +191,9 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
cvf::Vec3d displayModelOffset = cvf::Vec3d::ZERO;
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
if (activeView)
if (m_reservoirView.p())
{
cvf::ref<caf::DisplayCoordTransform> transForm = activeView->displayCoordTransform();
cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView.p()->displayCoordTransform();
m_currentPickPositionInDomainCoords = transForm->transformToDomainCoord(globalIntersectionPoint);
}
@ -228,10 +231,17 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
RiuSelectionItem* selItem = new RiuGeneralSelectionItem(crossSectionSourceInfo->crossSection());
RiuSelectionManager::instance()->setSelectedItem(selItem, RiuSelectionManager::RUI_TEMPORARY);
menuBuilder << "RicHideIntersectionFeature";
menuBuilder.addSeparator();
menuBuilder << "RicNewIntersectionViewFeature";
menuBuilder.addSeparator();
if (gridView)
{
menuBuilder << "RicHideIntersectionFeature";
menuBuilder.addSeparator();
menuBuilder << "RicNewIntersectionViewFeature";
menuBuilder.addSeparator();
}
else if (int2dView)
{
menuBuilder << "RicSelectColorResult";
}
}
else if (intersectionBoxSourceInfo)
{
@ -245,51 +255,54 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
menuBuilder.addSeparator();
}
// IJK -slice commands
RimViewController* viewController = nullptr;
if (m_reservoirView) viewController = m_reservoirView->viewController();
if (!viewController || !viewController->isRangeFiltersControlled())
if (gridView)
{
size_t i, j, k;
ijkFromCellIndex(m_currentGridIdx, m_currentCellIndex, &i, &j, &k);
// IJK -slice commands
RimViewController* viewController = nullptr;
if (m_reservoirView) viewController = m_reservoirView->viewController();
QVariantList iSliceList;
iSliceList.push_back(0);
iSliceList.push_back(CVF_MAX(static_cast<int>(i + 1), 1));
QVariantList jSliceList;
jSliceList.push_back(1);
jSliceList.push_back(CVF_MAX(static_cast<int>(j + 1), 1));
if (!viewController || !viewController->isRangeFiltersControlled())
{
size_t i, j, k;
ijkFromCellIndex(m_currentGridIdx, m_currentCellIndex, &i, &j, &k);
QVariantList kSliceList;
kSliceList.push_back(2);
kSliceList.push_back(CVF_MAX(static_cast<int>(k + 1), 1));
QVariantList iSliceList;
iSliceList.push_back(0);
iSliceList.push_back(CVF_MAX(static_cast<int>(i + 1), 1));
menuBuilder.subMenuStart("Range Filter Slice", QIcon(":/CellFilter_Range.png"));
QVariantList jSliceList;
jSliceList.push_back(1);
jSliceList.push_back(CVF_MAX(static_cast<int>(j + 1), 1));
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "I-slice Range Filter", iSliceList);
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "J-slice Range Filter", jSliceList);
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "K-slice Range Filter", kSliceList);
QVariantList kSliceList;
kSliceList.push_back(2);
kSliceList.push_back(CVF_MAX(static_cast<int>(k + 1), 1));
menuBuilder.subMenuEnd();
menuBuilder.subMenuStart("Range Filter Slice", QIcon(":/CellFilter_Range.png"));
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "I-slice Range Filter", iSliceList);
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "J-slice Range Filter", jSliceList);
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "K-slice Range Filter", kSliceList);
menuBuilder.subMenuEnd();
}
menuBuilder << "RicEclipsePropertyFilterNewInViewFeature";
menuBuilder << "RicGeoMechPropertyFilterNewInViewFeature";
menuBuilder.addSeparator();
menuBuilder.subMenuStart("Intersections", QIcon(":/IntersectionXPlane16x16.png"));
menuBuilder << "RicNewPolylineIntersectionFeature";
menuBuilder << "RicNewAzimuthDipIntersectionFeature";
menuBuilder << "RicIntersectionBoxAtPosFeature";
menuBuilder << "RicIntersectionBoxXSliceFeature";
menuBuilder << "RicIntersectionBoxYSliceFeature";
menuBuilder << "RicIntersectionBoxZSliceFeature";
}
menuBuilder << "RicEclipsePropertyFilterNewInViewFeature";
menuBuilder << "RicGeoMechPropertyFilterNewInViewFeature";
menuBuilder.addSeparator();
menuBuilder.subMenuStart("Intersections", QIcon(":/IntersectionXPlane16x16.png"));
menuBuilder << "RicNewPolylineIntersectionFeature";
menuBuilder << "RicNewAzimuthDipIntersectionFeature";
menuBuilder << "RicIntersectionBoxAtPosFeature";
menuBuilder << "RicIntersectionBoxXSliceFeature";
menuBuilder << "RicIntersectionBoxYSliceFeature";
menuBuilder << "RicIntersectionBoxZSliceFeature";
menuBuilder.subMenuEnd();
menuBuilder.addSeparator();
@ -414,18 +427,31 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
// View Link commands
if (!firstHitPart)
{
menuBuilder << "RicLinkViewFeature";
menuBuilder << "RicShowLinkOptionsFeature";
menuBuilder << "RicSetMasterViewFeature";
menuBuilder << "RicUnLinkViewFeature";
if (gridView)
{
menuBuilder << "RicLinkViewFeature";
menuBuilder << "RicShowLinkOptionsFeature";
menuBuilder << "RicSetMasterViewFeature";
menuBuilder << "RicUnLinkViewFeature";
}
else if (int2dView)
{
menuBuilder << "RicSelectColorResult";
}
}
menuBuilder.addSeparator();
menuBuilder << "RicNewGridTimeHistoryCurveFeature";
menuBuilder << "RicShowFlowCharacteristicsPlotFeature";
menuBuilder << "RicSaveEclipseInputActiveVisibleCellsFeature";
menuBuilder << "RicShowGridStatisticsFeature";
menuBuilder << "RicSelectColorResult";
if (gridView)
{
menuBuilder.addSeparator();
menuBuilder << "RicNewGridTimeHistoryCurveFeature";
menuBuilder << "RicShowFlowCharacteristicsPlotFeature";
menuBuilder << "RicSaveEclipseInputActiveVisibleCellsFeature";
menuBuilder << "RicShowGridStatisticsFeature";
menuBuilder << "RicSelectColorResult";
}
else if (int2dView)
{
}
menuBuilder.appendToMenu(&menu);