;;; This is p196.lsp (defpackage #:frame-example (:use #:clim-lisp #:clim #:clim-extensions)) ;;; This is the definition of wb: (in-package #:frame-example) (define-application-frame dingus () ((pathname :initform #p"foo") (integer :initform 10) (member :initform :one)) (:panes (avv :accept-values :display-function '(accept-values-pane-displayer :displayer display-avv)) (display :application :display-function 'draw-display :display-after-commands :no-clear)) (:command-table (dingus :inherit-from (accept-values-pane)))) (defmethod draw-display ((frame dingus) stream) (with-slots (pathname integer member) frame (fresh-line stream) (present pathname 'pathname :stream stream) (write-string ", " stream) (present integer 'integer :stream stream) (write-string ", " stream) (present member '(member :one :two :three) :stream stream) (write-string "." stream))) (defmethod display-avv ((frame dingus) stream) (with-slots (pathname integer member) frame (fresh-line stream) (setq pathname (accept 'pathname :prompt "A pathname" :default pathname :stream stream)) (fresh-line stream) (setq integer (accept 'integer :prompt "An integer" :default integer :stream stream)) (fresh-line stream) (setq member (accept '(member :one :two :three) :prompt "One, Two, or Three" :default member :stream stream)) (fresh-line stream) (accept-values-command-button (stream :documentation "You wolf!") (write-string "Wolf whistle" stream) (beep)))) (defun run-dingus (port) (let ((dingus (make-application-frame 'dingus :parent port :width 400 :height 400))) (run-frame-top-level dingus)))