- Timestamp:
- 11/08/2007 11:26:33 PM (19 years ago)
- branch-nick:
- tui-new
- revision id:
- dsowen@fugue88.ws-20071108232633-o1pxoj710jjn381p
- Location:
- main
- Files:
-
- 4 edited
-
form-test.lisp (modified) (1 diff)
-
form.lisp (modified) (5 diffs)
-
tui.asd (modified) (1 diff)
-
widget/textbox.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
main/form-test.lisp
r43 r44 47 47 (progn 48 48 (setf (scroll form) 4) 49 (tui-input:read-key w)) 49 (activate form (lambda (key) 50 (member key '(#\Esc #\Tab #\Return :key-f12))))) 50 51 (destroy-form form)))))) -
main/form.lisp
r43 r44 3 3 (defpackage #:tui-form 4 4 (:use #:cl #:dso-util #:tui-input #:tui-widget #:tui-window) 5 (:export #:form-value #:defform #:create-form #:destroy-form #:scroll)) 5 (:export #:form-value #:defform #:create-form #:destroy-form #:scroll 6 #:activate)) 6 7 7 8 (in-package #:tui-form) … … 87 88 (defmethod (setf text) (text (r reflector)) 88 89 (with-slots (data name) r 89 (setf (form-value data name) r)))90 (setf (form-value data name) text))) 90 91 91 92 … … 119 120 120 121 (defun widget-visible-p (form widget) 121 (with-slots (widgets window scroll) form 122 (when (integerp widget) 123 (setf widget (aref widgets widget))) 122 (with-slots (window scroll) form 124 123 (with-slots (row) widget 125 124 (<= 0 (- row scroll) (1- (size window)))))) … … 139 138 (setf (aref peers i) (create-peer widget-def form))))) 140 139 r))) 140 141 (defun ensure-widget-visible (form i) 142 (with-slots (widget-defs window scroll) form 143 (let ((widget (aref widget-defs i))) 144 (with-slots (row) widget 145 (let* ((line (- row scroll)) 146 (diff (- line (bound line 0 (1- (size window)))))) 147 (incf (scroll form) diff)))))) 141 148 142 149 … … 169 176 (destroy (aref peers i)) 170 177 (setf (aref peers i) nil))))) 178 179 180 181 (defmethod activate ((form form) &optional (callback 'nothing)) 182 (with-slots (peers) form 183 (flet ((callback (key) 184 (if (member key '(#\Return #\Newline #\Tab :key-btab)) 185 key 186 (funcall callback key)))) 187 (let ((focus 0) 188 (n (length peers))) 189 (loop 190 (ensure-widget-visible form focus) 191 (let ((key (activate (aref peers focus) #'callback))) 192 (case key 193 ((#\Return #\Newline #\Tab) 194 (setf focus (mod (1+ focus) n))) 195 (:key-btab 196 (setf focus (mod (1- focus) n))) 197 (t 198 (return-from activate key))))))))) -
main/tui.asd
r42 r44 16 16 (:file "display-string" 17 17 ;; "input" only for testing 18 :depends-on ("cdk" " input"))18 :depends-on ("cdk" "cursor" "input" "output" "window")) 19 19 (:module "widget" 20 20 :depends-on ("cursor" -
main/widget/textbox.lisp
r40 r44 102 102 (setf (insertion-point textbox) (insertion-point textbox))))) 103 103 (t 104 (if (or (keywordp key) (member key '(#\Return #\Tab #\Esc))) 104 (if (or (keywordp key) 105 (member key '(#\Return #\Newline #\Tab #\Esc))) 105 106 (let ((r (funcall callback key))) 106 107 (when r
Note: See TracChangeset
for help on using the changeset viewer.
