set-values: make function! [ "Puts values into input widgets within a display or grouping widget." face [object!] "Display face" blk [block!] "Block of values (or 'skip)" /no-show "Don't show" /local val ] [ all [ find [scroll-panel tab-panel] face/type face: either block? face/pane [face: face/pane/1] [face/pane] ] foreach widget face/pane [ if find [ area check check-group drop-list edit-list field group-box password radio-group scroll-panel slider tab-panel table text-list ] widget/type [ unless 'skip = val: first blk [ switch/default widget/type [ check [widget/data: val] check-group [all [block? val insert clear widget/data val]] group-box [all [block? val set-values/no-show widget copy/deep val]] radio-group [widget/select-item to integer! val] scroll-panel [all [block? val set-values/no-show widget copy/deep val]] slider [widget/data: to decimal! val] tab-panel [all [block? val set-values/no-show widget copy/deep val]] table [widget/select-row val] text-list [widget/select-row val] ][ ; area drop-list edit-list field password widget/line-list: none insert clear widget/text val all [widget/type = 'area widget/para widget/para/scroll: 0x0 widget/pane/data: 0] ] ] if tail? blk [gui-error "set-values had insufficient values"] blk: next blk ] ] blk: head blk unless no-show [show face] ]