49 targetProperty (propertyID),
57 const var& defaultToUse)
59 targetProperty (propertyID),
61 defaultValue (defaultToUse)
74 targetProperty (propertyID),
76 defaultValue (defaultToUse),
77 delimiter (arrayDelimiter)
83 : targetTree (other.targetTree),
84 targetProperty (other.targetProperty),
85 undoManager (other.undoManager),
86 defaultValue (other.defaultValue),
87 delimiter (other.delimiter)
101 return delimitedStringToVarArray (targetTree[targetProperty].toString());
103 return targetTree[targetProperty];
115 if (defaultValue != newDefault)
117 defaultValue = newDefault;
150 if (
auto* array = newValue.
getArray())
151 targetTree.
setProperty (targetProperty, varArrayToDelimitedString (*array), undoManagerToUse);
153 targetTree.
setProperty (targetProperty, newValue, undoManagerToUse);
160 referToWithDefault (tree, property, um,
var(), {});
168 referToWithDefault (tree, property, um, defaultVal, {});
174 referToWithDefault (tree, property, um, defaultVal, arrayDelimiter);
190 referToWithDefault (other.targetTree, other.targetProperty, other.undoManager,
191 other.defaultValue, other.delimiter);
198 ValueTree targetTree;
199 Identifier targetProperty;
200 UndoManager* undoManager =
nullptr;
206 void referToWithDefault (
const ValueTree& v,
const Identifier& i, UndoManager* um,
207 const var& defaultVal, StringRef del)
212 defaultValue = defaultVal;
217 String varArrayToDelimitedString (
const Array<var>& input)
const noexcept
221 jassert (delimiter.isNotEmpty());
223 StringArray elements;
225 for (
auto& v : input)
226 elements.add (v.toString());
228 return elements.joinIntoString (delimiter);
231 Array<var> delimitedStringToVarArray (StringRef input)
const noexcept
static StringArray fromTokens(StringRef stringToTokenise, bool preserveQuotedStrings)
bool isNotEmpty() const noexcept
Value getPropertyAsValue(const Identifier &name, UndoManager *undoManager, bool shouldUpdateSynchronously=false)
ValueTree & setProperty(const Identifier &name, const var &newValue, UndoManager *undoManager)
void removeProperty(const Identifier &name, UndoManager *undoManager)
bool hasProperty(const Identifier &name) const noexcept
void resetToDefault() noexcept
ValueWithDefault(ValueTree &tree, const Identifier &propertyID, UndoManager *um, const var &defaultToUse)
Value getPropertyAsValue()
Identifier & getPropertyID() noexcept
ValueWithDefault(const ValueWithDefault &other)
bool isUsingDefault() const
void referTo(ValueTree &tree, const Identifier &property, UndoManager *um)
void setValue(const var &newValue, UndoManager *undoManagerToUse)
void setDefault(const var &newDefault)
std::function< void()> onDefaultChange
void referTo(ValueTree &tree, const Identifier &property, UndoManager *um, const var &defaultVal)
ValueWithDefault(ValueTree &tree, const Identifier &propertyID, UndoManager *um, const var &defaultToUse, StringRef arrayDelimiter)
ValueWithDefault & operator=(const var &newValue)
UndoManager * getUndoManager() noexcept
ValueWithDefault()=default
ValueWithDefault(ValueTree &tree, const Identifier &propertyID, UndoManager *um)
ValueTree & getValueTree() noexcept
Array< var > * getArray() const noexcept