aboutsummaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorcolin <colin@cicadas.surf>2024-12-14 08:36:23 -0800
committercolin <colin@cicadas.surf>2024-12-14 08:36:23 -0800
commit3a2217263d581be9a7f629b10d75aa8e3d581890 (patch)
tree23f5f0a5449a06473aba2ec7914a3c2193823a10 /gui
parent03cdbb6a15e130a012377ab8d54074b6864e3480 (diff)
parent8a51ba81c7df6b0b6dab7cf4b35b5ca084b653ba (diff)
Merge branch 'refactor-with-def'
Diffstat (limited to 'gui')
-rw-r--r--gui/button.lisp23
-rw-r--r--gui/menus.lisp24
2 files changed, 29 insertions, 18 deletions
diff --git a/gui/button.lisp b/gui/button.lisp
index b4a41e9..bebea08 100644
--- a/gui/button.lisp
+++ b/gui/button.lisp
@@ -2,14 +2,21 @@
(in-package #:wheelwork)
-(defclass/std button (unit interactive)
- ((up down :with
- :std (error "UP and DOWN lots are required")
- :doc "Any affine renderable unit")
- (bg :with)
- (on-press on-release :with :doc "Function accepting the button."))
- (:documentation "A basic button class. The UP and DOWN slots should
- be filled with renderable objects having the same size."))
+(def:class button (unit interactive)
+ ((up "Image when button is up")
+ (down "Image when button is down")
+ :required :prefix :type unit)
+ ((bg "optional background image")
+ :prefix
+ :type (or null unit)
+ :initform nil)
+ (on-press
+ on-release
+ :prefix
+ :type function
+ :documentation "Function accepting the BUTTON instance.")
+
+ :documentation "Basic button. UP and DOWN should be the same size.")
(defhandler button-released
(on-mouseup ()
diff --git a/gui/menus.lisp b/gui/menus.lisp
index 25abd7b..a477dd9 100644
--- a/gui/menus.lisp
+++ b/gui/menus.lisp
@@ -2,12 +2,13 @@
(in-package :wheelwork)
-(defclass/std menu (unit interactive)
- ((items :with :std nil
- :doc "A list of interactive units")
- (focus :with :std nil
- :doc "The item that is focused in this menu, if any.")
- (region :std (error "Menus require an explicit region"))))
+(def:class menu (unit interactive)
+ ((items "list of interactive units in the menu")
+ :prefix :type list :initform nil)
+ ((focus "Object of menu with current focus.")
+ :prefix :type (or null unit) :initform nil)
+ ((region "Region where menu is displayed.")
+ :required :type region))
(defmethod cleanup :after ((menu menu))
(loop for item in (menu-items menu) do (cleanup item)))
@@ -85,10 +86,13 @@
(render o)))
-(defclass/std vscroller (menu)
- ((scroll-speed :std 1)
- (vert-scroll :std 0
- :doc "Vertical distance items have been displaced.")))
+(def:class vscroller (menu)
+ (scroll-speed :type fixnum :initform 1)
+ (vert-scroll
+ :type fixnum
+ :initform 0
+ :documentation "Vertical distance items have been displaced."))
+
(defmethod (setf vert-scroll) :after (val (vs vscroller))
(loop