ValueTree CtrlrMIDILibrary::scanChildrenForMenuIndex(ValueTree item, int itemIndexToFind, int ¤tIndex) { _DBG("CtrlrMIDILibrary::scanChildrenForMenuIndex"); if (isContainer (item)) { _DBG("\tcontainer ["+item.getType().toString()+"]"); ValueTree child; for (int topLevelIndex=0; topLevelIndex<item.getNumChildren(); topLevelIndex++) { child = scanChildrenForMenuIndex (item.getChild(topLevelIndex), itemIndexToFind, currentIndex); if (child.isValid()) { _DBG("\t\tvalid child found ["+child.getType().toString()+"] parent:["+child.getParent().getType().toString()+"]"); return (child); } currentIndex++; } } if (itemIndexToFind == currentIndex) { _DBG("\t\titemIndexToFind == currentIndex ["+item.getType().toString()+"]"); return (item); } else { return (ValueTree()); } }
static void updateComponent (ComponentBuilder& builder, const ValueTree& state) { if (Component* topLevelComp = builder.getManagedComponent()) { ComponentBuilder::TypeHandler* const type = builder.getHandlerForState (state); const String uid (getStateId (state)); if (type == nullptr || uid.isEmpty()) { // ..handle the case where a child of the actual state node has changed. if (state.getParent().isValid()) updateComponent (builder, state.getParent()); } else { if (Component* const changedComp = findComponentWithID (*topLevelComp, uid)) type->updateComponentFromState (changedComp, state); } } }
static void getValueTreePath (ValueTree v, const ValueTree& topLevelTree, Array<int>& path) { while (v != topLevelTree) { ValueTree parent (v.getParent()); if (! parent.isValid()) break; path.add (parent.indexOf (v)); v = parent; } }
void CtrlrLuaMethodEditor::itemDropped (ValueTree &targetItem, const DragAndDropTarget::SourceDetails &dragSourceDetails, int insertIndex) { if ( (targetItem.hasType(Ids::luaMethodGroup) || targetItem.hasType(Ids::luaManagerMethods)) && insertIndex == 0 ) { StringArray ar; ar.addTokens (dragSourceDetails.description.toString(), ";", "\"'"); for (int i=0; i<ar.size(); i++) { CtrlrValueTreeEditorItem *sourceItem = dynamic_cast<CtrlrValueTreeEditorItem*>(methodTree->findItemFromIdentifierString (ar[i])); if (sourceItem != nullptr) { ValueTree child = sourceItem->getTree(); ValueTree parent = child.getParent(); parent.removeChild (child, nullptr); targetItem.addChild (child, -1, nullptr); } } triggerAsyncUpdate(); } }
void ZenAudioProcessorValueTreeState::valueTreePropertyChanged(ValueTree& tree, const Identifier& prop) { if (prop == idPropertyID && tree.hasType(valueType) && tree.getParent() == state) updateParameterConnectionsToChildTrees(); }
//============================================================================== void AnalysisModel::removeAnalysis(ValueTree analysisTree) { ValueTree mainTree = analysisTree.getParent(); mainTree.removeChild(analysisTree, nullptr); }