Changeset main,56
- Timestamp:
- 11/16/2007 04:57:59 PM (19 years ago)
- branch-nick:
- tui
- revision id:
- dsowen@fugue88.ws-20071116165759-z7bwp6amaic0blw4
- Location:
- main/grid
- Files:
-
- 4 edited
-
display.lisp (modified) (5 diffs)
-
model.lisp (modified) (1 diff)
-
package.lisp (modified) (1 diff)
-
test.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
main/grid/display.lisp
r55 r56 5 5 (defclass grid () 6 6 ((data :initarg :data) 7 (header-rows :type (integer 0) :initarg :header-rows)8 7 (header-columns :type (integer 0) :initarg :header-columns) 9 8 (window :initarg :window) … … 11 10 (column-scroll :type (integer 0) :initform 0 :accessor column-scroll))) 12 11 13 (defun make-grid (window data &key (header- rows 0) (header-columns 0))12 (defun make-grid (window data &key (header-columns 0)) 14 13 (make-instance 'grid 15 14 :data data 16 :header-rows header-rows17 15 :header-columns header-columns 18 16 :window window)) … … 49 47 50 48 (defun row-split (grid row) 51 (with-slots ( header-rows) grid52 (saturate header-rowsrow)))49 (with-slots (data) grid 50 (saturate (header-rows data) row))) 53 51 54 52 (defun row-offset (grid row) 55 (with-slots (header-rows) grid 56 (multiple-value-bind (in-header in-data) (row-split grid row) 57 (+ in-header in-data)))) 53 (multiple-value-bind (in-header in-data) (row-split grid row) 54 (+ in-header in-data))) 58 55 59 56 (defun draw-header-corner-item (grid row column) … … 87 84 88 85 (defun draw-column (grid column x) 89 (with-slots (data header-rows window row-scroll) grid 90 (dotimes (i header-rows) 91 (draw-cell grid i column i x)) 92 (dotimes (i (- (size window) header-rows)) 93 (let* ((y (+ i header-rows)) 94 (row (+ y row-scroll))) 95 (when (>= row (rows data)) 96 (return)) 97 (draw-cell grid row column y x))))) 86 (with-slots (data window row-scroll) grid 87 (let ((header-rows (header-rows data))) 88 (dotimes (i header-rows) 89 (draw-cell grid i column i x)) 90 (dotimes (i (- (size window) header-rows)) 91 (let* ((y (+ i header-rows)) 92 (row (+ y row-scroll))) 93 (when (>= row (rows data)) 94 (return)) 95 (draw-cell grid row column y x)))))) 98 96 99 97 (defun draw (grid) … … 113 111 114 112 (defmethod max-row-scroll ((grid grid)) 115 (with-slots (data header-rowswindow) grid113 (with-slots (data window) grid 116 114 (max 0 (- (rows data) (size window))))) 117 115 -
main/grid/model.lisp
r55 r56 7 7 "Returns the number of rows of data.")) 8 8 9 #|(defgeneric header-rows (grid-data)9 (defgeneric header-rows (grid-data) 10 10 (:documentation 11 11 "Returns the number of rows that contain header data, and may be 12 12 considered for locking in place during scrolling operations. Header 13 13 rows are always at the top of the grid (from row 0).") 14 (:method (grid-data) 0)) |#14 (:method (grid-data) 0)) 15 15 16 16 (defgeneric columns (grid-data) -
main/grid/package.lisp
r55 r56 1 1 (defpackage #:grid 2 2 (:use #:cl #:dso-util #:tui-display-string #:tui-output #:tui-window) 3 (:export #:rows #:columns #:column-width #:item #:uses-display-strings 4 #:row-scroll #:column-scroll #:make-grid #:draw)) 3 (:export #:rows #:header-rows #:columns #:column-width #:item 4 #:uses-display-strings #:row-scroll #:column-scroll #:make-grid 5 #:draw)) -
main/grid/test.lisp
r55 r56 10 10 11 11 (defmethod rows ((gd test)) 10) 12 13 (defmethod header-rows ((gd test)) 14 1) 12 15 13 16 (defmethod columns ((gd test)) 10) … … 41 44 (clear screen) 42 45 (with-subwindow (window screen 5 16 0 0) 43 (let ((grid (make-grid window data :header-columns 1 :header-rows 1)))46 (let ((grid (make-grid window data :header-columns 1))) 44 47 (flet ((try (i) 45 48 (setf (row-scroll grid) i) … … 57 60 (try 99)))) 58 61 (clear screen) 59 (let ((grid (make-grid screen data :header-columns 1 :header-rows 1)))62 (let ((grid (make-grid screen data :header-columns 1))) 60 63 (draw grid) 61 64 (read-key screen)))))
Note: See TracChangeset
for help on using the changeset viewer.
