% % save the settings and possibly new machine or program % wired( _\\ exact$ "same name" log)( wirex4( "New Program" eq$ "new prog" log)( not and { % % same name of node, intent is change or new program % newedits? "newedsame" log)( { % % new node of master or sub-tree, no changes % the tree update will not occur % } { % % change node of master or sub-tree % root? "rootnotnewsame" log)( { % % root of master or sub-tree % wirex( yml \!Body fork@)? "rootnotnewsamesub" log)( { % % root of machine sub-tree, change device values % wirex2( "x2 - " _\ & log)( dup !Device yml \!Device wirex4( "x4 - " _\ & log)( dup !DevType yml \!DevType } { % % root of machine master tree % } ifelse } { % % non-root of master or sub-tree % wirex( yml \!Body fork@)? "subnotrootnotnewsame" log)( { % % program node of machine sub-tree % wirex3( dup !Program yml \!Program wirex4( dup !DevType yml \!DevType \_ProgSrc !ProgSrc _ProgSrc "psrc" log)( _Program ".pgm" reextend ofpgm "pgm" log)( copyfile } { % % non-root of master tree % } ifelse } ifelse % % mark the tree as changed % *machdevi nod@ } ifelse } { % % not the same name of node, % or is new program, intent is new node or rename % newedits? { % % new node of master or sub-tree % use the root node as anchor % root\ % % add new child of anchor and select % fork@)? { % % new child of machine sub-tree, change program values % wirex3( dup !Program dup newchild yml \!Program _ProgSrc yml \!ProgSrc wirex( yml \!Body _ProgSrc "psrc" log)( _Program ".pgm" reextend ofpgm "pgm" log)( copyfile } { % % new node of machine master tree % wired( newchild } ifelse % % mark the tree as changed % *machdevi nod@ } { % % rename of node in master or sub-tree % root? { % % root of master or sub-tree % wirex( yml \!Body fork@)? { % % sub-tree root % wirex2( dup !Device yml \!Device wirex4( dup !DevType yml \!DevType } { % % main machine tree root % } ifelse } { % % non-root % wirex( yml \!Body fork@)? { % % program node of machine sub-tree % wired( !\\ wirex4( dup !DevType yml \!DevType wirex3( dup !Program yml \!Program } { % % non-root of master tree % wired( !\\ } ifelse } ifelse % % mark the tree as changed % *machdevi nod@ } ifelse } ifelse % % leave edit mode if enabled % noedits % % back to tab 0 % zerotab noedits