X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fviews.scm;h=8e2c21cf47c6f7b6a366ad272bb37bf39f8aa49e;hb=bdc03bcc2da4d01745fb542d7a7d642b888b691e;hp=b45fa91f4c24e387be36cb344b3ad6312bbd28e2;hpb=4b594802583a1a160325baba108061574d613876;p=gacela.git diff --git a/src/views.scm b/src/views.scm index b45fa91..8e2c21c 100644 --- a/src/views.scm +++ b/src/views.scm @@ -40,7 +40,10 @@ (define view-controllers-set! (record-modifier view-type 'controllers)) (define view-priority (record-accessor view-type 'priority)) -;(defmacro* view (#:key (priority 0) . elements) +(defmacro* view (#:key (priority 0) . elements) + `(let ((e (view-elements ,@elements))) + (make-view (car e) (cadr e) ,priority))) + (define-macro (view-elements . elements) (cond ((null? elements) `'(() ())) (else @@ -53,19 +56,13 @@ (cadr l))) (else l))))))) -(define* (view2 #:key (priority 0) . elements) - (let ((controllers '()) - (meshes '())) - (define (f elements) - (cond ((not (null? elements)) - (cond ((mesh? (car elements)) (set! meshes (cons (car elements) meshes))) - ((procedure? (car elements)) (set! controllers (cons (car elements) controllers)))) - (f (cdr elements))))) - (f elements) - (display controllers) - (newline) - (display meshes) - (newline))) +(define (controllers-list list controllers) + (cond ((null? controllers) + list) + ((list? (car controllers)) + (assoc-set! (controllers-list list (cdr controllers)) (caar controllers) (cadar controllers))) + (else + (assoc-set! (controllers-list list (cdr controllers)) (gensym) (car controllers))))) (define activated-views '()) @@ -119,7 +116,6 @@ (format port " ~a" x)))) (mesh-properties record)) (display ">" port)))) - (define mesh? (record-predicate mesh-type))