#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

@@ -35,16 +35,17 @@
//##################################################################################################
#include "cafPdmPythonGenerator.h"
#include "cafPdmAbstractFieldScriptingCapability.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmFieldScriptability.h"
#include "cafPdmObject.h"
#include "cafPdmObjectFactory.h"
#include "cafPdmObjectMethod.h"
#include "cafPdmObjectScriptabilityRegister.h"
#include "cafPdmObjectScriptingCapabilityRegister.h"
#include "cafPdmProxyValueField.h"
#include "cafPdmXmlFieldHandle.h"
#include <QRegularExpression>
#include <QTextStream>
@@ -74,7 +75,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
CAF_ASSERT( object );
std::shared_ptr<PdmObject> sharedObject( object );
if ( PdmObjectScriptabilityRegister::isScriptable( sharedObject.get() ) )
if ( PdmObjectScriptingCapabilityRegister::isScriptable( sharedObject.get() ) )
{
dummyObjects.push_back( sharedObject );
}
@@ -100,8 +101,8 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
for ( auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it )
{
const QString& classKeyword = *it;
QString scriptClassComment = PdmObjectScriptabilityRegister::scriptClassComment( classKeyword );
const QString& classKeyword = *it;
QString scriptClassComment = PdmObjectScriptingCapabilityRegister::scriptClassComment( classKeyword );
std::map<QString, QString> attributesGenerated;
@@ -113,7 +114,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
object->fields( fields );
for ( auto field : fields )
{
auto scriptability = field->template capability<PdmFieldScriptability>();
auto scriptability = field->template capability<PdmAbstractFieldScriptingCapability>();
if ( scriptability != nullptr )
{
QString snake_field_name = camelToSnakeCase( scriptability->scriptFieldName() );
@@ -201,7 +202,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
{
QString dataType = PdmPythonGenerator::dataTypeString( field, false );
QString scriptDataType =
PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword( dataType );
PdmObjectScriptingCapabilityRegister::scriptClassNameFromClassKeyword( dataType );
QString commentDataType = field->xmlCapability()->isVectorField()
? QString( "List of %1" ).arg( scriptDataType )
@@ -262,7 +263,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
{
bool isList = field->xmlCapability()->isVectorField();
QString defaultValue = isList ? "[]" : "None";
auto scriptability = field->capability<PdmFieldScriptability>();
auto scriptability = field->capability<PdmAbstractFieldScriptingCapability>();
auto argumentName = camelToSnakeCase( scriptability->scriptFieldName() );
auto dataType = dataTypeString( field, false );
if ( isList ) dataType = "List of " + dataType;
@@ -303,7 +304,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
for ( auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it )
{
const QString& classKeyword = *it;
QString scriptClassName = PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword( classKeyword );
QString scriptClassName = PdmObjectScriptingCapabilityRegister::scriptClassNameFromClassKeyword( classKeyword );
if ( scriptClassName.isEmpty() ) scriptClassName = classKeyword;
if ( !classesWritten.count( scriptClassName ) )