;;;; menus.lisp (defpackage #:ww.examples/13 (:use #:cl) (:export #:start)) (in-package :ww.examples/13) (defclass menus-demo (ww::application) ()) (defclass numbered-image (ww::image) ((n :initarg :num :reader num))) (ww:defhandler option-clicked (ww::on-mousedown (img) (format t "~a was clicked~%" (num img)))) (defmethod ww::boot ((app menus-demo)) (let ((vscroller (make-instance 'ww::vscroller :scroll-speed 10 :region (make-instance 'ww::region :left 0 :right 100 :top 250 :bottom 0)))) (loop for i to 10 for img = (make-instance 'numbered-image :num i :texture (ww:get-asset "Fezghoul.png")) do (ww::add-handler img #'option-clicked) (ww::add-menu-option vscroller img)) (ww:add-unit vscroller) (ww:refocus-on vscroller))) (defun start (&optional (scale 1.0) (side 500)) (ww:start (make-instance 'menus-demo :fps 30 :width (round (* scale side)) :height (round (* scale side)) :scale scale :title "Canvas demo" :asset-root (merge-pathnames "examples/" (asdf:system-source-directory :wheelwork)))))