Added select support.
This commit is contained in:
+41
-1
@@ -1,6 +1,7 @@
|
||||
#lang racket/base
|
||||
|
||||
(require racket/class
|
||||
xml
|
||||
"wv-element.rkt"
|
||||
"racket-webview.rkt"
|
||||
)
|
||||
@@ -14,7 +15,8 @@
|
||||
wv-input/range%
|
||||
wv-input/check%
|
||||
wv-input/radio%
|
||||
wv-input/color%)
|
||||
wv-input/color%
|
||||
wv-input/select%)
|
||||
|
||||
|
||||
(define-syntax mk-cl
|
||||
@@ -55,3 +57,41 @@
|
||||
(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)
|
||||
|
||||
(define wv-input/select%
|
||||
(class wv-element%
|
||||
(inherit-field window
|
||||
element-id)
|
||||
|
||||
(super-new)
|
||||
|
||||
(define wv (hash-ref (send window info) 'wv))
|
||||
|
||||
(define/public (get)
|
||||
(webview-value wv element-id))
|
||||
|
||||
(define/public (set! value)
|
||||
(webview-set-value! wv element-id value))
|
||||
|
||||
(define/public (set-options! options [selected #f])
|
||||
(send this
|
||||
set-innerHTML!
|
||||
(apply
|
||||
string-append
|
||||
(for/list ((option (in-list options)))
|
||||
(let ((value (car option))
|
||||
(label (cadr option)))
|
||||
(xexpr->string
|
||||
(list 'option
|
||||
(list
|
||||
(list 'value
|
||||
(format "~a" value)))
|
||||
(format "~a" label)))))))
|
||||
(when selected
|
||||
(send this set! selected)))
|
||||
|
||||
(define/public (on-change! callback-func)
|
||||
(send window bind! element-id 'change
|
||||
(λ (element event data)
|
||||
(callback-func (send this get)))))
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user