REBOL [ Title: "AutoRequest Widgets" Purpose: "Some widgets that convert user actions to dialect type requests." Author: "Brett Handley" Date: 24-May-2001 Comment: { This is an experiment at concentrating control type code within view scripts. } ] autorequest-dispatch: function [face value][request control-func req][ if all [in face 'request in face 'control-func] [ request: get in face 'request control-func: get in face 'control-func if not none? :control-func [ either none? :request [ control-func value ][ either block? request [ control-func compose/deep bind copy request in face 'self ][control-func request face] ] ] ] ] autorequest-style-names: [ field area button arrow toggle rotary choice check radio slider sensor list] autorequest-style-spec: [] foreach style-name autorequest-style-names [ append autorequest-style-spec reduce [to-set-word style-name style-name] append autorequest-style-spec [ with [ name: none control-func: none request: none words: [ name [new/name: second args next args] request [new/request: second args next args] control-func [new/control-func: second args next args] ] action: :autorequest-dispatch ] ] ] autorequest-styles: stylize autorequest-style-spec foreach [style-name request] [ button [(to-word replace/all copy text " " "-")] field [(name)(text)] ][set in select autorequest-styles style-name 'request request]