aUCBLogo Demos and Tests / textcontroltest


to textcontroltest
   
; a complete console written in Logo
   
textcontroltest_f=Frame [][MyConsole]
      
wxCaption+wxSystem_Menu+wxClose_Box+wxResize_Border
      
+wxStay_on_Top
      
[0 100][400 400]
   
FrameSetClientSize textcontroltest_f 600 400
   
FrameSetBackgroundColor textcontroltest_f [.9 .9 .8]
   
   
history=[[;]]
   
historyi=0
   
t=(TextControl textcontroltest_f " " 
      
[][]
      
wxTE_multiline+wxTE_readOnly+wxTE_Rich2+wxTE_NoHideSel
      
);[0 0][-1 -1])
   
setWriter t   
   
   
t2=(TextControl textcontroltest_f [Commandline"
      
[]   ;OnChange
      
[   OnEnter
      
])

   
b=Button textcontroltest_f [Enter]
      
[   OnEnterButton
      
]

   
TextControlOnChar t2
   
[   c=KeyboardValue
      
case c 
      
[[wxk_escape destroyAll]
      
[wxk_up 
         
if historyi count history
         
[   historyi=historyi+1
            
TextControlSetValue t2 history.historyi
         
]
      
]
      
[wxk_down 
         
ifelse historyi 1
         
[   historyi=historyi-1
            
TextControlSetValue t2 history.historyi
         
][   historyi=0
            
TextControlSetValue t2 " 
         
]
      
]
      
[else historyi=0]]
   
]
   
setWriter t
;comment   
;[
   
bs=BoxSizer wxVertical
   
BoxSizerAdd bs t wxExpand 0
   
bsh=BoxSizer wxHorizontal
   
BoxSizerAdd bsh t2 wxExpand+wxAlign_left 0
   
BoxSizerAdd bsh b wxExpand+wxAlign_left 0
   
BoxSizerAdd bs bsh wxExpand+wxAlign_bottom 0
   
FrameSetSizer textcontroltest_f bs
;]
end

to myRun v
   
catch "error [run v]
   
local [err]
   
err=error
   
if not empty? err
   
[   (pr err.2 [inerr.3 [oferr.4 [lineerr.5)
   
]
   
updateGraph
end

to OnEnter
   
local [v]
   
v=(TextControlValue t2)
   
push "history v
   
historyi=0
   
TextControlAppend (word char 10)
   
TextControlSetValue t2 "
   
myRun v
end

to OnEnterButton
   
local [v]
   
v=(TextControlValue t2)
   
push "history v
   
historyi=0
   
TextControlAppend (word char 10)
   
myRun v
end

to destroyAll
   
er [[][textcontroltest_f history historyi t t2]]
   
(GC true)
   
setWriter []
end