curses: seperated echo and raw/cbreak options from window-setup

db4
Philipp Brüschweiler 2009-10-21 20:40:32 +02:00
parent 52af310055
commit e1a9d597b0
1 changed files with 12 additions and 6 deletions

View File

@ -188,15 +188,18 @@ M: curses-window dispose* ( window -- )
[ ffi:cbreak ] [ ffi:nocbreak ] if [ ffi:cbreak ] [ ffi:nocbreak ] if
] if curses-error ; ] if curses-error ;
: apply-options ( window -- ) : apply-window-options ( window -- )
{ {
[ [ cbreak>> ] [ raw>> ] bi set-cbreak/raw ]
[ echo>> [ ffi:echo ] [ ffi:noecho ] if curses-error ]
[ [ ptr>> ] [ scrollok>> >BOOLEAN ] bi ffi:scrollok curses-error ] [ [ ptr>> ] [ scrollok>> >BOOLEAN ] bi ffi:scrollok curses-error ]
[ [ ptr>> ] [ leaveok>> >BOOLEAN ] bi ffi:leaveok curses-error ] [ [ ptr>> ] [ leaveok>> >BOOLEAN ] bi ffi:leaveok curses-error ]
[ [ ptr>> ] [ keypad>> >BOOLEAN ] bi ffi:keypad curses-error ] [ [ ptr>> ] [ keypad>> >BOOLEAN ] bi ffi:keypad curses-error ]
} cleave ; } cleave ;
: apply-global-options ( window -- )
[ [ cbreak>> ] [ raw>> ] bi set-cbreak/raw ]
[ echo>> [ ffi:echo ] [ ffi:noecho ] if curses-error ]
bi ;
SYMBOL: n-registered-colors SYMBOL: n-registered-colors
MEMO: register-color ( fg bg -- n ) MEMO: register-color ( fg bg -- n )
@ -220,7 +223,7 @@ PRIVATE>
] [ ] [
window-params ffi:newwin window-params ffi:newwin
] if* [ curses-error ] keep >>ptr &dispose ] if* [ curses-error ] keep >>ptr &dispose
] [ apply-options ] bi ; ] [ apply-window-options ] bi ;
: with-window ( window quot -- ) : with-window ( window quot -- )
[ current-window ] dip with-variable ; inline [ current-window ] dip with-variable ; inline
@ -230,9 +233,12 @@ PRIVATE>
[ [
'[ '[
ffi:initscr curses-pointer-error ffi:initscr curses-pointer-error
>>ptr dup apply-options >>ptr
[ apply-global-options ] [ apply-window-options ] [ ] tri
ffi:erase curses-error ffi:erase curses-error
init-colors init-colors
_ with-window _ with-window
] [ ffi:endwin curses-error ] [ ] cleanup ] [ ffi:endwin curses-error ] [ ] cleanup
] with-destructors ; inline ] with-destructors ; inline
@ -259,7 +265,7 @@ M: curses-terminal dispose
init-terminal init-terminal
ffi:initscr curses-pointer-error drop ffi:initscr curses-pointer-error drop
dup ptr>> ffi:set_term curses-pointer-error drop dup ptr>> ffi:set_term curses-pointer-error drop
] dip apply-options ; ] dip [ apply-global-options ] [ apply-window-options ] bi ;
<PRIVATE <PRIVATE