From e674081a06dcfb186160bfe90bea93df63061852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Br=C3=BCschweiler?= Date: Wed, 23 Dec 2009 20:51:00 +0100 Subject: [PATCH] curses: cleanup, remove unfinished screen support --- extra/curses/curses.factor | 60 ++++++++++++-------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/extra/curses/curses.factor b/extra/curses/curses.factor index 4d2baa6fb3..3f4ad18749 100644 --- a/extra/curses/curses.factor +++ b/extra/curses/curses.factor @@ -177,7 +177,7 @@ ERROR: unsupported-curses-terminal ; : >BOOLEAN ( ? -- TRUE/FALSE ) ffi:TRUE ffi:FALSE ? ; inline : curses-pointer-error ( ptr/f -- ptr ) - dup [ curses-failed ] unless ; inline + [ curses-failed ] unless* ; inline : curses-error ( n -- ) ffi:ERR = [ curses-failed ] when ; PRIVATE> @@ -236,8 +236,8 @@ M: curses-window dispose* ( window -- ) SYMBOL: n-registered-colors MEMO: register-color ( fg bg -- n ) - [ n-registered-colors get ] 2dip ffi:init_pair curses-error - n-registered-colors [ get ] [ inc ] bi ; + [ n-registered-colors get dup ] 2dip ffi:init_pair curses-error + n-registered-colors inc ; : init-colors ( -- ) ffi:has_colors [ @@ -250,12 +250,9 @@ PRIVATE> : setup-window ( window -- window ) [ - dup - dup parent-window>> [ - ptr>> swap window-params ffi:derwin - ] [ - window-params ffi:newwin - ] if* curses-pointer-error >>ptr &dispose + dup [ window-params ] keep + parent-window>> [ ptr>> ffi:derwin ] [ ffi:newwin ] if* + curses-pointer-error >>ptr &dispose ] [ apply-window-options ] bi ; : with-window ( window quot -- ) @@ -280,34 +277,13 @@ PRIVATE> ] [ ffi:endwin curses-error ] [ ] cleanup ] with-destructors ; inline -TUPLE: curses-terminal < disposable - infd outfd ptr ; - -: ( infd outfd ptr -- curses-terminal ) - curses-terminal new-disposable - swap >>ptr - swap >>outfd - swap >>infd ; - -M: curses-terminal dispose - [ outfd>> fclose ] [ infd>> fclose ] - [ ptr>> ffi:delscreen ] tri ; - -: init-terminal ( terminal -- curses-terminal ) - "xterm-color" swap [ "rb" fopen ] [ "wb" fopen ] bi - [ ffi:newterm curses-pointer-error ] 2keep ; - -: start-remote-curses ( terminal window -- curses-terminal ) - [ - init-terminal - ffi:initscr curses-pointer-error drop - dup ptr>> ffi:set_term curses-pointer-error drop - ] dip [ apply-global-options ] [ apply-window-options ] bi ; - : wcread ( n window -- string ) [ encoding>> ] [ ptr>> ] bi (wcread) ; -: curses-read ( n -- string ) current-window get wcread ; +: cread ( n -- string ) current-window get wcread ; : wgetch ( window -- key ) ptr>> (wgetch) ; : getch ( -- key ) current-window get wgetch ; @@ -435,12 +411,12 @@ TUPLE: mouse-event : fill-in-type ( mouse-event substate -- ) { - { BUTTON1_RELEASED [ +released+ >>type drop ] } - { BUTTON1_PRESSED [ +pressed+ >>type drop ] } - { BUTTON1_CLICKED [ +clicked+ >>type drop ] } - { BUTTON1_DOUBLE_CLICKED [ +double+ >>type drop ] } - { BUTTON1_TRIPLE_CLICKED [ +triple+ >>type drop ] } - } case ; inline + { BUTTON1_RELEASED [ +released+ ] } + { BUTTON1_PRESSED [ +pressed+ ] } + { BUTTON1_CLICKED [ +clicked+ ] } + { BUTTON1_DOUBLE_CLICKED [ +double+ ] } + { BUTTON1_TRIPLE_CLICKED [ +triple+ ] } + } case >>type drop ; inline : fill-in-bstate ( mouse-event bstate -- ) 2dup {