diff --git a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp index 3a5ddcde6b..4a3b203221 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp @@ -1015,6 +1015,10 @@ void RimEclipseView::indicesToVisibleGrids(std::vector* gridIndices) { CVF_ASSERT(gridIndices != nullptr); + *gridIndices = gridCollection()->indicesToVisibleGrids(); + + +/* // Create vector of grid indices to render std::vector grids; if (this->m_eclipseCase && this->m_eclipseCase->eclipseCaseData() ) @@ -1030,6 +1034,7 @@ void RimEclipseView::indicesToVisibleGrids(std::vector* gridIndices) gridIndices->push_back(i); } } +*/ } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimGridCollection.cpp b/ApplicationCode/ProjectDataModel/RimGridCollection.cpp index d4d9f429d9..a063fa61f3 100644 --- a/ApplicationCode/ProjectDataModel/RimGridCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimGridCollection.cpp @@ -23,7 +23,7 @@ #include "RigMainGrid.h" -#include +#include "cafPdmUiTreeOrdering.h" //-------------------------------------------------------------------------------------------------- /// @@ -65,14 +65,6 @@ caf::PdmFieldHandle* RimGridInfo::objectToggleField() return &m_isActive; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridInfo::setActive(bool active) -{ - m_isActive = active; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -90,6 +82,14 @@ void RimGridInfo::setIndex(int index) m_gridIndex = index; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimGridInfo::isActive() const +{ + return m_isActive(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -117,7 +117,13 @@ caf::PdmFieldHandle* RimGridInfo::userDescriptionField() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimGridInfo::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) {} +void RimGridInfo::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) +{ + RimGridView* rimView = nullptr; + this->firstAncestorOrThisOfType(rimView); + + rimView->scheduleCreateDisplayModelAndRedraw(); +} CAF_PDM_SOURCE_INIT(RimGridInfoCollection, "GridInfoCollection"); @@ -136,13 +142,20 @@ RimGridInfoCollection::RimGridInfoCollection() m_gridInfos.uiCapability()->setUiTreeHidden(true); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimGridInfoCollection::isActive() const +{ + return m_isActive(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimGridInfoCollection::addGridInfo(const QString& name, size_t gridIndex) { auto gridInfo = new RimGridInfo(); - gridInfo->setActive(true); gridInfo->setName(name); gridInfo->setIndex((int)gridIndex); m_gridInfos.push_back(gridInfo); @@ -208,6 +221,10 @@ void RimGridInfoCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedF const QVariant& oldValue, const QVariant& newValue) { + RimGridView* rimView = nullptr; + this->firstAncestorOrThisOfType(rimView); + + rimView->scheduleCreateDisplayModelAndRedraw(); } CAF_PDM_SOURCE_INIT(RimGridCollection, "GridCollection"); @@ -258,6 +275,45 @@ const QString RimGridCollection::temporaryGridUiName() return "Temporary LGRs"; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RimGridCollection::indicesToVisibleGrids() const +{ + std::vector gridIndices; + + if (!isActive()) return gridIndices; + + if (m_mainGrid()->isActive()) + { + gridIndices.push_back(m_mainGrid->index()); + } + + if (m_persistentLgrs()->isActive()) + { + for (const auto& gridInfo : m_persistentLgrs->gridInfos()) + { + if (gridInfo->isActive()) + { + gridIndices.push_back(gridInfo->index()); + } + } + } + + if (m_temporaryLgrs()->isActive()) + { + for (const auto& gridInfo : m_temporaryLgrs->gridInfos()) + { + if (gridInfo->isActive()) + { + gridIndices.push_back(gridInfo->index()); + } + } + } + + return gridIndices; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -360,6 +416,11 @@ void RimGridCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField updateUiIconFromState(m_isActive); } + + RimGridView* rimView = nullptr; + this->firstAncestorOrThisOfType(rimView); + + rimView->scheduleCreateDisplayModelAndRedraw(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimGridCollection.h b/ApplicationCode/ProjectDataModel/RimGridCollection.h index c6f9e2dc23..1a15b7cdfe 100644 --- a/ApplicationCode/ProjectDataModel/RimGridCollection.h +++ b/ApplicationCode/ProjectDataModel/RimGridCollection.h @@ -2,34 +2,34 @@ // // Copyright (C) Statoil ASA // Copyright (C) Ceetron Solutions AS -// +// // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. -// -// See the GNU General Public License at +// +// See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once +#include "cafPdmChildArrayField.h" +#include "cafPdmChildField.h" #include "cafPdmField.h" #include "cafPdmObject.h" -#include "cafPdmChildField.h" -#include "cafPdmChildArrayField.h" #include class RigMainGrid; //================================================================================================== -/// +/// //================================================================================================== class RimGridInfo : public caf::PdmObject { @@ -39,23 +39,22 @@ public: RimGridInfo(); ~RimGridInfo() {} + void setName(const QString& name); + void setIndex(int index); + bool isActive() const; + QString name() const; + int index() const; + caf::PdmFieldHandle* objectToggleField() override; - void setActive(bool active); - void setName(const QString& name); - void setIndex(int index); - - QString name() const; - int index() const; - protected: - caf::PdmFieldHandle* userDescriptionField() override; + caf::PdmFieldHandle* userDescriptionField() override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; private: - caf::PdmField m_isActive; - caf::PdmField m_gridName; - caf::PdmField m_gridIndex; + caf::PdmField m_isActive; + caf::PdmField m_gridName; + caf::PdmField m_gridIndex; }; //================================================================================================== @@ -69,14 +68,15 @@ public: RimGridInfoCollection(); ~RimGridInfoCollection() {} - void addGridInfo(const QString& name, size_t gridIndex); - void clear(); - bool containsGrid(const QString& gridName) const; - void deleteGridInfo(const QString& gridName); + bool isActive() const; + void addGridInfo(const QString& name, size_t gridIndex); + void clear(); + bool containsGrid(const QString& gridName) const; + void deleteGridInfo(const QString& gridName); std::vector gridInfos() const; + caf::PdmFieldHandle* objectToggleField() override; protected: - caf::PdmFieldHandle* objectToggleField() override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; private: @@ -85,34 +85,36 @@ private: }; //================================================================================================== -/// -/// +/// +/// //================================================================================================== class RimGridCollection : public caf::PdmObject { CAF_PDM_HEADER_INIT; + public: RimGridCollection(); ~RimGridCollection() override; - void setActive(bool active); - bool isActive() const; - caf::PdmFieldHandle* objectToggleField() override; - void syncFromMainGrid(); + void setActive(bool active); + bool isActive() const; + std::vector indicesToVisibleGrids() const; - static const QString persistentGridUiName(); - static const QString temporaryGridUiName(); + caf::PdmFieldHandle* objectToggleField() override; + void syncFromMainGrid(); + static const QString persistentGridUiName(); + static const QString temporaryGridUiName(); protected: - void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; - void initAfterRead() override; - void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; + void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; + void initAfterRead() override; + void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; private: - const RigMainGrid* mainGrid() const; + const RigMainGrid* mainGrid() const; - caf::PdmField m_isActive; - caf::PdmChildField m_mainGrid; - caf::PdmChildField m_persistentLgrs; - caf::PdmChildField m_temporaryLgrs; + caf::PdmField m_isActive; + caf::PdmChildField m_mainGrid; + caf::PdmChildField m_persistentLgrs; + caf::PdmChildField m_temporaryLgrs; }; diff --git a/ApplicationCode/ProjectDataModel/RimGridView.cpp b/ApplicationCode/ProjectDataModel/RimGridView.cpp index f28fec6d2e..e37cbfa409 100644 --- a/ApplicationCode/ProjectDataModel/RimGridView.cpp +++ b/ApplicationCode/ProjectDataModel/RimGridView.cpp @@ -363,6 +363,14 @@ void RimGridView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimGridCollection* RimGridView::gridCollection() const +{ + return m_gridCollection(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimGridView.h b/ApplicationCode/ProjectDataModel/RimGridView.h index 6b78d6678f..cd73056ba7 100644 --- a/ApplicationCode/ProjectDataModel/RimGridView.h +++ b/ApplicationCode/ProjectDataModel/RimGridView.h @@ -70,6 +70,8 @@ protected: void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; + RimGridCollection* gridCollection() const; + protected: // Fields caf::PdmChildField m_crossSectionCollection; caf::PdmChildField m_overlayInfoConfig;