;; ctls-view.scm - (c) rohan drape, 2003-2007 (module ctls-view scheme/base (require (only-in srfi/1 iota) rsc3/rsc3 rsc3-interface/rsc3-interface "../ctl/ctl.scm" "ctl-view.scm") (provide (all-defined-out)) (define (ctls-view c rows columns offset) (let* ((n (* rows columns)) (v (make-vector n)) (p (lambda (index spec value state) (update-ctl-view (vector-ref v (- index offset)))))) (let ((w (make-window "ctls.view"))) (for-each (lambda (i) (let ((row (make-frame w #f))) (map (lambda (j) (let* ((index (+ offset j (* i columns))) (view (make-ctl-view* row (c index) index))) (vector-set! v (- index offset) view) (update-ctl-view view) (ctl-recv-add (c index) p))) (iota columns)))) (iota rows)) (window-show w)))) ;; On window deletion... ;; (for-each (lambda (i) (ctl-recv-remove (c i) p)) (iota n offset)) )