#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);
*gridIndices = gridCollection()->indicesToVisibleGrids();
/*
// Create vector of grid indices to render
std::vector<RigGridBase*> grids;
if (this->m_eclipseCase && this->m_eclipseCase->eclipseCaseData() )
@@ -1030,6 +1034,7 @@ void RimEclipseView::indicesToVisibleGrids(std::vector<size_t>* gridIndices)
gridIndices->push_back(i);
}
}
*/
}
//--------------------------------------------------------------------------------------------------

View File

@@ -23,7 +23,7 @@
#include "RigMainGrid.h"
#include <cafPdmUiTreeOrdering.h>
#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<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);
}
RimGridView* rimView = nullptr;
this->firstAncestorOrThisOfType(rimView);
rimView->scheduleCreateDisplayModelAndRedraw();
}
//--------------------------------------------------------------------------------------------------

View File

@@ -19,10 +19,10 @@
#pragma once
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmChildField.h"
#include "cafPdmChildArrayField.h"
#include <QString>
@@ -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<bool> m_isActive;
caf::PdmField<QString> m_gridName;
caf::PdmField<int> m_gridIndex;
caf::PdmField<bool> m_isActive;
caf::PdmField<QString> m_gridName;
caf::PdmField<int> 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<RimGridInfo*> 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:
@@ -91,28 +91,30 @@ 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<size_t> 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<bool> m_isActive;
caf::PdmChildField<RimGridInfo*> m_mainGrid;
caf::PdmChildField<RimGridInfoCollection*> m_persistentLgrs;
caf::PdmChildField<RimGridInfoCollection*> m_temporaryLgrs;
caf::PdmField<bool> m_isActive;
caf::PdmChildField<RimGridInfo*> m_mainGrid;
caf::PdmChildField<RimGridInfoCollection*> m_persistentLgrs;
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;
RimGridCollection* gridCollection() const;
protected: // Fields
caf::PdmChildField<RimIntersectionCollection*> m_crossSectionCollection;
caf::PdmChildField<Rim3dOverlayInfoConfig*> m_overlayInfoConfig;