Plaster

common-lisp
;;;; minimal-test-case.lisp (defpackage #:minimal-test-case (:use #:cl) (:local-nicknames (#:c #:clim))) (in-package #:minimal-test-case) (c:define-application-frame test () ((%history :accessor history :initform (list))) (:menu-bar t) (:pointer-documentation t) (:panes (history :application :display-function 'display-history) (int :interactor)) (:layouts (default (c:vertically () (c:horizontally () history (c:make-pane 'c:push-button-pane :label "Press me")) (1/3 int)))) (:geometry :width 600 :height 600)) (defun display-history (frame pane) (c:draw-text* pane "History:" 0 2 :align-y :top) (multiple-value-bind (x y) (c:rectangle-size (c:sheet-region pane)) (dolist (a (history frame)) (c:draw-text* pane a x y :align-x :right :align-y :bottom) (decf y (c:text-style-height (c:medium-text-style pane) pane))))) (define-test-command (com-add-history :name t) () (push "foo" (history c:*application-frame*))) (define-test-command (com-quit :name t :menu t) () (c:frame-exit c:*application-frame*)) (defmethod c:activate-callback ((button c:push-button) (client test) gadget-id) (c:execute-frame-command client (list 'com-add-history)) (c:redisplay-frame-panes client :force-p t) ) (defun run-test (&key new-thread) (let ((frame (c:make-application-frame 'test))) (if new-thread (bt:make-thread (lambda () (c:run-frame-top-level frame))) (c:run-frame-top-level frame)) frame))