Changeset main,45 for main


Ignore:
Timestamp:
11/09/2007 12:29:19 AM (19 years ago)
Author:
David Owen <dsowen@…>
branch-nick:
tui-new
revision id:
dsowen@fugue88.ws-20071109002919-u3q6f17xwbxvy3b0
Message:

Added numberbox support to forms.
Fixed indentation of defform and added documentation.
Fix: Labels weren't being pushed to the screen.
Fix: (activate label) should return something useful to the form.

Location:
main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • main/form-test.lisp

    r44 r45  
    77
    88
    9 (defform test
    10     ((:textbox 0 0 tb0 8)
    11      (:textbox 1 0 tb1 8)
    12      (:textbox 2 0 tb2 8)
    13      (:textbox 3 0 tb3 8)
    14      (:textbox 4 0 tb4 8)
    15      (:textbox 5 0 tb5 8)
    16      (:textbox 6 0 tb6 8)
    17      (:textbox 7 0 tb7 8)))
     9(defform test ((:label 0 0 "Family name:")
     10               (:textbox 0 13 family-name 16)
     11               (:label 1 0 " Given name:")
     12               (:textbox 1 13 given-name 16)
     13               (:label 2 0 "        Age:")
     14               (:numberbox 2 13 age 2)))
    1815
    1916(defclass test ()
    2017  ((table :type hash-table :initform (make-hash-table :test #'equal))))
    2118
    22 (defmethod initialize-instance :after ((test test) &key &allow-other-keys)
    23   (with-slots (table) test
    24     (setf (gethash 'tb0 table) "Now")
    25     (setf (gethash 'tb1 table) "is")
    26     (setf (gethash 'tb2 table) "the")
    27     (setf (gethash 'tb3 table) "time")
    28     (setf (gethash 'tb4 table) "for")
    29     (setf (gethash 'tb5 table) "all")
    30     (setf (gethash 'tb6 table) "good")
    31     (setf (gethash 'tb7 table) "men!")))
    3219
    3320
     
    3926  (with-slots (table) test
    4027    (setf (gethash name table) value)))
     28
     29
    4130
    4231(defun test ()
  • main/form.lisp

    r44 r45  
    7070(defvar *form-definitions* (make-hash-table :test #'eq ))
    7171
    72 (defmacro defform (name (&rest widgets))
     72(defmacro defform (name (&body widgets))
     73  "Each widget is one of:
     74- (:label row column text)
     75- (:textbox row column name display-width &key data-width read-only)
     76- (:numberbox row column name display-width &key data-width precision read-only)"
    7377  (with-gensyms (elements)
    7478    `(let ((,elements (list ,@(mapcar 'parse-widget-form widgets))))
     
    8286   (name :initarg :name)))
    8387
     88(defun make-reflector (data name)
     89  (make-instance 'reflector :data data :name name))
     90
    8491(defmethod text ((r reflector))
    8592  (with-slots (data name) r
     
    93100
    94101(defgeneric create-peer (widget-def form)
     102  (:method ((ld label-def) form)
     103    (with-slots (row column text) ld
     104      (with-slots (window) form
     105        (create-label window row column text))))
    95106  (:method ((tbd textbox-def) form)
    96107    (with-slots (row column name display-width) tbd
    97108      (with-slots (data window scroll) form
    98         (let ((r (make-instance 'reflector :data data :name name)))
    99           (create-textbox window (- row scroll) column r display-width))))))
     109        (let ((r (make-reflector data name)))
     110          (create-textbox window (- row scroll) column r display-width)))))
     111  (:method ((nbd numberbox-def) form)
     112    (with-slots (row column name display-width) nbd
     113      (with-slots (data window scroll) form
     114        (let ((r (make-reflector data name)))
     115          (create-numberbox window (- row scroll) column r display-width))))))
    100116
    101117
     
    108124   (peers :type vector :initarg :peers)
    109125   (scroll :type (integer 0) :accessor scroll)))
     126
     127(defmethod refresh ((form form))
     128  (with-slots (window) form
     129    (refresh window)))
    110130
    111131(defun max-scroll (form)
     
    189209        (loop
    190210           (ensure-widget-visible form focus)
     211           (refresh form)
    191212           (let ((key (activate (aref peers focus) #'callback)))
    192213             (case key
  • main/widget/generic.lisp

    r40 r45  
    11(defpackage #:tui-widget-generic
    22  (:use #:cl)
    3   (:export #:text #:widget #:scroll #:insertion-point #:destroy #:draw
    4            #:activate))
     3  (:export #:text #:widget #:parent-window #:column #:row #:scroll
     4           #:insertion-point #:destroy #:draw #:activate))
    55
    66(in-package #:tui-widget-generic)
  • main/widget/label.lisp

    r40 r45  
    1919  (when raw-text
    2020    (setf text (enquote text)))
    21   (make-instance 'label
    22                  :parent-window parent-window :row row :column column
    23                  :text text))
     21  (let ((inst (make-instance 'label
     22                             :parent-window parent-window
     23                             :row row
     24                             :column column
     25                             :text text)))
     26    (draw inst)
     27    inst))
    2428
    2529(defmethod destroy ((label label)))
    2630
    27 (defmethod activate ((label label) &optional callback))
     31(defmethod activate ((label label) &optional callback)
     32  #\Tab)
Note: See TracChangeset for help on using the changeset viewer.