Changeset main,56 for main


Ignore:
Timestamp:
11/16/2007 04:57:59 PM (19 years ago)
Author:
David Owen <dsowen@…>
branch-nick:
tui
revision id:
dsowen@fugue88.ws-20071116165759-z7bwp6amaic0blw4
Message:

Moved header-rows into the data model.

Location:
main/grid
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • main/grid/display.lisp

    r55 r56  
    55(defclass grid ()
    66  ((data :initarg :data)
    7    (header-rows :type (integer 0) :initarg :header-rows)
    87   (header-columns :type (integer 0) :initarg :header-columns)
    98   (window :initarg :window)
     
    1110   (column-scroll :type (integer 0) :initform 0 :accessor column-scroll)))
    1211
    13 (defun make-grid (window data &key (header-rows 0) (header-columns 0))
     12(defun make-grid (window data &key (header-columns 0))
    1413  (make-instance 'grid
    1514                 :data data
    16                  :header-rows header-rows
    1715                 :header-columns header-columns
    1816                 :window window))
     
    4947
    5048(defun row-split (grid row)
    51   (with-slots (header-rows) grid
    52     (saturate header-rows row)))
     49  (with-slots (data) grid
     50    (saturate (header-rows data) row)))
    5351
    5452(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)))
    5855
    5956(defun draw-header-corner-item (grid row column)
     
    8784
    8885(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))))))
    9896
    9997(defun draw (grid)
     
    113111
    114112(defmethod max-row-scroll ((grid grid))
    115   (with-slots (data header-rows window) grid
     113  (with-slots (data window) grid
    116114    (max 0 (- (rows data) (size window)))))
    117115
  • main/grid/model.lisp

    r55 r56  
    77   "Returns the number of rows of data."))
    88
    9 #|(defgeneric header-rows (grid-data)
     9(defgeneric header-rows (grid-data)
    1010  (:documentation
    1111   "Returns the number of rows that contain header data, and may be
    1212considered for locking in place during scrolling operations.  Header
    1313rows are always at the top of the grid (from row 0).")
    14   (:method (grid-data) 0))|#
     14  (:method (grid-data) 0))
    1515
    1616(defgeneric columns (grid-data)
  • main/grid/package.lisp

    r55 r56  
    11(defpackage #:grid
    22  (: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  
    1010
    1111(defmethod rows ((gd test)) 10)
     12
     13(defmethod header-rows ((gd test))
     14  1)
    1215
    1316(defmethod columns ((gd test)) 10)
     
    4144      (clear screen)
    4245      (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)))
    4447          (flet ((try (i)
    4548                   (setf (row-scroll grid) i)
     
    5760            (try 99))))
    5861      (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)))
    6063        (draw grid)
    6164        (read-key screen)))))
Note: See TracChangeset for help on using the changeset viewer.