- Timestamp:
- 09/26/2007 03:46:49 PM (19 years ago)
- branch-nick:
- tui
- revision id:
- dsowen@fugue88.ws-20070926154649-urstxn96pa6a77tc
- Location:
- main
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
main/Makefile
r2 r4 1 menu2.so: menu2.c 2 rm -f menu2.so 3 gcc -shared -fPIC -o menu2.so menu2.c -lmenu -Wall -pedantic 1 all: menu2.so form2.so 2 3 menu2.so: LIBS := -lmenu 4 5 form2.so: LIBS := -lform 6 7 %.so: %.c 8 rm -f $@ 9 gcc -shared -fPIC -o $@ $< $(LIBS) -Wall -pedantic -
main/curses.lisp
r2 r4 19 19 (defcfun noecho :int) 20 20 (defcfun getch :int) 21 (defcfun keypad :int (win :pointer) (bf :int)) 22 (defcfun start-color :int) 23 24 (defcvar stdscr :pointer :read-only t) 21 25 22 26 … … 36 40 37 41 42 (define-foreign-library form2 43 (t "/home/dsowen/lisp/tui/form2.so")) 44 45 (use-foreign-library form2) 46 47 (defmacro defcdef (name) 48 `(defcvar ,name :int :read-only t)) 49 50 (defcdef req-next-field) 51 (defcdef req-del-prev) 52 (defcdef key-backspace) 53 (defcdef req-end-line) 54 (defcdef req-end-field) 55 (defcdef req-beg-field) 56 (defcdef key-left) 57 (defcdef key-right) 58 (defcdef req-left-char) 59 (defcdef req-right-char) 60 61 (defcfun form2-create :int) 62 (defcfun form2-add-field :int (form :int) (row :int) (col :int) (width :int) 63 (height :int) (data-height :int)) 64 (defcfun form2-destroy :int (form :int)) 65 (defcfun form2-post :int (form :int)) 66 (defcfun form2-drive :int (form :int) (c :int)) 67 (defcfun form2-unpost :int (form :int)) 68 (defcfun form2-field-len :int (form :int) (i :int)) 69 (defcfun form2-copy-field :int (form :int) (i :int) (buff :pointer) (len :int)) 70 71 (defun form2-get-value (form i) 72 (let* ((len (1+ (form2-field-len form i))) 73 (buff (cffi:foreign-alloc :char :count len))) 74 (form2-copy-field form i buff len) 75 (let ((str (foreign-string-to-lisp buff))) 76 (foreign-free buff) 77 (string-trim " " str)))) 78 79 38 80 (defun init-screen () 39 81 (initscr) 82 (start-color) 83 (keypad stdscr 1) 40 84 (cbreak) 41 85 (noecho)) 86 87 (defmacro ncase (keyform &rest clauses) 88 `(let ((#1=#:g0001 ,keyform)) 89 (cond 90 ,@(mapcar (lambda (clause) 91 (destructuring-bind (keys &rest forms) clause 92 (if (eq keys t) 93 `(t ,@forms) 94 (progn 95 (unless (listp keys) 96 (setf keys (list keys))) 97 `((member #1# (list ,@keys) :test '=) 98 ,@forms))))) 99 clauses)))) 100 101 102 (defun test () 103 (let (l) 104 (init-screen) 105 (let ((form (form2-create))) 106 (form2-add-field form 1 1 10 1 0) 107 (form2-add-field form 3 1 15 1 0) 108 (form2-post form) 109 (loop doing 110 (let ((c (getch))) 111 (ncase c 112 ((key-backspace 127) 113 (form2-drive form req-del-prev)) 114 (key-left 115 (form2-drive form req-left-char)) 116 (key-right 117 (form2-drive form req-right-char)) 118 (9 119 (form2-drive form req-beg-field) 120 (form2-drive form req-next-field) 121 (form2-drive form req-end-field)) 122 (10 123 (form2-drive form req-next-field) 124 (return)) 125 (t 126 (form2-drive form c))))) 127 (setf l (form2-get-value form 0)) 128 (form2-unpost form) 129 (form2-destroy form)) 130 (endwin) 131 l)) -
main/lisp.sh
r2.1.1 r4 1 1 #!/bin/sh 2 2 3 rlfe -h .history sbcl --load /usr/share/emacs/site-lisp/slime/swank-loader.lisp--eval "(swank:create-server)"3 sbcl --load /usr/share/emacs/site-lisp/slime/swank-loader.lisp --eval "(setf swank:*communication-style* :fd-handler)" --eval "(swank:create-server)"
Note: See TracChangeset
for help on using the changeset viewer.
