mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 14:40:26 -05:00
#2070 AppFwk : Disable default IO for proxy fields
Proxy fields usually reads and transforms data from other sources, usually other Pdm fields. This commit disables IO for proxy fields in the constructor. If XML serialization is required, this must be set on the proxy field, like this field.xmlCapability()->setIOWritable(true) field.xmlCapability()->setIOReadable(true)
This commit is contained in:
1 parent
d4a64b4033
commit
9851afc621
30 files changed
+107
-32
No files matched your search
@@ -72,7 +72,6 @@ RimTextAnnotation::RimTextAnnotation()
|
||||
CAF_PDM_InitFieldNoDefault( &m_nameProxy, "NameProxy", "Name Proxy" );
|
||||
m_nameProxy.registerGetMethod( this, &RimTextAnnotation::extractNameFromText );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
m_anchorPointPickEventHandler = std::make_shared<RicVec3dPickEventHandler>( &m_anchorPointXyd );
|
||||
m_labelPointPickEventHandler = std::make_shared<RicVec3dPickEventHandler>( &m_labelPointXyd, 0.1 );
|
||||
|
||||
@@ -71,7 +71,6 @@ RimCellFilter::RimCellFilter( FilterDefinitionType defType )
|
||||
m_nameProxy.registerGetMethod( this, &RimCellFilter::fullName );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -88,13 +88,11 @@ RimEclipsePropertyFilter::RimEclipsePropertyFilter()
|
||||
m_integerLowerBound.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() );
|
||||
m_integerLowerBound.registerGetMethod( this, &RimEclipsePropertyFilter::lowerBound );
|
||||
m_integerLowerBound.registerSetMethod( this, &RimEclipsePropertyFilter::setLowerBound );
|
||||
m_integerLowerBound.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_integerUpperBound, "IntegerUpperBound", "Max" );
|
||||
m_integerUpperBound.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() );
|
||||
m_integerUpperBound.registerGetMethod( this, &RimEclipsePropertyFilter::upperBound );
|
||||
m_integerUpperBound.registerSetMethod( this, &RimEclipsePropertyFilter::setUpperBound );
|
||||
m_integerUpperBound.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_useCategorySelection, "CategorySelection", false, "Category Selection" );
|
||||
m_upperBound.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
|
||||
|
||||
@@ -122,7 +122,6 @@ RimFracture::RimFracture()
|
||||
CAF_PDM_InitFieldNoDefault( &m_uiAnchorPosition, "ui_positionAtWellpath", "Fracture Position" );
|
||||
m_uiAnchorPosition.registerGetMethod( this, &RimFracture::fracturePositionForUi );
|
||||
m_uiAnchorPosition.uiCapability()->setUiReadOnly( true );
|
||||
m_uiAnchorPosition.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_azimuth, "Azimuth", 0.0, "Azimuth" );
|
||||
m_azimuth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
|
||||
@@ -146,12 +145,10 @@ RimFracture::RimFracture()
|
||||
CAF_PDM_InitFieldNoDefault( &m_uiWellPathAzimuth, "WellPathAzimuth", "Well Path Azimuth" );
|
||||
m_uiWellPathAzimuth.registerGetMethod( this, &RimFracture::wellAzimuthAtFracturePositionText );
|
||||
m_uiWellPathAzimuth.uiCapability()->setUiReadOnly( true );
|
||||
m_uiWellPathAzimuth.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_uiWellFractureAzimuthDiff, "WellFractureAzimuthDiff", "Azimuth Difference Between\nFracture and Well" );
|
||||
m_uiWellFractureAzimuthDiff.registerGetMethod( this, &RimFracture::wellFractureAzimuthDiffText );
|
||||
m_uiWellFractureAzimuthDiff.uiCapability()->setUiReadOnly( true );
|
||||
m_uiWellFractureAzimuthDiff.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_wellFractureAzimuthAngleWarning,
|
||||
"WellFractureAzimithAngleWarning",
|
||||
|
||||
@@ -119,7 +119,6 @@ RimFractureTemplate::RimFractureTemplate()
|
||||
CAF_PDM_InitFieldNoDefault( &m_nameAndUnit, "NameAndUnit", "NameAndUnit" );
|
||||
m_nameAndUnit.registerGetMethod( this, &RimFractureTemplate::nameAndUnit );
|
||||
m_nameAndUnit.uiCapability()->setUiHidden( true );
|
||||
m_nameAndUnit.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_fractureTemplateUnit,
|
||||
"UnitSystem",
|
||||
@@ -192,14 +191,12 @@ RimFractureTemplate::RimFractureTemplate()
|
||||
m_dFactorDisplayField.registerGetMethod( this, &RimFractureTemplate::dFactorForTemplate );
|
||||
m_dFactorDisplayField.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() );
|
||||
m_dFactorDisplayField.uiCapability()->setUiReadOnly( true );
|
||||
m_dFactorDisplayField.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_dFactorSummaryText, "dFactorSummaryText", "D Factor Summary" );
|
||||
m_dFactorSummaryText.registerGetMethod( this, &RimFractureTemplate::dFactorSummary );
|
||||
m_dFactorSummaryText.uiCapability()->setUiReadOnly( true );
|
||||
m_dFactorSummaryText.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() );
|
||||
m_dFactorSummaryText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP );
|
||||
m_dFactorSummaryText.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitScriptableField( &m_heightScaleFactor, "HeightScaleFactor", 1.0, "Height" );
|
||||
CAF_PDM_InitScriptableField( &m_halfLengthScaleFactor, "WidthScaleFactor", 1.0, "Half Length" );
|
||||
|
||||
@@ -66,7 +66,6 @@ RimEnsembleFileSet::RimEnsembleFileSet()
|
||||
CAF_PDM_InitFieldNoDefault( &m_ensembleInfo, "EnsembleInfo", "Info" );
|
||||
m_ensembleInfo.registerGetMethod( this, &RimEnsembleFileSet::ensembleInfo );
|
||||
m_ensembleInfo.uiCapability()->setUiReadOnly( true );
|
||||
m_ensembleInfo.xmlCapability()->disableIO();
|
||||
m_ensembleInfo.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_groupingMode, "GroupingMode", "Grouping Mode" );
|
||||
|
||||
@@ -47,7 +47,6 @@ RimWellRftEnsembleCurveSet::RimWellRftEnsembleCurveSet()
|
||||
CAF_PDM_InitFieldNoDefault( &m_ensembleName, "NameAndUnit", "NameAndUnit" );
|
||||
m_ensembleName.registerGetMethod( this, &RimWellRftEnsembleCurveSet::ensembleName );
|
||||
m_ensembleName.uiCapability()->setUiHidden( true );
|
||||
m_ensembleName.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_eclipseCase, "EclipseResultCase", "Eclipse Result Case" );
|
||||
m_eclipseCase.uiCapability()->setUiHidden( true );
|
||||
|
||||
@@ -68,7 +68,6 @@ RimParameterGroup::RimParameterGroup()
|
||||
m_labelProxy.registerGetMethod( this, &RimParameterGroup::labelOrName );
|
||||
m_labelProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_labelProxy.uiCapability()->setUiHidden( true );
|
||||
m_labelProxy.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_lists, "ParameterLists", "Parameter Lists" );
|
||||
m_lists.uiCapability()->setUiHidden( true );
|
||||
|
||||
@@ -40,11 +40,9 @@ RimFieldQuickAccess::RimFieldQuickAccess()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectObjectButton, "SelectObject", "...", ":/Select.svg", "Select Object in Property Editor" );
|
||||
m_selectObjectButton.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonCallbackEditor::uiEditorTypeName() );
|
||||
m_selectObjectButton.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_removeItemButton, "RemoveItem", "...", ":/pinned-remove.svg", "Remove Quick Access" );
|
||||
m_removeItemButton.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonCallbackEditor::uiEditorTypeName() );
|
||||
m_removeItemButton.xmlCapability()->disableIO();
|
||||
|
||||
m_markedForRemoval = false;
|
||||
}
|
||||
|
||||
@@ -86,7 +86,6 @@ Rim2dIntersectionView::Rim2dIntersectionView()
|
||||
CAF_PDM_InitField( &m_showAxisLines, "ShowAxisLines", false, "Show Axis Lines" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_nameProxy, "NameProxy", "Name" );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
m_nameProxy.registerGetMethod( this, &Rim2dIntersectionView::getName );
|
||||
m_nameProxy.registerSetMethod( this, &Rim2dIntersectionView::setName );
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@ RimColorLegendItem::RimColorLegendItem()
|
||||
CAF_PDM_InitFieldNoDefault( &m_nameProxy, "NameProxy", "Name Proxy" );
|
||||
m_nameProxy.registerGetMethod( this, &RimColorLegendItem::itemName );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
setDeletable( true );
|
||||
}
|
||||
|
||||
@@ -209,7 +209,6 @@ RimEclipseView::RimEclipseView()
|
||||
CAF_PDM_InitField( &m_showInvalidCells, "ShowInvalidCells", false, "Show Invalid Cells" );
|
||||
|
||||
CAF_PDM_InitScriptableFieldNoDefault( &m_cellResultData, "CellResultData", "", "", "", "Current Eclipse Cell Result" );
|
||||
m_cellResultData.xmlCapability()->disableIO();
|
||||
m_cellResultData.registerGetMethod( this, &RimEclipseView::currentCellResultData );
|
||||
m_cellResultData.registerSetMethod( this, &RimEclipseView::setCurrentCellResultData );
|
||||
|
||||
|
||||
@@ -111,7 +111,6 @@ RimGridCalculation::RimGridCalculation()
|
||||
CAF_PDM_InitFieldNoDefault( &m_nonVisibleResultText, "NonVisibleResultText", "" );
|
||||
m_nonVisibleResultText.registerGetMethod( this, &RimGridCalculation::nonVisibleResultAddressText );
|
||||
m_nonVisibleResultText.uiCapability()->setUiReadOnly( true );
|
||||
m_nonVisibleResultText.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectedTimeSteps, "SelectedTimeSteps", "Time Step Selection" );
|
||||
m_selectedTimeSteps.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
|
||||
|
||||
@@ -38,7 +38,6 @@ RimNameConfig::RimNameConfig( const QString& customName )
|
||||
CAF_PDM_InitFieldNoDefault( &m_customName, "CustomCurveName", "Custom Name Part" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_autoName, "AutoCurveName", "Full Name" );
|
||||
m_autoName.registerGetMethod( this, &RimNameConfig::autoName );
|
||||
m_autoName.xmlCapability()->disableIO();
|
||||
m_autoName.uiCapability()->setUiReadOnly( true );
|
||||
|
||||
m_customName = customName;
|
||||
|
||||
@@ -39,7 +39,6 @@ RimObservedFmuRftData::RimObservedFmuRftData()
|
||||
m_directoryPath_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_wells, "Wells", "Wells" );
|
||||
m_wells.xmlCapability()->disableIO();
|
||||
m_wells.uiCapability()->setUiReadOnly( true );
|
||||
m_wells.registerGetMethod( this, &RimObservedFmuRftData::wells );
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ RimPressureDepthData::RimPressureDepthData()
|
||||
m_filePath.uiCapability()->setUiReadOnly( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_wells, "Wells", "Wells" );
|
||||
m_wells.xmlCapability()->disableIO();
|
||||
m_wells.uiCapability()->setUiReadOnly( true );
|
||||
m_wells.registerGetMethod( this, &RimPressureDepthData::wellNames );
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ RimUserDefinedCalculationVariable::RimUserDefinedCalculationVariable()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_addressUi, "AddressUi", "Address" );
|
||||
m_addressUi.registerGetMethod( this, &RimUserDefinedCalculationVariable::displayString );
|
||||
m_addressUi.xmlCapability()->disableIO();
|
||||
m_addressUi.uiCapability()->setUiReadOnly( true );
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,6 @@ RimSeismicDifferenceData::RimSeismicDifferenceData()
|
||||
m_nameProxy.registerGetMethod( this, &RimSeismicDifferenceData::fullName );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_seismicData1, "SeismicData1", "Seismic Data 1" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_seismicData2, "SeismicData2", "Seismic Data 2" );
|
||||
|
||||
@@ -77,7 +77,6 @@ RimSeismicSection::RimSeismicSection()
|
||||
m_nameProxy.registerGetMethod( this, &RimSeismicSection::fullName );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_type, "Type", "Type" );
|
||||
|
||||
|
||||
@@ -183,7 +183,6 @@ RimStimPlanModel::RimStimPlanModel()
|
||||
CAF_PDM_InitFieldNoDefault( &m_anchorPositionForUi, "AnchorPositionForUi", "Anchor Position" );
|
||||
m_anchorPositionForUi.registerGetMethod( this, &RimStimPlanModel::anchorPositionForUi );
|
||||
m_anchorPositionForUi.uiCapability()->setUiReadOnly( true );
|
||||
m_anchorPositionForUi.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitScriptableFieldNoDefault( &m_thicknessDirection, "ThicknessDirection", "Thickness Direction" );
|
||||
m_thicknessDirection.uiCapability()->setUiReadOnly( true );
|
||||
|
||||
@@ -247,7 +247,6 @@ RimEnsembleCurveSet::RimEnsembleCurveSet()
|
||||
CAF_PDM_InitFieldNoDefault( &m_autoGeneratedName, "AutoGeneratedName", "Curve Set Name" );
|
||||
m_autoGeneratedName.registerGetMethod( this, &RimEnsembleCurveSet::createAutoName );
|
||||
m_autoGeneratedName.uiCapability()->setUiReadOnly( true );
|
||||
m_autoGeneratedName.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_isUsingAutoName, "AutoName", true, "Auto Name" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_summaryAddressNameTools, "SummaryAddressNameTools", "SummaryAddressNameTools" );
|
||||
|
||||
@@ -107,7 +107,6 @@ RimSummaryEnsemble::RimSummaryEnsemble()
|
||||
m_ensembleDescription.registerGetMethod( this, &RimSummaryEnsemble::ensembleDescription );
|
||||
m_ensembleDescription.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP );
|
||||
m_ensembleDescription.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() );
|
||||
m_ensembleDescription.xmlCapability()->disableIO();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -72,7 +72,6 @@ RimSurface::RimSurface()
|
||||
m_nameProxy.registerGetMethod( this, &RimSurface::fullName );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
setDeletable( true );
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ RimSurfaceInViewCollection::RimSurfaceInViewCollection()
|
||||
CAF_PDM_InitFieldNoDefault( &m_collectionName, "CollectionName", "Name" );
|
||||
m_collectionName.registerGetMethod( this, &RimSurfaceInViewCollection::name );
|
||||
m_collectionName.uiCapability()->setUiReadOnly( true );
|
||||
m_collectionName.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_collectionsInView, "SurfacesInViewFieldCollections", "SurfacesInViewFieldCollections" );
|
||||
|
||||
|
||||
@@ -125,7 +125,6 @@ RimEnsembleWellLogCurveSet::RimEnsembleWellLogCurveSet()
|
||||
CAF_PDM_InitFieldNoDefault( &m_autoGeneratedName, "AutoGeneratedName", "Curve Set Name" );
|
||||
m_autoGeneratedName.registerGetMethod( this, &RimEnsembleWellLogCurveSet::createAutoName );
|
||||
m_autoGeneratedName.uiCapability()->setUiReadOnly( true );
|
||||
m_autoGeneratedName.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_isUsingAutoName, "AutoName", true, "Auto Name" );
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ RimWellIASettings::RimWellIASettings()
|
||||
m_nameProxy.registerGetMethod( this, &RimWellIASettings::fullName );
|
||||
m_nameProxy.uiCapability()->setUiReadOnly( true );
|
||||
m_nameProxy.uiCapability()->setUiHidden( true );
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitField( &m_showBox, "showBox", false, "Show model box" );
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "cafInternalPdmXmlFieldReaderWriter.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
#include "cafPdmXmlFieldHandle.h"
|
||||
|
||||
#include <typeinfo>
|
||||
@@ -195,6 +196,41 @@ private:
|
||||
FieldType* m_field;
|
||||
};
|
||||
|
||||
template <typename DataType>
|
||||
class PdmFieldXmlCap<PdmProxyValueField<DataType>> : public PdmXmlFieldHandle
|
||||
{
|
||||
typedef PdmProxyValueField<DataType> FieldType;
|
||||
|
||||
public:
|
||||
PdmFieldXmlCap( FieldType* field, bool giveOwnership )
|
||||
: PdmXmlFieldHandle( field, giveOwnership )
|
||||
{
|
||||
m_field = field;
|
||||
m_dataTypeName = QString( "%1" ).arg( typeid( DataType ).name() );
|
||||
|
||||
// Proxy fields should not be serialized by default
|
||||
// If needed, this can be overridden by the user by enabling IO on the field:
|
||||
//
|
||||
// m_proxyDoubleField.xmlCapability()->setIOWritable( true );
|
||||
// m_proxyDoubleField.xmlCapability()->setIOReadable( true );
|
||||
|
||||
disableIO();
|
||||
}
|
||||
|
||||
// Xml Serializing
|
||||
public:
|
||||
std::vector<QString> readFieldData( QXmlStreamReader& xmlStream,
|
||||
PdmObjectFactory* objectFactory,
|
||||
const std::vector<caf::PdmDeprecation>& deprecations = {} ) override;
|
||||
void writeFieldData( QXmlStreamWriter& xmlStream ) const override;
|
||||
bool resolveReferences() override;
|
||||
|
||||
bool isVectorField() const override;
|
||||
|
||||
private:
|
||||
FieldType* m_field;
|
||||
};
|
||||
|
||||
template <typename FieldType>
|
||||
void addXmlCapabilityToField( FieldType* field )
|
||||
{
|
||||
|
||||
@@ -533,4 +533,53 @@ bool caf::PdmFieldXmlCap<caf::PdmField<std::vector<DataType>>>::resolveReference
|
||||
return true;
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
/// XML Implementation for PdmFieldXmlCap<PdmProxyValueField<>> methods
|
||||
///
|
||||
//==================================================================================================
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template <typename DataType>
|
||||
bool caf::PdmFieldXmlCap<caf::PdmProxyValueField<DataType>>::isVectorField() const
|
||||
{
|
||||
return m_field->isStreamingField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template <typename DataType>
|
||||
std::vector<QString>
|
||||
caf::PdmFieldXmlCap<caf::PdmProxyValueField<DataType>>::readFieldData( QXmlStreamReader& xmlStream,
|
||||
PdmObjectFactory*,
|
||||
const std::vector<caf::PdmDeprecation>& )
|
||||
{
|
||||
this->assertValid();
|
||||
DataType value;
|
||||
PdmFieldReader<DataType>::readFieldData( value, xmlStream, m_field );
|
||||
m_field->setValue( value );
|
||||
return {};
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template <typename DataType>
|
||||
void caf::PdmFieldXmlCap<caf::PdmProxyValueField<DataType>>::writeFieldData( QXmlStreamWriter& xmlStream ) const
|
||||
{
|
||||
this->assertValid();
|
||||
PdmFieldWriter<DataType>::writeFieldData( m_field->value(), xmlStream );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template <typename DataType>
|
||||
bool caf::PdmFieldXmlCap<caf::PdmProxyValueField<DataType>>::resolveReferences()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} // End namespace caf
|
||||
@@ -37,6 +37,8 @@ public:
|
||||
CAF_PDM_XML_InitField( &m_proxyDoubleField, "BigNumber" );
|
||||
m_proxyDoubleField.registerSetMethod( this, &DemoPdmObject::setDoubleMember );
|
||||
m_proxyDoubleField.registerGetMethod( this, &DemoPdmObject::doubleMember );
|
||||
m_proxyDoubleField.xmlCapability()->setIOWritable( true );
|
||||
m_proxyDoubleField.xmlCapability()->setIOReadable( true );
|
||||
|
||||
CAF_PDM_XML_InitField( &m_proxyEnumField, "AppEnum" );
|
||||
m_proxyEnumField.registerSetMethod( this, &DemoPdmObject::setEnumMember );
|
||||
@@ -587,3 +589,20 @@ TEST( BaseTest, XmlImportClamping )
|
||||
EXPECT_DOUBLE_EQ( -123.456, obj->m_unclampedField() );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Test that proxy fields have IO disabled by default
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST( BaseTest, ProxyFieldIODisabled )
|
||||
{
|
||||
// Test with SimpleObj which has default proxy field IO behavior (disabled)
|
||||
auto simpleObj = std::make_unique<SimpleObj>();
|
||||
EXPECT_FALSE( simpleObj->m_proxyDouble.xmlCapability()->isIOReadable() );
|
||||
EXPECT_FALSE( simpleObj->m_proxyDouble.xmlCapability()->isIOWritable() );
|
||||
|
||||
// Regular fields should still have IO enabled
|
||||
EXPECT_TRUE( simpleObj->m_position.xmlCapability()->isIOReadable() );
|
||||
EXPECT_TRUE( simpleObj->m_position.xmlCapability()->isIOWritable() );
|
||||
|
||||
// Note: DemoPdmObject explicitly enables IO for its proxy field for the ChildArrayFieldSerializing test
|
||||
}
|
||||
@@ -75,6 +75,9 @@ public:
|
||||
addUiCapabilityToField( &m_proxyDouble );
|
||||
addXmlCapabilityToField( &m_proxyDouble );
|
||||
CAF_PDM_InitFieldNoDefault( &m_proxyDouble, "ProxyDouble", "ProxyDouble" );
|
||||
m_proxyDouble.xmlCapability()->setIOWritable( true );
|
||||
m_proxyDouble.xmlCapability()->setIOReadable( true );
|
||||
m_proxyDouble.xmlCapability()->setCopyable( true );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user