mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Prototype use of uiOrdering
This commit is contained in:
parent
a93ecb3940
commit
90611208c9
@ -26,11 +26,13 @@
|
||||
#include "RimEclipsePropertyFilterCollection.h"
|
||||
#include "RimEclipseResultDefinition.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimPinnedFieldCollection.h"
|
||||
#include "RimViewController.h"
|
||||
|
||||
#include "Riu3DMainWindowTools.h"
|
||||
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
#include "Riu3DMainWindowTools.h"
|
||||
#include "cvfAssert.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -64,6 +66,8 @@ void RicEclipsePropertyFilterFeatureImpl::addPropertyFilter( RimEclipsePropertyF
|
||||
propertyFilterCollection->propertyFiltersField().push_back( propertyFilter );
|
||||
setDefaults( propertyFilter );
|
||||
|
||||
RimPinnedFieldCollection::instance()->addQuickAccessFields( propertyFilter );
|
||||
|
||||
propertyFilterCollection->reservoirView()->scheduleGeometryRegen( PROPERTY_FILTERED );
|
||||
propertyFilterCollection->reservoirView()->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
@ -82,6 +86,8 @@ void RicEclipsePropertyFilterFeatureImpl::insertPropertyFilter( RimEclipseProper
|
||||
propertyFilterCollection->propertyFiltersField().insertAt( static_cast<int>( index ), propertyFilter );
|
||||
setDefaults( propertyFilter );
|
||||
|
||||
RimPinnedFieldCollection::instance()->addQuickAccessFields( propertyFilter );
|
||||
|
||||
propertyFilterCollection->reservoirView()->scheduleGeometryRegen( PROPERTY_FILTERED );
|
||||
propertyFilterCollection->reservoirView()->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
|
@ -247,6 +247,41 @@ void RimEclipsePropertyFilter::defineUiOrdering( QString uiConfigName, caf::PdmU
|
||||
updateRangeLabel();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<caf::PdmFieldHandle*> RimEclipsePropertyFilter::quickAccessFields()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipsePropertyFilter::quickAccessUiOrdering( caf::PdmUiOrdering& uiOrdering )
|
||||
{
|
||||
auto name = "Property Filter : " + m_resultDefinition->resultVariableUiName();
|
||||
|
||||
int index = 1;
|
||||
auto candidate = name;
|
||||
while ( uiOrdering.findGroup( candidate ) != nullptr )
|
||||
{
|
||||
candidate = name + " (" + QString::number( index++ ) + ")";
|
||||
}
|
||||
|
||||
auto group = uiOrdering.addNewGroup( candidate );
|
||||
group->add( &m_lowerBound );
|
||||
group->add( &m_upperBound );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimEclipsePropertyFilter::hasUiOrdering() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RimFieldQuickAccessInterface.h"
|
||||
#include "RimPropertyFilter.h"
|
||||
|
||||
#include "cafPdmChildField.h"
|
||||
@ -31,7 +32,7 @@ class RimEclipseResultDefinition;
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimEclipsePropertyFilter : public RimPropertyFilter
|
||||
class RimEclipsePropertyFilter : public RimPropertyFilter, public RimFieldQuickAccessInterface
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
@ -56,6 +57,10 @@ public:
|
||||
|
||||
void updateUiFieldsFromActiveResult();
|
||||
|
||||
std::vector<caf::PdmFieldHandle*> quickAccessFields() override;
|
||||
void quickAccessUiOrdering( caf::PdmUiOrdering& uiOrdering ) override;
|
||||
bool hasUiOrdering() const override;
|
||||
|
||||
private:
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override;
|
||||
|
@ -18,8 +18,18 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
class PdmFieldHandle;
|
||||
class PdmUiOrdering;
|
||||
}; // namespace caf
|
||||
|
||||
class RimFieldQuickAccessInterface
|
||||
{
|
||||
public:
|
||||
virtual std::vector<caf::PdmFieldHandle*> quickAccessFields() = 0;
|
||||
virtual void quickAccessUiOrdering( caf::PdmUiOrdering& uiOrdering ){};
|
||||
virtual bool hasUiOrdering() const { return false; };
|
||||
};
|
||||
|
@ -36,7 +36,9 @@ RimPinnedFieldCollection::RimPinnedFieldCollection()
|
||||
{
|
||||
CAF_PDM_InitObject( "Field Reference Collection" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_fieldReferences, "Objects", "Objects" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_fieldReferences, "FieldReferences", "Field References" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_objectReferences, "ObjectReferences", "Objects With UiOrdering" );
|
||||
m_objectReferences.uiCapability()->setUiHidden( true );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -56,13 +58,12 @@ RimPinnedFieldCollection* RimPinnedFieldCollection::instance()
|
||||
void RimPinnedFieldCollection::addQuickAccessFieldsRecursively( caf::PdmObjectHandle* object )
|
||||
{
|
||||
if ( object == nullptr ) return;
|
||||
addQuickAccessFields( object );
|
||||
|
||||
for ( auto field : object->fields() )
|
||||
{
|
||||
if ( !field ) continue;
|
||||
|
||||
addQuickAccessFields( object );
|
||||
|
||||
for ( auto childObject : field->children() )
|
||||
{
|
||||
addQuickAccessFieldsRecursively( childObject );
|
||||
@ -84,6 +85,11 @@ void RimPinnedFieldCollection::addQuickAccessFields( caf::PdmObjectHandle* objec
|
||||
{
|
||||
addField( field );
|
||||
}
|
||||
|
||||
if ( quickInterface->hasUiOrdering() )
|
||||
{
|
||||
m_objectReferences.push_back( object );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -134,6 +140,7 @@ void RimPinnedFieldCollection::defineUiOrdering( QString uiConfigName, caf::PdmU
|
||||
if ( !activeView ) return;
|
||||
|
||||
deleteMarkedObjects();
|
||||
m_objectReferences.removeChild( nullptr );
|
||||
|
||||
std::vector<RimFieldQuickAccess*> fieldsForView;
|
||||
|
||||
@ -156,24 +163,42 @@ void RimPinnedFieldCollection::defineUiOrdering( QString uiConfigName, caf::PdmU
|
||||
}
|
||||
}
|
||||
|
||||
if ( fieldsForView.empty() ) return;
|
||||
|
||||
QString groupName;
|
||||
auto uiCapability = activeView->uiCapability();
|
||||
if ( uiCapability->userDescriptionField() && uiCapability->userDescriptionField()->uiCapability() )
|
||||
if ( !fieldsForView.empty() )
|
||||
{
|
||||
groupName = uiCapability->userDescriptionField()->uiCapability()->uiValue().toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
groupName = "Group ";
|
||||
}
|
||||
QString groupName;
|
||||
auto uiCapability = activeView->uiCapability();
|
||||
if ( uiCapability->userDescriptionField() && uiCapability->userDescriptionField()->uiCapability() )
|
||||
{
|
||||
groupName = uiCapability->userDescriptionField()->uiCapability()->uiValue().toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
groupName = "Group ";
|
||||
}
|
||||
|
||||
auto group = uiOrdering.addNewGroup( groupName );
|
||||
auto group = uiOrdering.addNewGroup( groupName );
|
||||
|
||||
for ( auto fieldRef : fieldsForView )
|
||||
{
|
||||
fieldRef->uiOrdering( uiConfigName, *group );
|
||||
for ( auto fieldRef : fieldsForView )
|
||||
{
|
||||
fieldRef->uiOrdering( uiConfigName, *group );
|
||||
}
|
||||
|
||||
auto objects = m_objectReferences.ptrReferencedObjectsByType();
|
||||
for ( auto obj : objects )
|
||||
{
|
||||
if ( !obj ) continue;
|
||||
|
||||
auto view = obj->firstAncestorOrThisOfType<RimGridView>();
|
||||
if ( view != activeView ) continue;
|
||||
|
||||
if ( auto qaInterface = dynamic_cast<RimFieldQuickAccessInterface*>( obj ) )
|
||||
{
|
||||
if ( qaInterface->hasUiOrdering() )
|
||||
{
|
||||
qaInterface->quickAccessUiOrdering( *group );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPtrArrayField.h"
|
||||
|
||||
class RimFieldQuickAccess;
|
||||
|
||||
@ -50,6 +51,7 @@ private:
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimFieldQuickAccess*> m_fieldReferences;
|
||||
caf::PdmPtrArrayField<caf::PdmObjectHandle*> m_objectReferences;
|
||||
|
||||
std::set<RimFieldQuickAccess*> m_toBeDeleted;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user