nodeparamtable: bare bones table view for node inputs

This commit is contained in:
itsmattkc
2020-06-17 17:48:07 +10:00
parent 29d56a1583
commit a871c5081b
24 changed files with 620 additions and 91 deletions
+52 -33
View File
@@ -185,6 +185,58 @@ NodeEdgePtr NodeParam::DisconnectForNewOutput(NodeInput *input)
return nullptr;
}
QString NodeParam::GetPrettyDataTypeName(const NodeParam::DataType &type)
{
switch (type) {
case kNone:
return tr("None");
case kInt:
case kCombo:
return tr("Integer");
case kFloat:
return tr("Float");
case kRational:
return tr("Rational");
case kBoolean:
return tr("Boolean");
case kColor:
return tr("Color");
case kMatrix:
return tr("Matrix");
case kText:
return tr("Text");
case kFont:
return tr("Font");
case kFile:
return tr("File");
case kTexture:
return tr("Texture");
case kSamples:
return tr("Samples");
case kFootage:
return tr("Footage");
case kVec2:
return tr("Vector 2D");
case kVec3:
return tr("Vector 3D");
case kVec4:
return tr("Vector 4D");
case kDecimal:
case kNumber:
case kString:
case kBuffer:
case kVector:
case kShaderJob:
case kSampleJob:
case kGenerateJob:
case kAny:
break;
}
return tr("Unknown");
}
QByteArray NodeParam::ValueToBytes(const NodeParam::DataType &type, const QVariant &value)
{
switch (type) {
@@ -222,39 +274,6 @@ QByteArray NodeParam::ValueToBytes(const NodeParam::DataType &type, const QVaria
return QByteArray();
}
NodeParam::DataType NodeParam::StringToDataType(const QString &s)
{
QString type_id = s.toLower();
if (type_id == QStringLiteral("float")) {
return kFloat;
} else if (type_id == QStringLiteral("int")) {
return kInt;
} else if (type_id == QStringLiteral("rational")) {
return kRational;
} else if (type_id == QStringLiteral("bool")) {
return kBoolean;
} else if (type_id == QStringLiteral("color")) {
return kColor;
} else if (type_id == QStringLiteral("matrix")) {
return kMatrix;
} else if (type_id == QStringLiteral("text")) {
return kText;
} else if (type_id == QStringLiteral("texture")) {
return kTexture;
} else if (type_id == QStringLiteral("vec2")) {
return kVec2;
} else if (type_id == QStringLiteral("vec3")) {
return kVec3;
} else if (type_id == QStringLiteral("vec4")) {
return kVec4;
} else if (type_id == QStringLiteral("combo")) {
return kCombo;
}
return kAny;
}
template<typename T>
QByteArray NodeParam::ValueToBytesInternal(const QVariant &v)
{
+1 -6
View File
@@ -378,18 +378,13 @@ public:
/**
* @brief Get a human-readable translated name for a certain data type
*/
static QString GetDefaultDataTypeName(const DataType &type);
static QString GetPrettyDataTypeName(const DataType &type);
/**
* @brief Convert a value from a NodeParam into bytes
*/
static QByteArray ValueToBytes(const DataType &type, const QVariant& value);
/**
* @brief Convert a string to a data type
*/
static DataType StringToDataType(const QString& s);
signals:
/**
* @brief Signal emitted when an edge is added to this parameter
-15
View File
@@ -61,26 +61,11 @@ NodeValue::NodeValue(const NodeParam::DataType &type, const QVariant &data, cons
{
}
const NodeParam::DataType &NodeValue::type() const
{
return type_;
}
const QString &NodeValue::tag() const
{
return tag_;
}
bool NodeValue::operator==(const NodeValue &rhs) const
{
return type_ == rhs.type_ && tag_ == rhs.tag_ && data_ == rhs.data_;
}
const QVariant &NodeValue::data() const
{
return data_;
}
QVariant NodeValueTable::Get(const NodeParam::DataType &type, const QString &tag) const
{
return GetWithMeta(type, tag).data();
+29 -3
View File
@@ -33,9 +33,25 @@ public:
NodeValue();
NodeValue(const NodeParam::DataType& type, const QVariant& data, const Node* from, const QString& tag = QString());
const NodeParam::DataType& type() const;
const QVariant& data() const;
const QString& tag() const;
const NodeParam::DataType& type() const
{
return type_;
}
const QVariant& data() const
{
return data_;
}
const QString& tag() const
{
return tag_;
}
const Node* source() const
{
return from_;
}
bool operator==(const NodeValue& rhs) const;
@@ -90,6 +106,16 @@ public:
NodeValueTable Merge() const;
using const_iterator = QHash<QString, NodeValueTable>::const_iterator;
inline QHash<QString, NodeValueTable>::const_iterator begin() const {
return tables_.cbegin();
}
inline QHash<QString, NodeValueTable>::const_iterator end() const {
return tables_.cend();
}
private:
QHash<QString, NodeValueTable> tables_;