AppFwk: 3D editor system: Replace pointer to caf::Viewer with generic QWidget, as it is not neccessary to know the viewer explicitly.

This commit is contained in:
Jacob Støren 2018-11-26 22:37:25 +01:00
parent b4572fd9a2
commit b9b1646576
2 changed files with 25 additions and 18 deletions

View File

@ -590,11 +590,10 @@ PdmUi3dObjectEditorHandle::~PdmUi3dObjectEditorHandle()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// /// Not allowed to change viewer. Should be constructor argument, but makes factory stuff difficult.
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUi3dObjectEditorHandle::setViewer(caf::Viewer* ownerViewer) void PdmUi3dObjectEditorHandle::setViewer(QWidget* ownerViewer)
{ {
// Not allowed to change viewer. Should be constructor argument, but makes factory stuff difficult.
CAF_ASSERT(m_ownerViewer.isNull()); CAF_ASSERT(m_ownerViewer.isNull());
m_ownerViewer = ownerViewer; m_ownerViewer = ownerViewer;
} }
@ -614,7 +613,7 @@ namespace caf
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmUiSelection3dEditorVisualizer::PdmUiSelection3dEditorVisualizer(caf::Viewer* ownerViewer) PdmUiSelection3dEditorVisualizer::PdmUiSelection3dEditorVisualizer(QWidget* ownerViewer)
: m_ownerViewer(ownerViewer) : m_ownerViewer(ownerViewer)
{ {
this->setParent(ownerViewer); // Makes this owned by the viewer. this->setParent(ownerViewer); // Makes this owned by the viewer.
@ -741,7 +740,7 @@ void RicWellPathGeometry3dEditor::configureAndUpdateUi(const QString& uiConfigNa
for (auto target: targets) for (auto target: targets)
{ {
auto targetEditor = new RicWellTarget3dEditor; auto targetEditor = new RicWellTarget3dEditor;
targetEditor->setViewer(m_ownerViewer); targetEditor->setViewer(ownerViewer());
targetEditor->setPdmObject(target); targetEditor->setPdmObject(target);
m_targetEditors.push_back(targetEditor); m_targetEditors.push_back(targetEditor);
targetEditor->updateUi(); targetEditor->updateUi();
@ -776,10 +775,13 @@ RicWellTarget3dEditor::RicWellTarget3dEditor()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RicWellTarget3dEditor::~RicWellTarget3dEditor() RicWellTarget3dEditor::~RicWellTarget3dEditor()
{ {
if (m_cvfModel.notNull() && m_ownerViewer) RiuViewer* ownerRiuViewer = dynamic_cast<RiuViewer*>(ownerViewer());
if (m_cvfModel.notNull() && ownerRiuViewer)
{ {
// Could result in some circularities .... // Could result in some circularities ....
m_ownerViewer->removeStaticModel(m_cvfModel.p()); ownerRiuViewer->removeStaticModel(m_cvfModel.p());
} }
RimWellPathTarget* oldTarget = dynamic_cast<RimWellPathTarget*>(this->pdmObject()); RimWellPathTarget* oldTarget = dynamic_cast<RimWellPathTarget*>(this->pdmObject());
@ -800,6 +802,7 @@ RicWellTarget3dEditor::~RicWellTarget3dEditor()
void RicWellTarget3dEditor::configureAndUpdateUi(const QString& uiConfigName) void RicWellTarget3dEditor::configureAndUpdateUi(const QString& uiConfigName)
{ {
RimWellPathTarget* target = dynamic_cast<RimWellPathTarget*>(this->pdmObject()); RimWellPathTarget* target = dynamic_cast<RimWellPathTarget*>(this->pdmObject());
RiuViewer* ownerRiuViewer = dynamic_cast<RiuViewer*>(ownerViewer());
if ( !target || !target->isEnabled()) if ( !target || !target->isEnabled())
{ {
@ -817,7 +820,7 @@ void RicWellTarget3dEditor::configureAndUpdateUi(const QString& uiConfigName)
if (m_manipulator.isNull()) if (m_manipulator.isNull())
{ {
m_manipulator = new RicPointTangentManipulator(m_ownerViewer); m_manipulator = new RicPointTangentManipulator(ownerRiuViewer);
QObject::connect(m_manipulator, QObject::connect(m_manipulator,
SIGNAL( notifyUpdate(const cvf::Vec3d& , const cvf::Vec3d& ) ), SIGNAL( notifyUpdate(const cvf::Vec3d& , const cvf::Vec3d& ) ),
this, this,
@ -831,15 +834,14 @@ void RicWellTarget3dEditor::configureAndUpdateUi(const QString& uiConfigName)
this, this,
SLOT( slotDragFinished() ) ); SLOT( slotDragFinished() ) );
m_cvfModel = new cvf::ModelBasicList; m_cvfModel = new cvf::ModelBasicList;
m_ownerViewer->addStaticModelOnce(m_cvfModel.p()); ownerRiuViewer->addStaticModelOnce(m_cvfModel.p());
} }
cvf::ref<caf::DisplayCoordTransform> dispXf; cvf::ref<caf::DisplayCoordTransform> dispXf;
double handleSize = 1.0; double handleSize = 1.0;
{ {
RiuViewer* viewer = dynamic_cast<RiuViewer*>(m_ownerViewer.data()); dispXf = ownerRiuViewer->ownerReservoirView()->displayCoordTransform();
dispXf = viewer->ownerReservoirView()->displayCoordTransform(); Rim3dView* view = dynamic_cast<Rim3dView*>(ownerRiuViewer->ownerReservoirView());
Rim3dView* view = dynamic_cast<Rim3dView*>(viewer->ownerReservoirView());
handleSize = 0.7 * view->ownerCase()->characteristicCellSize(); handleSize = 0.7 * view->ownerCase()->characteristicCellSize();
} }
@ -881,7 +883,7 @@ void RicWellTarget3dEditor::slotUpdated(const cvf::Vec3d& origin, const cvf::Vec
cvf::ref<caf::DisplayCoordTransform> dispXf; cvf::ref<caf::DisplayCoordTransform> dispXf;
{ {
RiuViewer* viewer = dynamic_cast<RiuViewer*>(m_ownerViewer.data()); RiuViewer* viewer = dynamic_cast<RiuViewer*>(ownerViewer());
dispXf = viewer->ownerReservoirView()->displayCoordTransform(); dispXf = viewer->ownerReservoirView()->displayCoordTransform();
} }

View File

@ -206,13 +206,17 @@ public:
PdmUi3dObjectEditorHandle(); PdmUi3dObjectEditorHandle();
~PdmUi3dObjectEditorHandle() override; ~PdmUi3dObjectEditorHandle() override;
void setViewer(caf::Viewer* ownerViewer); void setViewer(QWidget* ownerViewer);
protected: protected:
QWidget* ownerViewer() { return m_ownerViewer;}
// To be removed when splitting the PdmUiObjectEditorHandle // To be removed when splitting the PdmUiObjectEditorHandle
QWidget* createWidget(QWidget* parent) override { return nullptr;} QWidget* createWidget(QWidget* parent) override { return nullptr;}
QPointer<caf::Viewer> m_ownerViewer; private:
QPointer<QWidget> m_ownerViewer;
}; };
//================================================================================================== //==================================================================================================
@ -227,17 +231,18 @@ class PdmUiSelection3dEditorVisualizer : public QObject, caf::SelectionChangedRe
{ {
Q_OBJECT Q_OBJECT
public: public:
PdmUiSelection3dEditorVisualizer(caf::Viewer* ownerViewer); PdmUiSelection3dEditorVisualizer(QWidget* ownerViewer);
~PdmUiSelection3dEditorVisualizer() override; ~PdmUiSelection3dEditorVisualizer() override;
void setConfigName(const QString& configName) { m_configName = configName; } void setConfigName(const QString& configName) { m_configName = configName; }
void updateVisibleEditors(); void updateVisibleEditors();
protected:
private:
void onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels ) override; void onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels ) override;
std::vector< QPointer<PdmUi3dObjectEditorHandle> > m_active3DEditors; std::vector< QPointer<PdmUi3dObjectEditorHandle> > m_active3DEditors;
QPointer<caf::Viewer> m_ownerViewer; QPointer<QWidget> m_ownerViewer;
QString m_configName; QString m_configName;
}; };