Changeset main,4


Ignore:
Timestamp:
09/26/2007 03:46:49 PM (19 years ago)
Author:
David Owen <dsowen@…>
branch-nick:
tui
revision id:
dsowen@fugue88.ws-20070926154649-urstxn96pa6a77tc
Message:

Started adding form stuff.

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
     1all: menu2.so form2.so
     2
     3menu2.so: LIBS := -lmenu
     4
     5form2.so: LIBS := -lform
     6
     7%.so: %.c
     8        rm -f $@
     9        gcc -shared -fPIC -o $@ $< $(LIBS) -Wall -pedantic
  • main/curses.lisp

    r2 r4  
    1919(defcfun noecho :int)
    2020(defcfun getch :int)
     21(defcfun keypad :int (win :pointer) (bf :int))
     22(defcfun start-color :int)
     23
     24(defcvar stdscr :pointer :read-only t)
    2125
    2226
     
    3640
    3741
     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
    3880(defun init-screen ()
    3981  (initscr)
     82  (start-color)
     83  (keypad stdscr 1)
    4084  (cbreak)
    4185  (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  
    11#!/bin/sh
    22
    3 rlfe -h .history sbcl --load /usr/share/emacs/site-lisp/slime/swank-loader.lisp --eval "(swank:create-server)"
     3sbcl --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.