#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
@@ -25,18 +25,31 @@
#include "RimGeoMechCellColors.h" #include "RimGeoMechCellColors.h"
#include "RimGeoMechView.h" #include "RimGeoMechView.h"
#include "RimGridView.h" #include "RimGridView.h"
#include "Rim2dIntersectionView.h"
#include "RimIntersection.h"
#include "Riu3DMainWindowTools.h" #include "Riu3DMainWindowTools.h"
#include <QAction> #include <QAction>
CAF_CMD_SOURCE_INIT(RicSelectColorResult, "RicSelectColorResult"); 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) void RicSelectColorResult::setupActionLook(QAction* actionToSetup)
{ {
actionToSetup->setText("Color Result"); actionToSetup->setText("Select Color Result");
actionToSetup->setIcon(QIcon(":/CellResult.png")); actionToSetup->setIcon(QIcon(":/CellResult.png"));
} }
@@ -47,7 +60,7 @@ bool RicSelectColorResult::isCommandEnabled()
{ {
if (RicWellLogTools::isWellPathOrSimWellSelectedInView()) return false; 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) 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) if (eclView)
{ {
Riu3DMainWindowTools::selectAsCurrentItem(eclView->cellResult()); Riu3DMainWindowTools::selectAsCurrentItem(eclView->cellResult(), int2dView == nullptr);
return; return;
} }
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>(activeView); RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>(gridView);
if (geoMechView) if (geoMechView)
{ {
Riu3DMainWindowTools::selectAsCurrentItem(geoMechView->cellResult()); Riu3DMainWindowTools::selectAsCurrentItem(geoMechView->cellResult(), int2dView== nullptr);
} }
} }
+2 -2
View File
@@ -116,10 +116,10 @@ bool RicWellLogTools::isWellPathOrSimWellSelectedInView()
RiuSelectionManager* riuSelManager = RiuSelectionManager::instance(); RiuSelectionManager* riuSelManager = RiuSelectionManager::instance();
RiuSelectionItem* selItem = riuSelManager->selectedItem(RiuSelectionManager::RUI_TEMPORARY); RiuSelectionItem* selItem = riuSelManager->selectedItem(RiuSelectionManager::RUI_TEMPORARY);
RiuSimWellSelectionItem* simWellSelectionItem = static_cast<RiuSimWellSelectionItem*>(selItem); RiuSimWellSelectionItem* simWellSelectionItem = dynamic_cast<RiuSimWellSelectionItem*>(selItem);
if (simWellSelectionItem) return true; if (simWellSelectionItem) return true;
RiuWellPathSelectionItem* wellPathSelectionItem = static_cast<RiuWellPathSelectionItem*>(selItem); RiuWellPathSelectionItem* wellPathSelectionItem = dynamic_cast<RiuWellPathSelectionItem*>(selItem);
if (wellPathSelectionItem) return true; if (wellPathSelectionItem) return true;
return false; return false;
@@ -120,7 +120,7 @@ void Rim2dIntersectionView::setIntersection(RimIntersection* intersection)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimIntersection* Rim2dIntersectionView::intersection() RimIntersection* Rim2dIntersectionView::intersection() const
{ {
return m_intersection(); return m_intersection();
} }
@@ -44,7 +44,7 @@ public:
void setVisible(bool isVisible); void setVisible(bool isVisible);
void setIntersection(RimIntersection* intersection); void setIntersection(RimIntersection* intersection);
RimIntersection* intersection(); RimIntersection* intersection() const;
virtual bool isUsingFormationNames() const override; virtual bool isUsingFormationNames() const override;
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) override; virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) override;
@@ -160,6 +160,10 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
m_currentPickPositionInDomainCoords = cvf::Vec3d::UNDEFINED; 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; cvf::HitItemCollection hitItems;
if (m_viewer->rayPick(winPosX, winPosY, &hitItems)) if (m_viewer->rayPick(winPosX, winPosY, &hitItems))
{ {
@@ -187,10 +191,9 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
cvf::Vec3d displayModelOffset = cvf::Vec3d::ZERO; cvf::Vec3d displayModelOffset = cvf::Vec3d::ZERO;
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView(); if (m_reservoirView.p())
if (activeView)
{ {
cvf::ref<caf::DisplayCoordTransform> transForm = activeView->displayCoordTransform(); cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView.p()->displayCoordTransform();
m_currentPickPositionInDomainCoords = transForm->transformToDomainCoord(globalIntersectionPoint); m_currentPickPositionInDomainCoords = transForm->transformToDomainCoord(globalIntersectionPoint);
} }
@@ -228,10 +231,17 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
RiuSelectionItem* selItem = new RiuGeneralSelectionItem(crossSectionSourceInfo->crossSection()); RiuSelectionItem* selItem = new RiuGeneralSelectionItem(crossSectionSourceInfo->crossSection());
RiuSelectionManager::instance()->setSelectedItem(selItem, RiuSelectionManager::RUI_TEMPORARY); RiuSelectionManager::instance()->setSelectedItem(selItem, RiuSelectionManager::RUI_TEMPORARY);
menuBuilder << "RicHideIntersectionFeature"; if (gridView)
menuBuilder.addSeparator(); {
menuBuilder << "RicNewIntersectionViewFeature"; menuBuilder << "RicHideIntersectionFeature";
menuBuilder.addSeparator(); menuBuilder.addSeparator();
menuBuilder << "RicNewIntersectionViewFeature";
menuBuilder.addSeparator();
}
else if (int2dView)
{
menuBuilder << "RicSelectColorResult";
}
} }
else if (intersectionBoxSourceInfo) else if (intersectionBoxSourceInfo)
{ {
@@ -245,51 +255,54 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
menuBuilder.addSeparator(); menuBuilder.addSeparator();
} }
// IJK -slice commands if (gridView)
RimViewController* viewController = nullptr;
if (m_reservoirView) viewController = m_reservoirView->viewController();
if (!viewController || !viewController->isRangeFiltersControlled())
{ {
size_t i, j, k; // IJK -slice commands
ijkFromCellIndex(m_currentGridIdx, m_currentCellIndex, &i, &j, &k); RimViewController* viewController = nullptr;
if (m_reservoirView) viewController = m_reservoirView->viewController();
QVariantList iSliceList; if (!viewController || !viewController->isRangeFiltersControlled())
iSliceList.push_back(0); {
iSliceList.push_back(CVF_MAX(static_cast<int>(i + 1), 1)); size_t i, j, k;
ijkFromCellIndex(m_currentGridIdx, m_currentCellIndex, &i, &j, &k);
QVariantList jSliceList;
jSliceList.push_back(1);
jSliceList.push_back(CVF_MAX(static_cast<int>(j + 1), 1));
QVariantList kSliceList; QVariantList iSliceList;
kSliceList.push_back(2); iSliceList.push_back(0);
kSliceList.push_back(CVF_MAX(static_cast<int>(k + 1), 1)); 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); QVariantList kSliceList;
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "J-slice Range Filter", jSliceList); kSliceList.push_back(2);
menuBuilder.addCmdFeatureWithUserData("RicNewSliceRangeFilterFeature", "K-slice Range Filter", kSliceList); 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.subMenuEnd();
menuBuilder.addSeparator(); menuBuilder.addSeparator();
@@ -414,18 +427,31 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
// View Link commands // View Link commands
if (!firstHitPart) if (!firstHitPart)
{ {
menuBuilder << "RicLinkViewFeature"; if (gridView)
menuBuilder << "RicShowLinkOptionsFeature"; {
menuBuilder << "RicSetMasterViewFeature"; menuBuilder << "RicLinkViewFeature";
menuBuilder << "RicUnLinkViewFeature"; menuBuilder << "RicShowLinkOptionsFeature";
menuBuilder << "RicSetMasterViewFeature";
menuBuilder << "RicUnLinkViewFeature";
}
else if (int2dView)
{
menuBuilder << "RicSelectColorResult";
}
} }
menuBuilder.addSeparator(); if (gridView)
menuBuilder << "RicNewGridTimeHistoryCurveFeature"; {
menuBuilder << "RicShowFlowCharacteristicsPlotFeature"; menuBuilder.addSeparator();
menuBuilder << "RicSaveEclipseInputActiveVisibleCellsFeature"; menuBuilder << "RicNewGridTimeHistoryCurveFeature";
menuBuilder << "RicShowGridStatisticsFeature"; menuBuilder << "RicShowFlowCharacteristicsPlotFeature";
menuBuilder << "RicSelectColorResult"; menuBuilder << "RicSaveEclipseInputActiveVisibleCellsFeature";
menuBuilder << "RicShowGridStatisticsFeature";
menuBuilder << "RicSelectColorResult";
}
else if (int2dView)
{
}
menuBuilder.appendToMenu(&menu); menuBuilder.appendToMenu(&menu);