#3558 Grid items in Project Tree : Control grid visibility from checked state

This commit is contained in:
Magne Sjaastad
2018-10-26 16:08:27 +02:00
parent 42de5833a9
commit 5906e68245
5 changed files with 128 additions and 50 deletions

View File

@@ -1015,6 +1015,10 @@ void RimEclipseView::indicesToVisibleGrids(std::vector<size_t>* gridIndices)
{ {
CVF_ASSERT(gridIndices != nullptr); CVF_ASSERT(gridIndices != nullptr);
*gridIndices = gridCollection()->indicesToVisibleGrids();
/*
// Create vector of grid indices to render // Create vector of grid indices to render
std::vector<RigGridBase*> grids; std::vector<RigGridBase*> grids;
if (this->m_eclipseCase && this->m_eclipseCase->eclipseCaseData() ) if (this->m_eclipseCase && this->m_eclipseCase->eclipseCaseData() )
@@ -1030,6 +1034,7 @@ void RimEclipseView::indicesToVisibleGrids(std::vector<size_t>* gridIndices)
gridIndices->push_back(i); gridIndices->push_back(i);
} }
} }
*/
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -23,7 +23,7 @@
#include "RigMainGrid.h" #include "RigMainGrid.h"
#include <cafPdmUiTreeOrdering.h> #include "cafPdmUiTreeOrdering.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@@ -65,14 +65,6 @@ caf::PdmFieldHandle* RimGridInfo::objectToggleField()
return &m_isActive; return &m_isActive;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridInfo::setActive(bool active)
{
m_isActive = active;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -90,6 +82,14 @@ void RimGridInfo::setIndex(int index)
m_gridIndex = 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"); CAF_PDM_SOURCE_INIT(RimGridInfoCollection, "GridInfoCollection");
@@ -136,13 +142,20 @@ RimGridInfoCollection::RimGridInfoCollection()
m_gridInfos.uiCapability()->setUiTreeHidden(true); m_gridInfos.uiCapability()->setUiTreeHidden(true);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimGridInfoCollection::isActive() const
{
return m_isActive();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimGridInfoCollection::addGridInfo(const QString& name, size_t gridIndex) void RimGridInfoCollection::addGridInfo(const QString& name, size_t gridIndex)
{ {
auto gridInfo = new RimGridInfo(); auto gridInfo = new RimGridInfo();
gridInfo->setActive(true);
gridInfo->setName(name); gridInfo->setName(name);
gridInfo->setIndex((int)gridIndex); gridInfo->setIndex((int)gridIndex);
m_gridInfos.push_back(gridInfo); m_gridInfos.push_back(gridInfo);
@@ -208,6 +221,10 @@ void RimGridInfoCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedF
const QVariant& oldValue, const QVariant& oldValue,
const QVariant& newValue) const QVariant& newValue)
{ {
RimGridView* rimView = nullptr;
this->firstAncestorOrThisOfType(rimView);
rimView->scheduleCreateDisplayModelAndRedraw();
} }
CAF_PDM_SOURCE_INIT(RimGridCollection, "GridCollection"); CAF_PDM_SOURCE_INIT(RimGridCollection, "GridCollection");
@@ -258,6 +275,45 @@ const QString RimGridCollection::temporaryGridUiName()
return "Temporary LGRs"; return "Temporary LGRs";
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<size_t> RimGridCollection::indicesToVisibleGrids() const
{
std::vector<size_t> 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); updateUiIconFromState(m_isActive);
} }
RimGridView* rimView = nullptr;
this->firstAncestorOrThisOfType(rimView);
rimView->scheduleCreateDisplayModelAndRedraw();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -2,34 +2,34 @@
// //
// Copyright (C) Statoil ASA // Copyright (C) Statoil ASA
// Copyright (C) Ceetron Solutions AS // Copyright (C) Ceetron Solutions AS
// //
// ResInsight is free software: you can redistribute it and/or modify // ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or // WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. // FITNESS FOR A PARTICULAR PURPOSE.
// //
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html> // See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details. // for more details.
// //
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#pragma once #pragma once
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafPdmChildField.h"
#include "cafPdmChildArrayField.h"
#include <QString> #include <QString>
class RigMainGrid; class RigMainGrid;
//================================================================================================== //==================================================================================================
/// ///
//================================================================================================== //==================================================================================================
class RimGridInfo : public caf::PdmObject class RimGridInfo : public caf::PdmObject
{ {
@@ -39,23 +39,22 @@ public:
RimGridInfo(); RimGridInfo();
~RimGridInfo() {} ~RimGridInfo() {}
void setName(const QString& name);
void setIndex(int index);
bool isActive() const;
QString name() const;
int index() const;
caf::PdmFieldHandle* objectToggleField() override; caf::PdmFieldHandle* objectToggleField() override;
void setActive(bool active);
void setName(const QString& name);
void setIndex(int index);
QString name() const;
int index() const;
protected: protected:
caf::PdmFieldHandle* userDescriptionField() override; caf::PdmFieldHandle* userDescriptionField() override;
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
private: private:
caf::PdmField<bool> m_isActive; caf::PdmField<bool> m_isActive;
caf::PdmField<QString> m_gridName; caf::PdmField<QString> m_gridName;
caf::PdmField<int> m_gridIndex; caf::PdmField<int> m_gridIndex;
}; };
//================================================================================================== //==================================================================================================
@@ -69,14 +68,15 @@ public:
RimGridInfoCollection(); RimGridInfoCollection();
~RimGridInfoCollection() {} ~RimGridInfoCollection() {}
void addGridInfo(const QString& name, size_t gridIndex); bool isActive() const;
void clear(); void addGridInfo(const QString& name, size_t gridIndex);
bool containsGrid(const QString& gridName) const; void clear();
void deleteGridInfo(const QString& gridName); bool containsGrid(const QString& gridName) const;
void deleteGridInfo(const QString& gridName);
std::vector<RimGridInfo*> gridInfos() const; std::vector<RimGridInfo*> gridInfos() const;
caf::PdmFieldHandle* objectToggleField() override;
protected: protected:
caf::PdmFieldHandle* objectToggleField() override;
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
private: private:
@@ -85,34 +85,36 @@ private:
}; };
//================================================================================================== //==================================================================================================
/// ///
/// ///
//================================================================================================== //==================================================================================================
class RimGridCollection : public caf::PdmObject class RimGridCollection : public caf::PdmObject
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public: public:
RimGridCollection(); RimGridCollection();
~RimGridCollection() override; ~RimGridCollection() override;
void setActive(bool active); void setActive(bool active);
bool isActive() const; bool isActive() const;
caf::PdmFieldHandle* objectToggleField() override; std::vector<size_t> indicesToVisibleGrids() const;
void syncFromMainGrid();
static const QString persistentGridUiName(); caf::PdmFieldHandle* objectToggleField() override;
static const QString temporaryGridUiName(); void syncFromMainGrid();
static const QString persistentGridUiName();
static const QString temporaryGridUiName();
protected: protected:
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
void initAfterRead() override; void initAfterRead() override;
void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override;
private: private:
const RigMainGrid* mainGrid() const; const RigMainGrid* mainGrid() const;
caf::PdmField<bool> m_isActive; caf::PdmField<bool> m_isActive;
caf::PdmChildField<RimGridInfo*> m_mainGrid; caf::PdmChildField<RimGridInfo*> m_mainGrid;
caf::PdmChildField<RimGridInfoCollection*> m_persistentLgrs; caf::PdmChildField<RimGridInfoCollection*> m_persistentLgrs;
caf::PdmChildField<RimGridInfoCollection*> m_temporaryLgrs; caf::PdmChildField<RimGridInfoCollection*> m_temporaryLgrs;
}; };

View File

@@ -363,6 +363,14 @@ void RimGridView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGridCollection* RimGridView::gridCollection() const
{
return m_gridCollection();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -70,6 +70,8 @@ protected:
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
RimGridCollection* gridCollection() const;
protected: // Fields protected: // Fields
caf::PdmChildField<RimIntersectionCollection*> m_crossSectionCollection; caf::PdmChildField<RimIntersectionCollection*> m_crossSectionCollection;
caf::PdmChildField<Rim3dOverlayInfoConfig*> m_overlayInfoConfig; caf::PdmChildField<Rim3dOverlayInfoConfig*> m_overlayInfoConfig;