Example #1
0
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());
		}
	}
}