1 (in-package :lisp-on-lines
)
3 (defattribute number-attribute
(base-attribute)
8 (defattribute integer-attribute
(number-attribute)
12 (defattribute integer-attribute
(number-attribute integer-field
)
17 :default-value-predicate
(complement #'numberp
))
21 (define-layered-method (setf attribute-value
) ((value string
) object
(attribute integer-attribute
))
22 (let ((*read-eval
* nil
))
23 (unless (string= "" value
)
24 (let ((value (read-from-string value
)))
26 (setf (attribute-value object attribute
) value
))))))
30 (defattribute real-attribute
(number-attribute)
34 (define-layered-method (setf attribute-value
) ((value string
) object
(attribute real-attribute
))
35 (let ((*read-eval
* nil
))
36 (unless (string= "" value
)
37 (let ((value (read-from-string value
)))
39 (setf (attribute-value object attribute
) value
))))))
43 (defattribute currency-attribute
(real-attribute)
45 (:type-name currency
))
48 (defdisplay :in-layer editor
49 ((currency currency-attribute
) object
)
54 :name
(callback currency
)
55 :value
(format nil
"~$" (or (attribute-value object currency
) ""))))