Here is the source code:
REBOL [
title: "Menu style example"
file: %simple-menu-style.r
author: "Marco Antoniazzi directly derived from Nick Antonaccio"
email: [luce80 AT libero DOT it]
date: 30-10-2010
version: 0.0.1
Purpose: {A quick way to add a simple menu to VID GUIs}
comment: {You are strongly encouraged to post an enhanced version of this script}
Category: [util vid view]
]
menu-Options: [
"Open File..." [attempt [a1/text: read request-file/only show a1]]
"Copy to Clipboard" [do-face b1 1]
"Paste from Clipboard" [a1/text: read clipboard:// show a1]
"______________________^/" []
"About..." [alert "This menu is just a choice button widget :)"]
"______________________^/" []
"Halt" [halt]
"Quit" [quit]
]
menu-Help: [
"About..." [alert "This menu is just a choice button widget :)"]
]
menu-color: 235.240.245
view center-face layout [
size 440x250
origin 0x0 space 0x0 backdrop 253.253.253 across
;box menu-color 8x20
style menu-list choice left menu-color 1x20 with [
para: [indent: 6x0 origin: 0x0 margin: 0x0]
font: [style: none shadow: none colors: [black 5.5.255]]
colors: reduce [menu-color menu-color - 20]
edge: none
] feel [
engage: func [face action event][
if (action = 'down) or (action = 'up) [
choose/style/window/offset extract face/menu 2 func [face parent][
parent/data: find parent/texts face/text
do-face parent parent/text: face/text
] face face/parent-face (face/offset + (face/size/y * 0x1))
]
]
][do select face/menu value face/text: face/texts/1 show face]
m1: menu-list "Options" 170 with [menu: menu-Options]
pad (size-text m1) + 10 - m1/size * 1x0
m2: menu-list "Help" 100 with [menu: menu-Help]
box menu-color 2000x20
origin 20x40 space 20x20 below
a1: area wrap with [colors: [254.254.254 248.248.248]]
b1: btn "Submit" [write clipboard:// a1/text alert "Copied"]
]
That is a script that cries out for line-by-line annotation.
ReplyDeleteI actually wrote most of that script: http://business-programming.com/business_programming.html#section-17.20 . I annotated it here for you: http://re-bol.com/menu-annotated.r
ReplyDelete