Framework changes to prepare for ensemble file set

This commit is contained in:
Magne Sjaastad committed 2025-05-02 21:26:53 +02:00
1 parent 14ddd373d3
commit fc6d9fb38d
4 files changed
+24 -3

No files matched your search

@@ -139,6 +139,14 @@ QString PdmDocument::documentAsString()
return content; return content;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const caf::PdmFieldHandle* PdmDocument::fileNameHandle() const
{
return dynamic_cast<const caf::PdmFieldHandle*>( &m_fileName );
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -63,7 +63,8 @@ public:
static void updateUiIconStateRecursively( PdmObjectHandle* root ); static void updateUiIconStateRecursively( PdmObjectHandle* root );
protected: protected:
QString documentAsString(); QString documentAsString();
const PdmFieldHandle* fileNameHandle() const;
private: private:
void writeDocumentToXmlStream( QXmlStreamWriter& xmlStream ); void writeDocumentToXmlStream( QXmlStreamWriter& xmlStream );
@@ -136,8 +136,7 @@ void PdmXmlObjectHandle::readFields( QXmlStreamReader& xmlStream, PdmObjectFacto
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmXmlObjectHandle::writeFields( QXmlStreamWriter& xmlStream ) const void PdmXmlObjectHandle::writeFields( QXmlStreamWriter& xmlStream ) const
{ {
std::vector<PdmFieldHandle*> fields = m_owner->fields(); for ( const auto& fieldHandle : fieldsForExport() )
for ( const auto& fieldHandle : fields )
{ {
const PdmXmlFieldHandle* field = fieldHandle->xmlCapability(); const PdmXmlFieldHandle* field = fieldHandle->xmlCapability();
if ( field && field->isIOWritable() ) if ( field && field->isIOWritable() )
@@ -311,6 +310,16 @@ bool PdmXmlObjectHandle::isValidXmlElementName( const QString& name )
return true; return true;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> PdmXmlObjectHandle::fieldsForExport() const
{
if ( !m_owner ) return {};
return m_owner->fields();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -70,6 +70,9 @@ protected: // Virtual
/// Re-implement to make sure your fields have correct data before saving /// Re-implement to make sure your fields have correct data before saving
virtual void setupBeforeSave() {}; virtual void setupBeforeSave() {};
/// Override this method if you need to exclude or reorder fields for export to XML
[[nodiscard]] virtual std::vector<PdmFieldHandle*> fieldsForExport() const;
/// This method is intended to be used in macros to make compile time errors /// This method is intended to be used in macros to make compile time errors
// if user uses them on wrong type of objects // if user uses them on wrong type of objects
bool isInheritedFromPdmXmlSerializable() { return true; } bool isInheritedFromPdmXmlSerializable() { return true; }