#2487 Avoid switching view when clicking objs in the intersectino view. Some minor refactoring of the MainWindows

This commit is contained in:
Jacob Støren 2018-02-27 11:23:43 +01:00
parent 599909a9e8
commit 6a3b43ec7c
7 changed files with 60 additions and 55 deletions

View File

@ -576,14 +576,6 @@ void RiuMainPlotWindow::setActiveViewer(QWidget* viewer)
m_blockSlotSubWindowActivated = false; m_blockSlotSubWindowActivated = false;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiTreeView* RiuMainPlotWindow::projectTreeView()
{
return m_projectTreeView;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -631,22 +623,22 @@ void RiuMainPlotWindow::selectedObjectsChanged()
{ {
firstSelectedObject = dynamic_cast<caf::PdmObjectHandle*>(uiItems[0]); firstSelectedObject = dynamic_cast<caf::PdmObjectHandle*>(uiItems[0]);
} }
m_pdmUiPropertyView->showProperties(firstSelectedObject); m_pdmUiPropertyView->showProperties(firstSelectedObject);
if (uiItems.size() == 1) if (uiItems.size() == 1 && m_allowActiveViewChangeFromSelection)
{ {
// Find the reservoir view or the Plot that the selected item is within // Find the reservoir view or the Plot that the selected item is within
if (!firstSelectedObject) if (!firstSelectedObject)
{ {
caf::PdmFieldHandle* selectedField = dynamic_cast<caf::PdmFieldHandle*>(uiItems[0]); caf::PdmFieldHandle* selectedField = dynamic_cast<caf::PdmFieldHandle*>(uiItems[0]);
if (selectedField) if (selectedField) firstSelectedObject = selectedField->ownerObject();
firstSelectedObject = selectedField->ownerObject();
} }
if (!firstSelectedObject) if (!firstSelectedObject) return;
return;
RimViewWindow* selectedWindow = dynamic_cast<RimViewWindow*>(firstSelectedObject); RimViewWindow* selectedWindow = dynamic_cast<RimViewWindow*>(firstSelectedObject);
if (!selectedWindow) if (!selectedWindow)
{ {
@ -714,13 +706,6 @@ void RiuMainPlotWindow::restoreTreeViewState()
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainPlotWindow::selectAsCurrentItem(caf::PdmObject* object)
{
m_projectTreeView->selectAsCurrentItem(object);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@ -730,14 +715,6 @@ void RiuMainPlotWindow::setDefaultWindowSize()
resize(1000, 810); resize(1000, 810);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainPlotWindow::setExpanded(const caf::PdmUiItem* uiItem, bool expanded)
{
m_projectTreeView->setExpanded(uiItem, expanded);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -55,7 +55,7 @@ class RiuMainPlotWindow : public RiuMainWindowBase
public: public:
RiuMainPlotWindow(); RiuMainPlotWindow();
virtual QString mainWindowName(); QString mainWindowName() override;
void initializeGuiNewProjectLoaded(); void initializeGuiNewProjectLoaded();
void cleanupGuiBeforeProjectClose(); void cleanupGuiBeforeProjectClose();
@ -65,15 +65,10 @@ public:
void addViewer(QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry) override; void addViewer(QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry) override;
void setActiveViewer(QWidget* subWindow) override; void setActiveViewer(QWidget* subWindow) override;
caf::PdmUiTreeView* projectTreeView();
void hideAllDockWindows(); void hideAllDockWindows();
void selectAsCurrentItem(caf::PdmObject* object);
void setDefaultWindowSize(); void setDefaultWindowSize();
void setExpanded(const caf::PdmUiItem* uiItem, bool expanded = true);
RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer) override; RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer) override;
@ -87,7 +82,7 @@ public:
void updateSummaryPlotToolBar(); void updateSummaryPlotToolBar();
protected: protected:
virtual void closeEvent(QCloseEvent* event); void closeEvent(QCloseEvent* event) override;
private: private:
void setPdmRoot(caf::PdmObject* pdmRoot); void setPdmRoot(caf::PdmObject* pdmRoot);
@ -121,7 +116,6 @@ private:
QMenu* m_windowMenu; QMenu* m_windowMenu;
caf::PdmUiTreeView* m_projectTreeView;
caf::PdmUiToolBarEditor* m_summaryPlotToolBarEditor; caf::PdmUiToolBarEditor* m_summaryPlotToolBarEditor;
std::unique_ptr<caf::PdmUiDragDropInterface> m_dragDropInterface; std::unique_ptr<caf::PdmUiDragDropInterface> m_dragDropInterface;

View File

@ -149,6 +149,14 @@ RiuMainWindow* RiuMainWindow::instance()
return sm_mainWindowInstance; return sm_mainWindowInstance;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuMainWindow::mainWindowName()
{
return "RiuMainWindow";
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -1297,7 +1305,7 @@ void RiuMainWindow::selectedObjectsChanged()
m_pdmUiPropertyView->showProperties(firstSelectedObject); m_pdmUiPropertyView->showProperties(firstSelectedObject);
if (uiItems.size() == 1) if (uiItems.size() == 1 && m_allowActiveViewChangeFromSelection)
{ {
// Find the reservoir view or the Plot that the selected item is within // Find the reservoir view or the Plot that the selected item is within
@ -1619,14 +1627,6 @@ void RiuMainWindow::showProcessMonitorDockPanel()
showDockPanel(DOCK_PANEL_NAME_PROCESS_MONITOR); showDockPanel(DOCK_PANEL_NAME_PROCESS_MONITOR);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::selectAsCurrentItem(const caf::PdmObject* object)
{
m_projectTreeView->selectAsCurrentItem(object);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -78,7 +78,7 @@ public:
static RiuMainWindow* instance(); static RiuMainWindow* instance();
virtual QString mainWindowName() { return "RiuMainWindow"; } QString mainWindowName() override;
void initializeGuiNewProjectLoaded(); void initializeGuiNewProjectLoaded();
void cleanupGuiCaseClose(); void cleanupGuiCaseClose();
@ -93,12 +93,10 @@ public:
void refreshAnimationActions(); void refreshAnimationActions();
void updateScaleValue(); void updateScaleValue();
caf::PdmUiTreeView* projectTreeView() { return m_projectTreeView;}
RiuProcessMonitor* processMonitor(); RiuProcessMonitor* processMonitor();
void hideAllDockWindows(); void hideAllDockWindows();
void selectAsCurrentItem(const caf::PdmObject* object);
void selectedCases(std::vector<RimCase*>& cases); void selectedCases(std::vector<RimCase*>& cases);
@ -108,7 +106,7 @@ public:
void setExpanded(const caf::PdmUiItem* uiItem, bool expanded = true); void setExpanded(const caf::PdmUiItem* uiItem, bool expanded = true);
RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer); RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer) override;
void tileWindows(); void tileWindows();
bool isAnyMdiSubWindowVisible(); bool isAnyMdiSubWindowVisible();
@ -247,7 +245,6 @@ private slots:
public: public:
void setPdmRoot(caf::PdmObject* pdmRoot); void setPdmRoot(caf::PdmObject* pdmRoot);
private: private:
caf::PdmUiTreeView* m_projectTreeView;
std::unique_ptr<caf::PdmUiDragDropInterface> m_dragDropInterface; std::unique_ptr<caf::PdmUiDragDropInterface> m_dragDropInterface;

View File

@ -21,11 +21,15 @@
#include "RiaVersionInfo.h" #include "RiaVersionInfo.h"
#include <QSettings> #include <QSettings>
#include "cafPdmUiTreeView.h"
#include "cafPdmObject.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RiuMainWindowBase::RiuMainWindowBase() RiuMainWindowBase::RiuMainWindowBase()
: m_projectTreeView(nullptr)
, m_allowActiveViewChangeFromSelection(true)
{ {
setDockNestingEnabled(true); setDockNestingEnabled(true);
} }
@ -96,3 +100,21 @@ QString RiuMainWindowBase::registryFolderName()
QString regFolder = QString("%1/%2").arg(versionName).arg(mainWindowName()); QString regFolder = QString("%1/%2").arg(versionName).arg(mainWindowName());
return regFolder; return regFolder;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::selectAsCurrentItem(const caf::PdmObject* object, bool allowActiveViewChange)
{
m_allowActiveViewChangeFromSelection = allowActiveViewChange;
m_projectTreeView->selectAsCurrentItem(object);
m_allowActiveViewChangeFromSelection = true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::setExpanded(const caf::PdmUiItem* uiItem, bool expanded)
{
m_projectTreeView->setExpanded(uiItem, expanded);
}

View File

@ -22,6 +22,13 @@
struct RimMdiWindowGeometry; struct RimMdiWindowGeometry;
namespace caf
{
class PdmObject;
class PdmUiTreeView;
class PdmUiItem;
}
//================================================================================================== //==================================================================================================
/// ///
//================================================================================================== //==================================================================================================
@ -44,6 +51,16 @@ public:
void saveWinGeoAndDockToolBarLayout(); void saveWinGeoAndDockToolBarLayout();
void showWindow(); void showWindow();
caf::PdmUiTreeView* projectTreeView() { return m_projectTreeView;}
void setExpanded(const caf::PdmUiItem* uiItem, bool expanded = true);
void selectAsCurrentItem(const caf::PdmObject* object, bool allowActiveViewChange = true);
protected:
caf::PdmUiTreeView* m_projectTreeView;
bool m_allowActiveViewChangeFromSelection; // To be used in selectedObjectsChanged() to control
// whether to select the corresponding active view or not
private: private:
QString registryFolderName(); QString registryFolderName();
}; };

View File

@ -571,11 +571,9 @@ void RiuViewerCommands::handlePickAction(int winPosX, int winPosY, Qt::KeyboardM
intersectionHit = true; intersectionHit = true;
intersectionTriangleHit = crossSectionSourceInfo->triangle(firstPartTriangleIndex); intersectionTriangleHit = crossSectionSourceInfo->triangle(firstPartTriangleIndex);
if (!dynamic_cast<Rim2dIntersectionView*>(m_viewer->ownerViewWindow())) bool allowActiveViewChange = dynamic_cast<Rim2dIntersectionView*>(m_viewer->ownerViewWindow()) == nullptr;
{
RiuMainWindow::instance()->selectAsCurrentItem(crossSectionSourceInfo->crossSection()); RiuMainWindow::instance()->selectAsCurrentItem(crossSectionSourceInfo->crossSection(), allowActiveViewChange);
}
} }
else if (intersectionBoxSourceInfo) else if (intersectionBoxSourceInfo)
{ {