int32 EditorConfig::GetPropertyValueType(const String &propertyName) { int32 type = VariantType::TYPE_NONE; PropertyDescription *propertyDescription = GetPropertyDescription(propertyName); if(propertyDescription) { type = GetValueTypeFromPropertyType(propertyDescription->type); } return type; }
void EditorConfig::AddPropertyEditor(PropertyList *propertyList, const String &propertyName, VariantType *propertyValue) { Map<String, PropertyDescription*>::iterator findIt = properties.find(propertyName); if(findIt != properties.end()) { PropertyDescription *propertyDescription = findIt->second; int32 propertyValueType = GetValueTypeFromPropertyType(propertyDescription->type); if(propertyValue->type == propertyValueType) { switch (propertyValue->type) { case VariantType::TYPE_BOOLEAN: { propertyList->AddBoolProperty(propertyName, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(propertyName, propertyValue->AsBool()); } break; case VariantType::TYPE_STRING: { propertyList->AddStringProperty(propertyName, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetStringPropertyValue(propertyName, propertyValue->AsString()); } break; case VariantType::TYPE_INT32: { if(propertyDescription->type == PT_COMBOBOX) { propertyList->AddComboProperty(propertyName, propertyDescription->comboValues, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetComboPropertyIndex(propertyName, propertyValue->AsInt32()); } else { propertyList->AddIntProperty(propertyName, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetIntPropertyValue(propertyName, propertyValue->AsInt32()); } } break; case VariantType::TYPE_FLOAT: { propertyList->AddFloatProperty(propertyName, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetFloatPropertyValue(propertyName, propertyValue->AsFloat()); } default: break; } } else { Logger::Error("EditorConfig::AddPropertyEditor ERROR: incorrect type %d property %s", propertyDescription->type, propertyName.c_str()); } } }