diff --git a/src/App/PropertyContainer.cpp b/src/App/PropertyContainer.cpp
index bc89e5a9b..07a59b135 100644
--- a/src/App/PropertyContainer.cpp
+++ b/src/App/PropertyContainer.cpp
@@ -103,6 +103,16 @@ short PropertyContainer::getPropertyType(const char *name) const
return getPropertyData().getType(this,name);
}
+void PropertyContainer::setPropertyType(const Property* prop, short attr)
+{
+ getPropertyData().setType(this,prop,attr);
+}
+
+void PropertyContainer::setPropertyType(const char *name, short attr)
+{
+ getPropertyData().setType(this,name,attr);
+}
+
const char* PropertyContainer::getPropertyGroup(const Property* prop) const
{
return getPropertyData().getGroup(this,prop);
@@ -359,6 +369,22 @@ short PropertyData::getType(const PropertyContainer *container,const char* name)
return 0;
}
+void PropertyData::setType(const PropertyContainer *container,const Property* prop, short attr) const
+{
+ const PropertyData::PropertySpec* Spec = findProperty(container,prop);
+
+ if (Spec)
+ const_cast< PropertyData::PropertySpec*>(Spec)->Type = attr;
+}
+
+void PropertyData::setType(const PropertyContainer *container,const char* name, short attr) const
+{
+ const PropertyData::PropertySpec* Spec = findProperty(container,name);
+
+ if (Spec)
+ const_cast< PropertyData::PropertySpec*>(Spec)->Type = attr;
+}
+
const char* PropertyData::getGroup(const PropertyContainer *container,const Property* prop) const
{
const PropertyData::PropertySpec* Spec = findProperty(container,prop);
diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h
index e81ba1de5..88419ce3e 100644
--- a/src/App/PropertyContainer.h
+++ b/src/App/PropertyContainer.h
@@ -70,6 +70,8 @@ struct AppExport PropertyData
short getType (const PropertyContainer *container,const char* name) const;
const char* getGroup (const PropertyContainer *container,const char* name) const;
const char* getGroup (const PropertyContainer *container,const Property* prop) const;
+ void setType (const PropertyContainer *container,const Property* prop, short) const;
+ void setType (const PropertyContainer *container,const char* name, short) const;
const char* getDocumentation(const PropertyContainer *container,const char* name) const;
const char* getDocumentation(const PropertyContainer *container,const Property* prop) const;
@@ -116,6 +118,10 @@ public:
virtual short getPropertyType(const Property* prop) const;
/// get the Type of a named Property
virtual short getPropertyType(const char *name) const;
+ /// set the Type of a Property
+ virtual void setPropertyType(const Property* prop, short);
+ /// set the Type of a named Property
+ virtual void setPropertyType(const char *name, short);
/// get the Group of a Property
virtual const char* getPropertyGroup(const Property* prop) const;
/// get the Group of a named Property
@@ -218,7 +224,7 @@ void _class_::init(void){\
initSubclass(_class_::classTypeId, #_class_ , #_parentclass_, &(_class_::create) ); \
_class_::propertyData.parentPropertyData = _parentclass_::getPropertyDataPtr();\
}
-
+
#define TYPESYSTEM_SOURCE_TEMPLATE(_class_) \
template<> Base::Type _class_::getClassTypeId(void) { return _class_::classTypeId; } \
template<> Base::Type _class_::getTypeId(void) const { return _class_::classTypeId; } \
@@ -226,7 +232,7 @@ template<> Base::Type _class_::classTypeId = Base::Type::badType(); \
template<> void * _class_::create(void){\
return new _class_ ();\
}
-
+
#define PROPERTY_SOURCE_TEMPLATE(_class_, _parentclass_) \
TYPESYSTEM_SOURCE_TEMPLATE(_class_);\
template<> const App::PropertyData * _class_::getPropertyDataPtr(void){return &propertyData;} \
diff --git a/src/App/PropertyContainerPy.xml b/src/App/PropertyContainerPy.xml
index 594ed4eb0..d982ab6dc 100644
--- a/src/App/PropertyContainerPy.xml
+++ b/src/App/PropertyContainerPy.xml
@@ -23,7 +23,12 @@
Return the type of a named property. This can be (Hidden,ReadOnly,Output) or any combination.
-
+
+
+ Set the type of a named property. This can be (Hidden,ReadOnly,Output) or any combination.
+
+
+
Return the name of the group which the property belongs to in this class. The properties sorted in differnt named groups for convenience.
@@ -41,4 +46,4 @@
-
+
diff --git a/src/App/PropertyContainerPyImp.cpp b/src/App/PropertyContainerPyImp.cpp
index f8816efa6..9499bccc7 100644
--- a/src/App/PropertyContainerPyImp.cpp
+++ b/src/App/PropertyContainerPyImp.cpp
@@ -78,6 +78,17 @@ PyObject* PropertyContainerPy::getTypeOfProperty(PyObject *args)
return Py::new_reference_to(ret);
}
+PyObject* PropertyContainerPy::setTypeOfProperty(PyObject *args)
+{
+ char* name;
+ short type;
+ if (!PyArg_ParseTuple(args, "sh", &name, &type)) // convert args: Python->C
+ return NULL; // NULL triggers exception
+
+ getPropertyContainerPtr()->setPropertyType(name, type);
+ Py_Return;
+}
+
PyObject* PropertyContainerPy::getGroupOfProperty(PyObject *args)
{
char *pstr;