REBOL [ Title: "BTN Style" Author: "Christopher Ross-Gill" File: %btn-style.r Date: 29-Jan-2004 ] repend system/view/vid/image-stock [ 'button-default load 64#{ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAVCAMAAACjWzTCAAAAYFBMVEXs6dgAAAD/ //8cUYDllwD4tDX5vkv6x2H80nr+35pNn+ForOiCue+dxvW30/zS7P/V0MTX1Mrg 3Mnk4tnp6OHw8Or09PD6+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6oB7hAAAA A3RSTlMA/5nggRJMAAAAFHRFWHRBdXRob3IAcm9zcy1naWxsLmNvbf6SRqsAAABG SURBVHjahc5BCsAwCERR0QsI4+j9b9omUShk0b96yy/yzcwaVWWDl9rKUXLE2MrM H+FWjNgib0UEjgC4L4l5Yz8fiOrCAw2cB0Y2isrjAAAAAElFTkSuQmCC } 0 'button-down load 64#{ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAVCAMAAACjWzTCAAAAYFBMVEXs6dgAAAD/ //8cUYDllwD4tDX5vkv6x2H80nr+35pNn+ForOiCue+dxvW30/zS7P/V0MTX1Mrg 3Mnk4tnp6OHw8Or09PD6+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6oB7hAAAA A3RSTlMA/5nggRJMAAAAFHRFWHRBdXRob3IAcm9zcy1naWxsLmNvbf6SRqsAAAA+ SURBVHjarc4xDgAgCENRQi8AAe5/VQE1MQ5OdnpLk090DsCCiGAjySlVc5+yT7KH ivfDPVqEiGh08wQxFwaicwaMi/KV2wAAAABJRU5ErkJggg== } 0 'button-hover load 64#{ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAVCAMAAACjWzTCAAAAYFBMVEXs6dgAAAD/ //8cUYDllwD4tDX5vkv6x2H80nr+35pNn+ForOiCue+dxvW30/zS7P/V0MTX1Mrg 3Mnk4tnp6OHw8Or09PD6+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6oB7hAAAA A3RSTlMA/5nggRJMAAAAFHRFWHRBdXRob3IAcm9zcy1naWxsLmNvbf6SRqsAAABJ SURBVHjajc45DoAwDAVRy99rT+D+NyWJI4RCw1SvHKJ3ABYyE4WISPDU9VF0RclP 3+Vd/kNmzWyTalNdOh5piSAiE/O5QMwDN4TtA49kQfcpAAAAAElFTkSuQmCC } 0 'button-enter load 64#{ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAVCAMAAACjWzTCAAAAYFBMVEXs6dgAAAD/ //8cUYDllwD4tDX5vkv6x2H80nr+35pNn+ForOiCue+dxvW30/zS7P/V0MTX1Mrg 3Mnk4tnp6OHw8Or09PD6+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6oB7hAAAA A3RSTlMA/5nggRJMAAAAFHRFWHRBdXRob3IAcm9zcy1naWxsLmNvbf6SRqsAAABK SURBVHjajc45DoAwDAVRy7/z2hC4/01J4gih0DDVK4foHYCFzEQhIhI8dX0UXVHy 03d5l/+QWTPbpNpUl45HWiKIyMR8LhDzwA0sVAUnZ9ivvgAAAABJRU5ErkJggg== } 0 ] stylize/master [ BTN: FACE -1x22 with [ ; version 0.1.2 color: image: none edge: none effects: none font: [color: black colors: none style: none size: 11 shadow: none align: 'center valign: 'middle offset: 14x0] saved-area: true ; 'look supercedes 'images, 'effects, 'colors, 'texts, etc. Provides ; action-based face manipulation in tandem with the feel/display function. look: reduce [ 'default load-stock 'btn-up 'down load-stock 'btn-dn 'hover load-stock 'btn-hover ] feel: make svvf/button [ hover?: off ; none turns hover off altogether over: func [face over? offset][ if hover? <> none [hover?: either over? [on][off] show face hover?: off] ] redraw: func [face act pos /local state] [ display face either face/state ['down][either hover? ['hover]['default]] ] ; Function used to manipulate face display: func [face action][ face/image: any [select face/look action face/image] ] ] colors: color: none init: [ if size/x = -1 [ either text [ size/x: 1000 state: size-text self size/x: either state [state/x + font/offset/x][50] state: none ][size/x: 50] ] effect: join [extend anti-alias] either effect [effect][make block! 10] if color [append effect reduce ['colorize color]] color: none ] ] BTN-ENTER: BTN "Enter" with [look/default: load-stock 'button-enter] BTN-CANCEL: BTN "Cancel" with [look/default: load-stock 'button-enter] BTN-HELP: BTN bold "?" 22x22 with [keycode: 'f1] [notify "Help is not available."] ]