But what if i want to replace the data with a new data (maybe if the user chooses a preset)
data = presetData
The problem is, that toggleButton still referring to the old “data” ValueTree. To make this work again i have to “re-bind” the data, which is not very elegant.
And here comes my suggestion, it would be extraordinary cool if ValueTree has a method, which just copies the information from one ValueTree to another, complete recursive, without out touching the references.
So instead
data = presetData
we do
data.copyDataFrom(presetData)
in this case, all bindings will persist.
Is there such a function or wouldn’t it be nice to have this functionality?
It has a copyPropertiesFrom() method, but when I looked into doing a recursive function like you’re suggesting for the entire trees, I hit all kinds of nasty edge-cases involving listeners, so decided to deliberately not provide such a method.
Thanks for your opinion, but what would you think is best practice, to handle this, without loosing the comfort of data binding.
Sure I could do it all manual, implement a listener to follow the changes, or make a special accessor class for the valueTree, but than its complicated again.
Well if you’ve got listeners then you just have to have a way of re-creating/re-binding your listeners when the tree changes. That’s not a big deal to do, because you’ll need to have written something that does the initial creation/binding of GUI elements to a tree when you load a new one from storage. So just call that same setup routine if you swap out the whole tree for a new one.