#6320 Refactor of PdmScripting

* Make base class abstract
* Implement support for IOHandling for PdmChild and PdmChildArray fields
This commit is contained in:
Gaute Lindkvist
2020-08-21 11:13:07 +02:00
parent 2ec5f83dad
commit f82b2f73ec
107 changed files with 1492 additions and 1113 deletions

View File

@@ -33,9 +33,9 @@
// for more details.
//
//##################################################################################################
#include "cafPdmObjectScriptability.h"
#include "cafPdmObjectScriptingCapability.h"
#include "cafPdmFieldScriptability.h"
#include "cafPdmAbstractFieldScriptingCapability.h"
#include "cafPdmObject.h"
#include "cafPdmObjectHandle.h"
#include "cafPdmScriptIOMessages.h"
@@ -48,7 +48,7 @@ using namespace caf;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmObjectScriptability::PdmObjectScriptability( PdmObjectHandle* owner, bool giveOwnership )
PdmObjectScriptingCapability::PdmObjectScriptingCapability( PdmObjectHandle* owner, bool giveOwnership )
: m_owner( owner )
{
m_owner->addCapability( this, giveOwnership );
@@ -57,16 +57,16 @@ PdmObjectScriptability::PdmObjectScriptability( PdmObjectHandle* owner, bool giv
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmObjectScriptability::~PdmObjectScriptability()
PdmObjectScriptingCapability::~PdmObjectScriptingCapability()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmObjectScriptability::readFields( QTextStream& inputStream,
PdmObjectFactory* objectFactory,
PdmScriptIOMessages* errorMessageContainer )
void PdmObjectScriptingCapability::readFields( QTextStream& inputStream,
PdmObjectFactory* objectFactory,
PdmScriptIOMessages* errorMessageContainer )
{
std::set<QString> readFields;
bool isLastArgumentRead = false;
@@ -147,10 +147,12 @@ void PdmObjectScriptability::readFields( QTextStream& inputStream,
// Make field read its data
PdmFieldHandle* fieldHandle = m_owner->findField( keyword );
if ( fieldHandle && fieldHandle->xmlCapability() && fieldHandle->capability<PdmFieldScriptability>() )
if ( fieldHandle && fieldHandle->xmlCapability() &&
fieldHandle->capability<PdmAbstractFieldScriptingCapability>() )
{
PdmXmlFieldHandle* xmlFieldHandle = fieldHandle->xmlCapability();
PdmFieldScriptability* scriptability = fieldHandle->capability<PdmFieldScriptability>();
PdmXmlFieldHandle* xmlFieldHandle = fieldHandle->xmlCapability();
PdmAbstractFieldScriptingCapability* scriptability =
fieldHandle->capability<PdmAbstractFieldScriptingCapability>();
if ( xmlFieldHandle->isIOReadable() )
{
@@ -212,15 +214,16 @@ void PdmObjectScriptability::readFields( QTextStream& inputStream,
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmObjectScriptability::writeFields( QTextStream& outputStream ) const
void PdmObjectScriptingCapability::writeFields( QTextStream& outputStream ) const
{
std::vector<PdmFieldHandle*> fields;
m_owner->fields( fields );
int writtenFieldCount = 0;
for ( size_t it = 0; it < fields.size(); ++it )
{
const PdmXmlFieldHandle* xmlField = fields[it]->xmlCapability();
const PdmFieldScriptability* scriptability = fields[it]->capability<PdmFieldScriptability>();
const PdmXmlFieldHandle* xmlField = fields[it]->xmlCapability();
const PdmAbstractFieldScriptingCapability* scriptability =
fields[it]->capability<PdmAbstractFieldScriptingCapability>();
if ( scriptability && xmlField && xmlField->isIOWritable() )
{
QString keyword = xmlField->fieldHandle()->keyword();