From 04754d394fbaf4a192ea2f975d091b3ed26c6b3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Wed, 28 Nov 2018 14:18:10 +0100 Subject: [PATCH] #3776 Add toggle to text and reach circles annotations --- .../RivReachCircleAnnotationPartMgr.cpp | 2 + .../RivTextAnnotationPartMgr.cpp | 2 + .../Annotations/RimLineBasedAnnotation.cpp | 21 +++++++ .../Annotations/RimLineBasedAnnotation.h | 9 +++ .../Annotations/RimPolylinesAnnotation.cpp | 12 ---- .../Annotations/RimPolylinesAnnotation.h | 3 - .../RimPolylinesFromFileAnnotation.cpp | 3 +- .../Annotations/RimReachCircleAnnotation.cpp | 20 ------- .../Annotations/RimReachCircleAnnotation.h | 3 - .../Annotations/RimTextAnnotation.cpp | 58 ++++++++++--------- .../Annotations/RimTextAnnotation.h | 8 ++- 11 files changed, 71 insertions(+), 70 deletions(-) diff --git a/ApplicationCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp b/ApplicationCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp index a70b088cc5..300e8633fe 100644 --- a/ApplicationCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp @@ -124,6 +124,8 @@ void RivReachCircleAnnotationPartMgr::appendDynamicGeometryPartsToModel(cvf::Mod const caf::DisplayCoordTransform* displayXf) { if (m_rimAnnotation.isNull()) return; + if (!m_rimAnnotation->isActive()) return; + if (!validateAnnotation(m_rimAnnotation)) return; buildParts(displayXf, false, 0.0); diff --git a/ApplicationCode/ModelVisualization/RivTextAnnotationPartMgr.cpp b/ApplicationCode/ModelVisualization/RivTextAnnotationPartMgr.cpp index fd3b97a54a..2996dcbf45 100644 --- a/ApplicationCode/ModelVisualization/RivTextAnnotationPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivTextAnnotationPartMgr.cpp @@ -155,6 +155,8 @@ void RivTextAnnotationPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasic const caf::DisplayCoordTransform * displayXf) { if (m_rimAnnotation.isNull()) return; + if (!m_rimAnnotation->isActive()) return; + if (!validateAnnotation(m_rimAnnotation)) return; buildParts(displayXf, false, 0.0); diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.cpp index 2cc25334f2..a61715b00a 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.cpp @@ -33,6 +33,9 @@ RimLineBasedAnnotation::RimLineBasedAnnotation() m_appearance = new RimAnnotationLineAppearance(); m_appearance.uiCapability()->setUiTreeHidden(true); m_appearance.uiCapability()->setUiTreeChildrenHidden(true); + CAF_PDM_InitField(&m_isActive, "IsActive", true, "Is Active", "", "", ""); + m_isActive.uiCapability()->setUiHidden(true); + } @@ -43,3 +46,21 @@ RimAnnotationLineAppearance* RimLineBasedAnnotation::appearance() const { return m_appearance; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimLineBasedAnnotation::isActive() +{ + return m_isActive(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* RimLineBasedAnnotation::objectToggleField() +{ + return &m_isActive; +} + + + diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.h b/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.h index 1db2d5a654..303d3e4b58 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.h +++ b/ApplicationCode/ProjectDataModel/Annotations/RimLineBasedAnnotation.h @@ -21,6 +21,7 @@ #include "cafPdmObject.h" #include "cafPdmChildField.h" +#include "cafPdmField.h" class RimGridView; class RimAnnotationLineAppearance; @@ -37,6 +38,14 @@ public: RimLineBasedAnnotation(); RimAnnotationLineAppearance* appearance() const; + bool isActive(); + +protected: + virtual caf::PdmFieldHandle* objectToggleField() override; + +private: + caf::PdmField m_isActive; + private: caf::PdmChildField m_appearance; }; diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.cpp index 6d6ad93b86..825813f294 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.cpp @@ -35,9 +35,6 @@ RimPolylinesAnnotation::RimPolylinesAnnotation() { CAF_PDM_InitObject("PolylineAnnotation", ":/WellCollection.png", "", ""); - CAF_PDM_InitField(&m_isActive, "IsActive", true, "Is Active", "", "", ""); - m_isActive.uiCapability()->setUiHidden(true); - } //-------------------------------------------------------------------------------------------------- @@ -48,12 +45,3 @@ RimPolylinesAnnotation::~RimPolylinesAnnotation() } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -bool RimPolylinesAnnotation::isActive() -{ - return m_isActive(); -} - - diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.h b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.h index 1ab52dd060..fd42d89b8b 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.h +++ b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesAnnotation.h @@ -39,11 +39,8 @@ public: RimPolylinesAnnotation(); ~RimPolylinesAnnotation(); - bool isActive(); virtual cvf::ref polyLinesData() = 0; virtual bool isEmpty() = 0; -private: - caf::PdmField m_isActive; }; diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesFromFileAnnotation.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesFromFileAnnotation.cpp index 3235a55868..33751c2a9d 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesFromFileAnnotation.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimPolylinesFromFileAnnotation.cpp @@ -37,8 +37,7 @@ RimPolylinesFromFileAnnotation::RimPolylinesFromFileAnnotation() { CAF_PDM_InitObject("PolyLines Annotation", ":/WellCollection.png", "", ""); - CAF_PDM_InitFieldNoDefault(&m_polyLinesFileName, "PolyLineFilePath", "File Path", "", "", ""); - m_polyLinesFileName.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); + CAF_PDM_InitFieldNoDefault(&m_polyLinesFileName, "PolyLineFilePath", "File", "", "", ""); CAF_PDM_InitField(&m_userDescription, "PolyLineDescription", QString(""), "Name", "", "", ""); } diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp index a41c23befb..55b24e028e 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp @@ -101,23 +101,3 @@ caf::PdmFieldHandle* RimReachCircleAnnotation::userDescriptionField() return &m_name; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RimReachCircleAnnotation::gridViewsContainingAnnotations() const -{ - std::vector views; - RimProject* project = nullptr; - this->firstAncestorOrThisOfType(project); - - if (!project) return views; - - std::vector visibleGridViews; - project->allVisibleGridViews(visibleGridViews); - - for (auto& gridView : visibleGridViews) - { - if (gridView->annotationCollection()->isActive()) views.push_back(gridView); - } - return views; -} diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h b/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h index c800e40f1f..a83367b0e3 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h +++ b/ApplicationCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h @@ -64,9 +64,6 @@ protected: void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; caf::PdmFieldHandle* userDescriptionField() override; -private: - std::vector gridViewsContainingAnnotations() const; - private: caf::PdmField m_centerPointXyd; caf::PdmField m_radius; diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp index 91d7844ec1..7c1b59c91c 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp @@ -21,6 +21,7 @@ #include "RimAnnotationInViewCollection.h" #include "RimGridView.h" #include "RimProject.h" +#include "RimAnnotationCollection.h" CAF_PDM_SOURCE_INIT(RimTextAnnotation, "RimTextAnnotation"); @@ -36,6 +37,18 @@ RimTextAnnotation::RimTextAnnotation() CAF_PDM_InitField(&m_anchorPointXyd, "AnchorPointXyd", Vec3d::ZERO, "Anchor Point", "", "", ""); CAF_PDM_InitField(&m_labelPointXyd, "LabelPointXyd", Vec3d::ZERO, "Label Point", "", "", ""); CAF_PDM_InitField(&m_text, "Text", QString("(New text)"), "Text", "", "", ""); + + CAF_PDM_InitField(&m_isActive, "IsActive", true, "Is Active", "", "", ""); + m_isActive.uiCapability()->setUiHidden(true); + +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimTextAnnotation::~RimTextAnnotation() +{ + } //-------------------------------------------------------------------------------------------------- @@ -93,17 +106,10 @@ void RimTextAnnotation::fieldChangedByUi(const caf::PdmFieldHandle* changedField const QVariant& oldValue, const QVariant& newValue) { - auto views = gridViewsContainingAnnotations(); - if (!views.empty()) - { - if (changedField == &m_text || changedField == &m_anchorPointXyd || changedField == &m_labelPointXyd) - { - for (auto& view : views) - { - view->scheduleCreateDisplayModelAndRedraw(); - } - } - } + RimAnnotationCollection* annColl = nullptr; + this->firstAncestorOrThisOfTypeAsserted(annColl); + + annColl->scheduleRedrawOfRelevantViews(); } //-------------------------------------------------------------------------------------------------- @@ -115,22 +121,20 @@ caf::PdmFieldHandle* RimTextAnnotation::userDescriptionField() } //-------------------------------------------------------------------------------------------------- -/// +/// //-------------------------------------------------------------------------------------------------- -std::vector RimTextAnnotation::gridViewsContainingAnnotations() const +bool RimTextAnnotation::isActive() { - std::vector views; - RimProject* project = nullptr; - this->firstAncestorOrThisOfType(project); - - if (!project) return views; - - std::vector visibleGridViews; - project->allVisibleGridViews(visibleGridViews); - - for (auto& gridView : visibleGridViews) - { - if (gridView->annotationCollection()->isActive()) views.push_back(gridView); - } - return views; + return m_isActive(); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* RimTextAnnotation::objectToggleField() +{ + return &m_isActive; +} + + + diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.h b/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.h index a451d20b37..ddd5ab2543 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.h +++ b/ApplicationCode/ProjectDataModel/Annotations/RimTextAnnotation.h @@ -51,23 +51,25 @@ class RimTextAnnotation : public caf::PdmObject public: RimTextAnnotation(); + ~RimTextAnnotation(); Vec3d anchorPoint() const; Vec3d labelPoint() const; void setText(const QString& text); const QString& text() const; + bool isActive(); protected: void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; caf::PdmFieldHandle* userDescriptionField() override; - -private: - std::vector gridViewsContainingAnnotations() const; + virtual caf::PdmFieldHandle* objectToggleField() override; private: caf::PdmField m_anchorPointXyd; caf::PdmField m_labelPointXyd; caf::PdmField m_text; + caf::PdmField m_isActive; + };