ref: c51962a648b3f38fc378ad0081b1d1aa037142d5
dir: /test.rc/
#!/bin/rc delay=0.1 dir=/mnt/gui # split the window vertically into two, and make the top one a textbox echo vertical >> $dir/props/orientation textdir=$dir/`{cat $dir/clone} echo textbox >> $textdir/type fn show { echo -n $* >> $textdir/props/text } dir=$dir/`{cat $dir/clone} colours=(FF0000 00FF00 0000FF FFFF00 00FFFF FF00FF FFFFFF 333333) for(colour in $colours){ dir=$dir/`{cat $dir/clone} # Create a new sub element in the gui (for now, always a "container") echo $colour^FF >> $dir/props/background # Set the background show 'setting background of '^$dir^' to 0x'^$colour sleep $delay # Wait a bit } # Now do the same, but don't nest the elements for(colour in $colours){ subdir=$dir/`{cat $dir/clone} echo $colour^FF >> $subdir/props/background show 'setting background of '^$subdir^' to 0x'^$colour sleep $delay } # Add some padding to all elements for(f in `{walk /mnt/gui/ | grep 'padding$'}){ echo 10 >> $f show 'echo 10 >> '^$f sleep $delay } # Add a border to the innermost elements for(f in `{walk /mnt/gui | grep $dir'/[0-9]+/props/border$'}){ echo 8888CCFF >> $f^colour echo 5 >> $f show 'echo 5 >> '^$f sleep $delay } # Add some margin to the innermost elements for(f in `{walk /mnt/gui | grep $dir'/[0-9]+/props/margin'}){ echo 5 >> $f show 'echo 5 >> '^$f sleep $delay } # Make the inner container vertical echo vertical >> $dir/props/orientation show 'echo vertical >> '^$dir/props/orientation fn printevents { while(event = `''{read}){ show $1': '$event } } # Attach an event printer to the innermost elements for(f in `{walk /mnt/gui | grep $dir'/[0-9]+/event'}){ printevents $f <$f >[2]/dev/null & } # Create a right-click menu on the text field echo 'R/this is a/right click/menu' >> /mnt/gui/0/props/menus # Also attach an event printer to the text field printevents 'text field' </mnt/gui/0/event >[2]/dev/null & wait