OO framework

This commit is contained in:
2026-03-12 20:57:31 +01:00
parent 2cbf6fb98b
commit 241b52f6b1
10 changed files with 953 additions and 0 deletions

52
private/wv-input.rkt Normal file
View File

@@ -0,0 +1,52 @@
#lang racket/base
(require racket/class
"wv-element.rkt"
"racket-webview.rkt"
)
(provide wv-input/text%
wv-input/number%
wv-input/boolean%
wv-input/date%
wv-input/time%
wv-input/datetime%
wv-input/range%
wv-input/check%
wv-input/radio%
wv-input/color%)
(define-syntax mk-cl
(syntax-rules (wv-element%)
((_ cl-name setter getter)
(define cl-name
(class wv-element%
(inherit-field window
element-id)
(super-new)
(define wv (hash-ref (send window info) 'wv))
(define/public (get)
(getter wv element-id))
(define/public (set! v)
(setter wv element-id v))
)
)
)
)
)
(mk-cl wv-input/text% webview-set-value! webview-value)
(mk-cl wv-input/number% webview-set-value! webview-value/number)
(mk-cl wv-input/boolean% webview-set-value! webview-value/boolean)
(mk-cl wv-input/date% webview-set-value! webview-value/date)
(mk-cl wv-input/time% webview-set-value! webview-value/time)
(mk-cl wv-input/datetime% webview-set-value! webview-value/datetime)
(mk-cl wv-input/range% webview-set-value! webview-value/number)
(mk-cl wv-input/check% webview-set-value! webview-value/boolean)
(mk-cl wv-input/radio% webview-set-value! webview-value/boolean)
(mk-cl wv-input/color% webview-set-value! webview-value/color)