;; b = button, i = state, l = texts, f = recv, w = width, h = height (define-struct clkr* (field b i l f) #:mutable) (define (make-clkr p w h l f) (let* ((b (make-button p w h (car l) #f)) (c (make-clkr* b 0 l f)) (n (length l))) (edit-button-recv b (lambda () (let* ((l (clkr*-l c)) (n (length l)) (f (clkr*-f c)) (i (clkr*-i c))) (set! i (modulo (+ i 1) n)) (edit-button-text b (list-ref l i)) (f i) (set-clkr*-i! c i)))) c)) (define (edit-clkr-texts c l) (set-clkr*-l! c l) (set-clkr*-i! c 0) (edit-button-text (clkr*-b c) (car l))) (define (edit-clkr-recv c f) (set-clkr*-f! c f)) (define (edit-clkr-font c v) (edit-button-font (clkr*-b c) v))