Guest User

mnemotrain

a guest
Dec 26th, 2011
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
REBOL 2.97 KB | None | 0 0
  1. rebol [
  2.         title:     "Memory Trainer"
  3.         version:   0.0.1
  4.         date:      20-Dec-2011
  5. ]
  6.  
  7. parameters: attempt [load %mnemotrain.cfg]
  8. unless attempt [not empty? parameters] [
  9.     parameters: [
  10.         on-interval   0.5 ; s
  11.         off-interval  1.0 ; s
  12.         font-name    "Times New Roman"
  13.         font-size      36 ; pt
  14.         font-color   "white"
  15.         bkg-color    "black"
  16.         chunk-len       3
  17.     ]
  18. ]
  19.  
  20. ;words: parse (form copy system/ports/input) none
  21. words: parse (read clipboard://) none
  22.  
  23. cyclically-pick-chunk: has [r] [
  24.     r: form copy/part words parameters/chunk-len
  25.     words: skip words parameters/chunk-len
  26.     if tail? words [
  27.         words: head words
  28.     ]
  29.     return r
  30. ]
  31.  
  32. decimal-field-handler: [
  33.     old-engage: :engage
  34.     engage: func [face action event] [
  35.         old-engage face action event
  36.         if action = 'key [
  37.             new-val: attempt [to decimal! face/text]
  38.             if new-val [
  39.                 par-name: face/user-data
  40.                 parameters/:par-name: new-val
  41.             ]
  42.             probe parameters
  43.         ]
  44.     ]
  45. ]
  46.  
  47. integer-field-handler: [
  48.     old-engage: :engage
  49.     engage: func [face action event] [
  50.         old-engage face action event
  51.         if action = 'key [
  52.             new-val: attempt [to integer! face/text]
  53.             if new-val [
  54.                 par-name: face/user-data
  55.                 parameters/:par-name: new-val
  56.             ]
  57.             probe parameters
  58.         ]
  59.     ]
  60. ]
  61.  
  62. string-field-handler: [
  63.     old-engage: :engage
  64.     engage: func [face action event] [
  65.         old-engage face action event
  66.         if action = 'key [
  67.             par-name: face/user-data
  68.             parameters/:par-name: face/user-data
  69.             probe parameters
  70.         ]
  71.     ]
  72. ]
  73.  
  74. v: view/new layout [
  75.     sample-text: text 400x200 center middle font [
  76.         color: parameters/font-color
  77.         size:  parameters/font-size
  78.         name:  parameters/font-name
  79.     ]
  80.     input-field: field sample-text/size/x colors [240.240.240 240.240.240] feel [
  81.         old-engage: :engage
  82.         engage: func [face action event] [
  83.             old-engage face action event
  84.             if action = 'key [
  85.                 if event/key = #"^M"[ ; Enter key code
  86.                     focus input-field
  87.                     either ((length? input-field/text) <> 0) and
  88.                            (input-field/text <> sample-text/text) [
  89.                         alert "Error!"
  90.                         focus input-field
  91.                     ]
  92.                     [
  93.                         sample-text/text: cyclically-pick-chunk
  94.                         show sample-text
  95.                         wait parameters/on-interval
  96.                         hide sample-text
  97.                     ]
  98.                 ]
  99.             ]
  100.         ]
  101.     ]
  102.     ;button "Options" [
  103.     ;   option-panel/size: 0x0
  104.     ;   show v
  105.     ;]
  106.     option-panel: panel [
  107.             across
  108.             text "On"     field  50
  109.                 form parameters/on-interval  user-data 'on-interval  feel decimal-field-handler
  110.             text "Off"    field  50
  111.                 form parameters/off-interval user-data 'off-interval feel decimal-field-handler
  112.             text "Length" field  25
  113.                form parameters/chunk-len    user-data 'chunk-len    feel integer-field-handler
  114.             return
  115.             text "Font"   field 150
  116.                form parameters/font-name    user-data 'font-name    feel string-field-handler
  117.             text "Size"   field  25
  118.                form parameters/font-size    user-data 'font-size    feel integer-field-handler
  119.     ]
  120. ]
  121. focus input-field
  122. do-events
  123.  
  124. save %mnemotrain.cfg parameters
Advertisement
Add Comment
Please, Sign In to add comment