various: enabled config saving

This commit is contained in:
itsmattkc
2020-08-08 02:44:39 +10:00
parent 99d94a0d82
commit edeeed49ba
14 changed files with 149 additions and 88 deletions
+55 -17
View File
@@ -327,17 +327,46 @@ void NodeInput::SetDefaultValue(const QVector<QVariant> &default_value)
QString NodeInput::ValueToString(const QVariant &value) const
{
return ValueToString(data_type_, value);
return ValueToString(data_type_, value, true);
}
QString NodeInput::ValueToString(const DataType& data_type, const QVariant &value)
QString NodeInput::ValueToString(const DataType& data_type, const QVariant &value, bool value_is_a_key_track)
{
switch (data_type) {
case kRational:
if (!value_is_a_key_track && data_type == kVec2) {
QVector2D vec = value.value<QVector2D>();
return QStringLiteral("%1:%2").arg(QString::number(vec.x()),
QString::number(vec.y()));
} else if (!value_is_a_key_track && data_type == kVec3) {
QVector3D vec = value.value<QVector3D>();
return QStringLiteral("%1:%2:%3").arg(QString::number(vec.x()),
QString::number(vec.y()),
QString::number(vec.z()));
} else if (!value_is_a_key_track && data_type == kVec4) {
QVector4D vec = value.value<QVector4D>();
return QStringLiteral("%1:%2:%3:%4").arg(QString::number(vec.x()),
QString::number(vec.y()),
QString::number(vec.z()),
QString::number(vec.w()));
} else if (!value_is_a_key_track && data_type == kColor) {
Color c = value.value<Color>();
return QStringLiteral("%1:%2:%3:%4").arg(QString::number(c.red()),
QString::number(c.green()),
QString::number(c.blue()),
QString::number(c.alpha()));
} else if (data_type == kRational) {
return value.value<rational>().toString();
case kFootage:
} else if (data_type == kFootage) {
return QString::number(reinterpret_cast<quintptr>(value.value<StreamPtr>().get()));
default:
} else if (data_type == kTexture
|| data_type == kSamples
|| data_type == kBuffer) {
// These data types need no XML representation
return QString();
} else {
if (value.canConvert<QString>()) {
return value.toString();
}
@@ -346,22 +375,31 @@ QString NodeInput::ValueToString(const DataType& data_type, const QVariant &valu
qWarning() << "Failed to convert type" << ToHex(data_type) << "to string";
}
/* fall through */
// These data types need no XML representation
case kTexture:
case kSamples:
case kBuffer:
return QString();
}
}
QVariant NodeInput::StringToValue(const DataType& data_type, const QString &string)
QVariant NodeInput::StringToValue(const DataType& data_type, const QString &string, bool value_is_a_key_track)
{
switch (data_type) {
case kRational:
if (!value_is_a_key_track && data_type == kVec2) {
QStringList vals = string.split(':');
return QVector2D(vals.at(0).toFloat(), vals.at(1).toFloat());
} else if (!value_is_a_key_track && data_type == kVec3) {
QStringList vals = string.split(':');
return QVector3D(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat());
} else if (!value_is_a_key_track && data_type == kVec4) {
QStringList vals = string.split(':');
return QVector4D(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat(), vals.at(3).toFloat());
} else if (!value_is_a_key_track && data_type == kColor) {
QStringList vals = string.split(':');
return QVariant::fromValue(Color(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat(), vals.at(3).toFloat()));
} else if (data_type == kRational) {
return QVariant::fromValue(rational::fromString(string));
default:
} else {
return string;
}
}
@@ -429,7 +467,7 @@ QVariant NodeInput::StringToValue(const QString &string, QList<XMLNodeData::Foot
footage_connections.append({this, string.toULongLong()});
}
return StringToValue(data_type_, string);
return StringToValue(data_type_, string, true);
}
NodeOutput *NodeInput::get_connected_output() const