ref: ab90a480eb5233abc4d7122739c24656dd42cc94
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 &
}
wait