curses: seperated echo and raw/cbreak options from window-setup
							parent
							
								
									52af310055
								
							
						
					
					
						commit
						e1a9d597b0
					
				| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue