some PIValueTree changes, fix PIVariantTypes::Enum::fromString
This commit is contained in:
@@ -31,22 +31,22 @@
|
||||
//!
|
||||
|
||||
// clang-format off
|
||||
const char PIValueTree::attributeHidden [] = "hidden" ;
|
||||
const char PIValueTree::attributeReadOnly [] = "readOnly" ;
|
||||
const char PIValueTree::attributeIsLabel [] = "label" ;
|
||||
const char PIValueTree::Attribute::hidden [] = "hidden" ;
|
||||
const char PIValueTree::Attribute::readOnly [] = "readOnly" ;
|
||||
const char PIValueTree::Attribute::isLabel [] = "label" ;
|
||||
|
||||
const char PIValueTree::attributeArrayType [] = "arrayType" ;
|
||||
const char PIValueTree::attributeArrayMinCount[] = "arrayMinCount";
|
||||
const char PIValueTree::attributeArrayMaxCount[] = "arrayMaxCount";
|
||||
const char PIValueTree::attributeArrayReorder [] = "arrayReorder" ;
|
||||
const char PIValueTree::attributeArrayResize [] = "arrayResize" ;
|
||||
const char PIValueTree::Attribute::arrayType [] = "arrayType" ;
|
||||
const char PIValueTree::Attribute::arrayMinCount[] = "arrayMinCount";
|
||||
const char PIValueTree::Attribute::arrayMaxCount[] = "arrayMaxCount";
|
||||
const char PIValueTree::Attribute::arrayReorder [] = "arrayReorder" ;
|
||||
const char PIValueTree::Attribute::arrayResize [] = "arrayResize" ;
|
||||
|
||||
const char PIValueTree::attributeMinimum [] = "minimum" ;
|
||||
const char PIValueTree::attributeMaximum [] = "maximum" ;
|
||||
const char PIValueTree::attributeSingleStep [] = "singleStep" ;
|
||||
const char PIValueTree::attributeDecimals [] = "decimals" ;
|
||||
const char PIValueTree::attributePrefix [] = "prefix" ;
|
||||
const char PIValueTree::attributeSuffix [] = "suffix" ;
|
||||
const char PIValueTree::Attribute::minimum [] = "minimum" ;
|
||||
const char PIValueTree::Attribute::maximum [] = "maximum" ;
|
||||
const char PIValueTree::Attribute::singleStep [] = "singleStep" ;
|
||||
const char PIValueTree::Attribute::decimals [] = "decimals" ;
|
||||
const char PIValueTree::Attribute::prefix [] = "prefix" ;
|
||||
const char PIValueTree::Attribute::suffix [] = "suffix" ;
|
||||
// clang-format on
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ void PIValueTree::mergeAttributes(const PIVariantMap & a) {
|
||||
if (_is_null) return;
|
||||
auto it = a.makeIterator();
|
||||
while (it.next()) {
|
||||
if (!_attributes.contains(it.key())) _attributes.insert(it.key(), it.value());
|
||||
_attributes[it.key()] = it.value();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,29 +39,31 @@ public:
|
||||
PIValueTree(const PIVariant & v);
|
||||
PIValueTree(const PIString & n, const PIVariant & v, const PIVariantMap & a = PIVariantMap());
|
||||
|
||||
// clang-format off
|
||||
static const char attributeHidden [];
|
||||
static const char attributeReadOnly [];
|
||||
static const char attributeIsLabel [];
|
||||
struct PIP_EXPORT Attribute {
|
||||
// clang-format off
|
||||
static const char hidden [];
|
||||
static const char readOnly [];
|
||||
static const char isLabel [];
|
||||
|
||||
static const char attributeArrayType [];
|
||||
static const char attributeArrayMinCount[];
|
||||
static const char attributeArrayMaxCount[];
|
||||
static const char attributeArrayReorder [];
|
||||
static const char attributeArrayResize [];
|
||||
static const char arrayType [];
|
||||
static const char arrayMinCount[];
|
||||
static const char arrayMaxCount[];
|
||||
static const char arrayReorder [];
|
||||
static const char arrayResize [];
|
||||
|
||||
static const char attributeMinimum [];
|
||||
static const char attributeMaximum [];
|
||||
static const char attributeSingleStep [];
|
||||
static const char attributeDecimals [];
|
||||
static const char attributePrefix [];
|
||||
static const char attributeSuffix [];
|
||||
//static constexpr char attribute[] = "";
|
||||
// clang-format on
|
||||
static const char minimum [];
|
||||
static const char maximum [];
|
||||
static const char singleStep [];
|
||||
static const char decimals [];
|
||||
static const char prefix [];
|
||||
static const char suffix [];
|
||||
//static constexpr char attribute[] = "";
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
bool isNull() const { return _is_null; }
|
||||
bool isValid() const { return _value.isValid(); }
|
||||
bool isArray() const { return _attributes.contains(attributeArrayType); }
|
||||
bool isArray() const { return _attributes.contains(Attribute::arrayType); }
|
||||
bool hasChildren() const { return _children.isNotEmpty(); }
|
||||
|
||||
const PIString & name() const { return _name; }
|
||||
|
||||
@@ -145,7 +145,8 @@ PIVariantTypes::Enum & PIVariantTypes::Enum::operator<<(const PIVariantTypes::En
|
||||
PIString PIVariantTypes::Enum::toString() {
|
||||
static PIString masks = "\"";
|
||||
PIString ret;
|
||||
ret += "\"" + enum_name.masked(masks) + "\":(";
|
||||
if (enum_name.isNotEmpty()) ret += "\"" + enum_name.masked(masks) + "\":";
|
||||
ret += "(";
|
||||
bool comma = false;
|
||||
for (const auto & i: enum_list) {
|
||||
if (comma) ret += ';';
|
||||
@@ -161,20 +162,27 @@ PIString PIVariantTypes::Enum::toString() {
|
||||
PIVariantTypes::Enum PIVariantTypes::Enum::fromString(PIString str) {
|
||||
static PIString masks = "\"";
|
||||
Enum ret;
|
||||
if (str.size() < 3) return ret;
|
||||
ret.enum_name = str.takeRange('"', '"').unmask(masks);
|
||||
str.trim();
|
||||
if (str.startsWith(":")) str.cutLeft(1).trim();
|
||||
if (str.size() < 3) return ret;
|
||||
if (!str.startsWith("(")) {
|
||||
ret.enum_name = str.takeRange('"', '"').unmask(masks);
|
||||
str.trim();
|
||||
if (str.startsWith(":")) str.cutLeft(1).trim();
|
||||
}
|
||||
PIString el = str.takeRange('(', ')');
|
||||
int ps = el.size_s();
|
||||
while (el.isNotEmpty()) {
|
||||
Enumerator e;
|
||||
e.name = el.takeRange('"', '"').unmask(masks);
|
||||
if (e.name.isEmpty()) break;
|
||||
el.trim();
|
||||
if (el.startsWith(":")) el.cutLeft(1).trim();
|
||||
e.value = el.takeInteger().toInt();
|
||||
el.trim();
|
||||
if (el.startsWith(";")) el.cutLeft(1).trim();
|
||||
ret.enum_list << e;
|
||||
if (ps == el.size_s()) break;
|
||||
ps = el.size_s();
|
||||
}
|
||||
str.trim();
|
||||
if (str.startsWith(":")) str.cutLeft(1).trim();
|
||||
|
||||
Reference in New Issue
Block a user