;; w = width, h = height, f = recv (define (make-button% w h text f) (class canvas% (inherit get-dc) (define/override (on-paint) (draw-text (get-dc) text w h)) (define/override (on-event event) (if (send event button-up? 'any) (f) #f)) (define/public (set-font font) (send (get-dc) set-font font)) (define/public (set-recv f*) (set! f f*)) (define/public (set-text text*) (set! text text*) (draw-text (get-dc) text w h)) (super-instantiate ()))) (define (make-button p w h text f) (new (make-button% w h text f) (parent p) (min-width w) (min-height h) (stretchable-width #f) (stretchable-height #f))) (define (edit-button-recv b v) (send b set-recv v)) (define (edit-button-font b v) (send b set-font v)) (define (edit-button-text b v) (send b set-text v))