#1107 Moved showWindow field to RimViewWindow and removed showWindow field from derived classes

This commit is contained in:
Magne Sjaastad
2017-01-20 16:25:05 +01:00
parent 94f94af325
commit cebe5428be
15 changed files with 74 additions and 205 deletions

View File

@@ -63,8 +63,7 @@ void RicShowAllLinkedViewsFeature::onActionTriggered(bool isChecked)
for (size_t j = 0; j < views.size(); j++)
{
views[j]->showWindow.setValueWithFieldChanged(true);
views[j]->uiCapability()->updateUiIconFromToggleField();
views[j]->forceShowWindowOn();
}
}
}

View File

@@ -40,8 +40,6 @@ CAF_PDM_SOURCE_INIT(RimWellAllocationPlot, "WellAllocationPlot");
RimWellAllocationPlot::RimWellAllocationPlot()
{
CAF_PDM_InitObject("Well Allocation Plot", ":/newIcon16x16.png", "", "");
CAF_PDM_InitField(&m_showWindow, "ShowWindow", true, "Show Flow Diagnostics Plot", "", "", "");
m_showWindow.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&m_userName, "PlotDescription", QString("Flow Diagnostics Plot"), "Name", "", "", "");
m_userName.uiCapability()->setUiReadOnly(true);
@@ -196,20 +194,9 @@ QList<caf::PdmOptionItemInfo> RimWellAllocationPlot::calculateValueOptions(const
//--------------------------------------------------------------------------------------------------
void RimWellAllocationPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_showWindow)
{
if (m_showWindow)
{
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
RimViewWindow::fieldChangedByUi(changedField, oldValue, newValue);
uiCapability()->updateUiIconFromToggleField();
}
else if (changedField == &m_userName ||
if (changedField == &m_userName ||
changedField == &m_showPlotTitle)
{
updateMdiWindowTitle();

View File

@@ -64,7 +64,6 @@ public:
protected:
// Overridden PDM methods
virtual caf::PdmFieldHandle* objectToggleField() { return &m_showWindow; }
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; }
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
@@ -75,14 +74,11 @@ private:
// RimViewWindow overrides
virtual caf::PdmField<bool>* getShowWindowField() override { return &m_showWindow; }
virtual QWidget* createViewWidget(QWidget* mainWindowParent) override;
virtual void deleteViewWidget() override;
private:
caf::PdmField<bool> m_showWindow;
caf::PdmField<bool> m_showPlotTitle;
caf::PdmField<QString> m_userName;
//caf::PdmField<bool> m_showAccWellFlowPlot;

View File

@@ -183,21 +183,7 @@ void RimEclipseView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
{
RimView::fieldChangedByUi(changedField, oldValue, newValue);
if (changedField == &showWindow)
{
if (showWindow)
{
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
this->updateUiIconFromToggleField();
}
else if (changedField == &showInvalidCells)
if (changedField == &showInvalidCells)
{
this->scheduleGeometryRegen(INACTIVE);
this->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);

View File

@@ -476,20 +476,6 @@ cvf::Transform* RimGeoMechView::scaleTransform()
void RimGeoMechView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
RimView::fieldChangedByUi(changedField, oldValue, newValue);
if (changedField == &showWindow)
{
if (showWindow)
{
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
this->updateUiIconFromToggleField();
}
}
//--------------------------------------------------------------------------------------------------

View File

@@ -17,9 +17,10 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RimMdiWindowController.h"
#include "RiuMainWindowBase.h"
#include "RiaApplication.h"
#include "RimViewWindow.h"
#include "RiuMainWindowBase.h"
CAF_PDM_XML_SOURCE_INIT(RimMdiWindowController, "MdiWindowController");
@@ -79,7 +80,7 @@ RimMdiWindowGeometry RimMdiWindowController::mdiWindowGeometry()
//--------------------------------------------------------------------------------------------------
void RimMdiWindowController::handleViewerDeletion()
{
showWindowField() = false;
viewPdmObject()->m_showWindow = false;
uiCapability()->updateUiIconFromToggleField();
updateConnectedEditors();
@@ -94,16 +95,6 @@ void RimMdiWindowController::removeWindowFromMDI()
if (mainWin && viewWidget()) mainWin->removeViewer(viewWidget());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimMdiWindowController::showWindowFieldChangedByUi()
{
updateViewerWidget();
viewPdmObject()->uiCapability()->updateUiIconFromToggleField();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -114,14 +105,6 @@ RimViewWindow* RimMdiWindowController::viewPdmObject()
return viewWindowObj;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmField<bool>& RimMdiWindowController::showWindowField()
{
return *(viewPdmObject()->getShowWindowField());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -157,11 +140,10 @@ void RimMdiWindowController::updateViewerWidget()
RiuMainWindowBase* mainWindow = getMainWindow();
if ( !mainWindow ) return;
if ( showWindowField() )
if ( viewPdmObject()->m_showWindow() )
{
if ( !viewWidget() )
{
// m_wellAllocationPlotWidget = new RiuWellAllocationPlot(this, mainPlotWindow);
QWidget * viewWidget = viewPdmObject()->createViewWidget(mainWindow);
mainWindow->addViewer(viewWidget, this->mdiWindowGeometry());

View File

@@ -22,74 +22,6 @@
#include "cafPdmChildField.h"
#include "cafPdmField.h"
#if 0
class RimMdiWindowController;
class RimViewWindow : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
RimViewWindow(void);
virtual ~RimViewWindow(void)
{
if (m_windowController()) delete m_windowController();
}
void handleViewerDeletion() { if (m_windowController()) m_windowController->handleViewerDeletion(); }
void updateViewerWidgetBasic() { if (m_windowController()) m_windowController->updateViewerWidget(); }
void setAs3DMDI() { setAsMDI(0); }
void setAsPlotMDI() { setAsMDI(1); }
void setMdiWindowGeometry(const RimMdiWindowGeometry& windowGeometry);
RimMdiWindowGeometry mdiWindowGeometry();
virtual QImage snapshotWindowContent() = 0;
virtual void zoomAll() = 0;
protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override
{
if ( m_windowController() )
{
if ( changedField == showWindowField() )
{
m_windowController()->showWindowFieldChangedByUi();
}
}
}
private:
///////// Interface for the Window controller
friend class RimMdiWindowController;
virtual QWidget* viewWidget() = 0;
virtual QWidget* createViewWidget(QWidget* mainWindowParent) = 0;
virtual void updateViewWidgetAfterCreation() = 0;
virtual void deleteViewWidget() = 0;
virtual caf::PdmField<bool>* showWindowField() = 0;
//////////
void setAsMDI(int mainWindowID)
{
if (!m_windowController())
{
m_windowController = new RimMdiWindowController;
RimMdiWindowGeometry mwg;
mwg.mainWindowID = mainWindowID;
setMdiWindowGeometry(mwg);
}
}
caf::PdmChildField<RimMdiWindowController*> m_windowController;
// Obsolete field
caf::PdmField< std::vector<int> > m_windowGeometry;
};
#endif
class RimViewWindow;
class RiuMainWindowBase;
@@ -113,12 +45,10 @@ public:
void updateViewerWidget();
void handleViewerDeletion();
void removeWindowFromMDI();
void showWindowFieldChangedByUi();
protected:
RimViewWindow* viewPdmObject();
caf::PdmField<bool>& showWindowField();
QWidget* viewWidget();
RiuMainWindowBase* getMainWindow();

View File

@@ -73,9 +73,6 @@ RimView::RimView(void)
CAF_PDM_InitField(&name, "UserDescription", QString(""), "Name", "", "", "");
CAF_PDM_InitField(&showWindow, "ShowWindow", true, "Show 3D viewer", "", "", "");
showWindow.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&cameraPosition, "CameraPosition", cvf::Mat4d::IDENTITY, "", "", "", "");
cameraPosition.uiCapability()->setUiHidden(true);
@@ -523,6 +520,8 @@ bool RimView::isLightingDisabled() const
//--------------------------------------------------------------------------------------------------
void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
RimViewWindow::fieldChangedByUi(changedField, oldValue, newValue);
if (changedField == &meshMode)
{
createDisplayModel();
@@ -966,3 +965,11 @@ QWidget* RimView::viewWidget()
else return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimView::forceShowWindowOn()
{
m_showWindow.setValueWithFieldChanged(true);
}

View File

@@ -82,7 +82,6 @@ public:
caf::PdmField<QString> name;
caf::PdmField<double> scaleZ;
caf::PdmField<bool> showWindow;
caf::PdmField<cvf::Mat4d> cameraPosition;
caf::PdmField<cvf::Vec3d> cameraPointOfInterest;
caf::PdmField<bool> isPerspectiveView;
@@ -164,12 +163,12 @@ public:
cvf::ref<caf::DisplayCoordTransform> displayCoordTransform();
virtual QWidget* viewWidget() override;
void forceShowWindowOn();
public:
virtual void loadDataAndUpdate() = 0;
virtual RimCase* ownerCase() = 0;
virtual caf::PdmFieldHandle* objectToggleField() { return &showWindow; }
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
protected:
@@ -217,7 +216,6 @@ protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual caf::PdmField<bool>* getShowWindowField() override { return &showWindow; }
virtual QWidget* createViewWidget(QWidget* mainWindowParent) override;
virtual void updateViewWidgetAfterCreation() override;
virtual void updateMdiWindowTitle() override;

View File

@@ -32,6 +32,9 @@ RimViewWindow::RimViewWindow(void)
m_windowController.uiCapability()->setUiHidden(true);
m_windowController.uiCapability()->setUiTreeChildrenHidden(true);
CAF_PDM_InitField(&m_showWindow, "ShowWindow", true, "Show Window", "", "", "");
m_showWindow.uiCapability()->setUiHidden(true);
// Obsolete field
CAF_PDM_InitFieldNoDefault(&obsoleteField_windowGeometry, "WindowGeometry", "", "", "", "");
obsoleteField_windowGeometry.uiCapability()->setUiHidden(true);
@@ -67,7 +70,24 @@ void RimViewWindow::handleMdiWindowClosed()
//--------------------------------------------------------------------------------------------------
void RimViewWindow::updateMdiWindowVisibility()
{
if ( m_windowController() ) m_windowController->updateViewerWidget();
if (m_windowController())
{
m_windowController->updateViewerWidget();
}
else
{
if (viewWidget())
{
if (m_showWindow)
{
viewWidget()->show();
}
else
{
viewWidget()->hide();
}
}
}
}
//--------------------------------------------------------------------------------------------------
@@ -93,17 +113,30 @@ RimMdiWindowGeometry RimViewWindow::mdiWindowGeometry()
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimViewWindow::objectToggleField()
{
return &m_showWindow;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewWindow::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if ( m_windowController() )
if ( changedField == &m_showWindow )
{
if ( changedField == getShowWindowField() )
if (m_showWindow)
{
m_windowController()->showWindowFieldChangedByUi();
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
uiCapability()->updateUiIconFromToggleField();
}
}

View File

@@ -60,29 +60,36 @@ public:
virtual QImage snapshotWindowContent() = 0;
virtual void zoomAll() = 0;
protected:
// Derived classes are not supposed to override this function. The intention is to always use m_showWindow
// as the objectToggleField for this class. This way the visibility of a widget being part of a composite widget
// can be controlled from the project tree using check box toggles
virtual caf::PdmFieldHandle* objectToggleField() override final;
protected:
void removeMdiWindowFromMdiArea();
void updateMdiWindowVisibility();
///////// Interface for the Window controller
friend class RimMdiWindowController;
virtual caf::PdmField<bool>* getShowWindowField() = 0;
virtual QWidget* createViewWidget(QWidget* mainWindowParent) = 0;
virtual void updateViewWidgetAfterCreation() {};
virtual void updateMdiWindowTitle(); // Has real default implementation
virtual void deleteViewWidget() = 0;
virtual void deleteViewWidget() = 0;
virtual void loadDataAndUpdate() = 0;
//////////
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual void initAfterRead() override;
caf::PdmField<bool> m_showWindow;
private:
void setAsMdiWindow(int mainWindowID);
caf::PdmChildField<RimMdiWindowController*> m_windowController;
// Obsoleted field
caf::PdmField< std::vector<int> > obsoleteField_windowGeometry;
};

View File

@@ -59,9 +59,6 @@ RimWellLogPlot::RimWellLogPlot()
m_viewer = NULL;
CAF_PDM_InitField(&m_showWindow, "ShowWindow", true, "Show well log plot", "", "", "");
m_showWindow.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&m_userName, "PlotDescription", QString("Well Log Plot"),"Name", "", "", "");
caf::AppEnum< RimWellLogPlot::DepthTypeEnum > depthType = MEASURED_DEPTH;
@@ -98,20 +95,9 @@ RimWellLogPlot::~RimWellLogPlot()
//--------------------------------------------------------------------------------------------------
void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_showWindow)
{
if (m_showWindow)
{
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
RimViewWindow::fieldChangedByUi(changedField, oldValue, newValue);
uiCapability()->updateUiIconFromToggleField();
}
else if (changedField == &m_minVisibleDepth || changedField == &m_maxVisibleDepth)
if (changedField == &m_minVisibleDepth || changedField == &m_maxVisibleDepth)
{
applyDepthZoomFromVisibleDepth();
@@ -132,14 +118,6 @@ void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimWellLogPlot::objectToggleField()
{
return &m_showWindow;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -24,11 +24,11 @@
#include "cafPdmChildArrayField.h"
#include "cafAppEnum.h"
#include <QPointer>
#include "RimDefines.h"
#include "RimViewWindow.h"
#include <QPointer>
class RiuWellLogPlot;
class RimWellLogTrack;
@@ -96,7 +96,6 @@ protected:
// Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
virtual caf::PdmFieldHandle* objectToggleField();
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; }
virtual QImage snapshotWindowContent() override;
@@ -111,12 +110,10 @@ private:
public: // Needed by RiuWellAllocation Plot
// RimViewWindow overrides
virtual caf::PdmField<bool>* getShowWindowField() override { return &m_showWindow; }
virtual QWidget* createViewWidget(QWidget* mainWindowParent) override;
virtual void deleteViewWidget() override;
private:
caf::PdmField<bool> m_showWindow;
caf::PdmField<QString> m_userName;
caf::PdmField< caf::AppEnum< DepthTypeEnum > > m_depthType;

View File

@@ -51,8 +51,6 @@ CAF_PDM_SOURCE_INIT(RimSummaryPlot, "SummaryPlot");
RimSummaryPlot::RimSummaryPlot()
{
CAF_PDM_InitObject("Summary Plot", ":/SummaryPlot16x16.png", "", "");
CAF_PDM_InitField(&m_showWindow, "ShowWindow", true, "Show Summary Plot", "", "", "");
m_showWindow.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&m_userName, "PlotDescription", QString("Summary Plot"), "Name", "", "", "");
CAF_PDM_InitField(&m_showPlotTitle, "ShowPlotTitle", true, "Show Plot Title", "", "", "");
@@ -475,21 +473,10 @@ void RimSummaryPlot::addCurveFilter(RimSummaryCurveFilter* curveFilter)
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_showWindow)
{
if (m_showWindow)
{
loadDataAndUpdate();
}
else
{
updateMdiWindowVisibility();
}
RimViewWindow::fieldChangedByUi(changedField, oldValue, newValue);
uiCapability()->updateUiIconFromToggleField();
}
else if (changedField == &m_userName ||
changedField == &m_showPlotTitle)
if (changedField == &m_userName ||
changedField == &m_showPlotTitle)
{
updateMdiWindowTitle();
}

View File

@@ -88,7 +88,6 @@ public:
protected:
// Overridden PDM methods
virtual caf::PdmFieldHandle* objectToggleField() { return &m_showWindow; }
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; }
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override;
@@ -106,14 +105,11 @@ private:
// RimViewWindow overrides
virtual caf::PdmField<bool>* getShowWindowField() override { return &m_showWindow; }
virtual QWidget* createViewWidget(QWidget* mainWindowParent) override;
void updateMdiWindowTitle() override;
virtual void deleteViewWidget() override;
private:
caf::PdmField<bool> m_showWindow;
caf::PdmField<bool> m_showPlotTitle;
caf::PdmField<QString> m_userName;