Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
58
Task/User-input-Graphical/REBOL/user-input-graphical.rebol
Normal file
58
Task/User-input-Graphical/REBOL/user-input-graphical.rebol
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
REBOL [
|
||||
Title: "Graphical User Input"
|
||||
URL: http://rosettacode.org/wiki/User_Input_-_graphical
|
||||
]
|
||||
|
||||
; Simple GUI's can be defined with 'layout', a special purpose dialect
|
||||
; for specifying interfaces. In this case, I describe a gradient
|
||||
; background with an instruction label, followed by the input fields
|
||||
; and a validation button. It's possible to check dynamically as the
|
||||
; user types but I wanted to keep this example as clear as possible.
|
||||
|
||||
view layout [
|
||||
|
||||
; You can define new widget styles. Here I create a padded label style
|
||||
; (so that everything will line up) and a simple indicator light to
|
||||
; show if there's a problem with an input field.
|
||||
|
||||
style label vtext 60 "unlabeled"
|
||||
style indicator box maroon 24x24
|
||||
|
||||
backdrop effect [gradient 0x1 black coal]
|
||||
|
||||
vtext "Please enter a string, and the number 75000:"
|
||||
|
||||
; By default, GUI widgets are arranged top down. The 'across' word
|
||||
; starts stacking widgets from left to right. 'return' starts a new
|
||||
; line -- just like on a typewriter!
|
||||
|
||||
across
|
||||
|
||||
; Notice I'm using my new label and indicator styles here. Widgets
|
||||
; that I need to access later (the input field and the indicator) are
|
||||
; assigned to variables.
|
||||
|
||||
label "string:" s: field 240 si: indicator return
|
||||
|
||||
label "number:" n: field 50 ni: indicator return
|
||||
|
||||
pad 66
|
||||
button "validate" [
|
||||
|
||||
; The user may have entered bogus values, so I reset the indicators:
|
||||
|
||||
si/color: ni/color: maroon
|
||||
|
||||
; Now I check to see if the values are correct. For the string, I just
|
||||
; care that there is one. For the integer, I make sure that it
|
||||
; evaluates to an integer and that it's value is 75000. Because I've
|
||||
; already set the indicator colour, I don't care the integer
|
||||
; conversion raises an error or not, so I ignore it if anything goes
|
||||
; wrong.
|
||||
|
||||
if 0 < length? get-face s [si/color: green]
|
||||
error? try [if 75000 = to-integer get-face n [ni/color: green]]
|
||||
|
||||
show [si ni] ; Repainting multiple objects at once.
|
||||
]
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue