diff --git a/info.rkt b/info.rkt index 029d5c0..a68f296 100644 --- a/info.rkt +++ b/info.rkt @@ -1,7 +1,7 @@ #lang info (define pkg-authors '(hnmdijkema)) -(define version "0.2.7") +(define version "0.2.8") (define license 'MIT) (define collection "web-racket") (define pkg-desc "web-racket - A Web Based GUI library, based on webui-wire") diff --git a/private/web-racket.rkt b/private/web-racket.rkt index 5eed899..86ad0b7 100644 --- a/private/web-racket.rkt +++ b/private/web-racket.rkt @@ -191,6 +191,9 @@ (define cb #f) (define val #f) + (define/public (value-converter v) + v) + (define/public (get) val) @@ -217,8 +220,10 @@ (super-new) (begin - (inp-set! val (ww-get-value (send this get-win-id) - (send this get-id))) + + (let ((v (ww-get-value (send this get-win-id) (send this get-id)))) + (inp-set! val (send this value-converter v))) + (send this connect 'input (λ (data) (ww-debug "WW-INPUT% 'input event:" data) (let ((js-evt (hash-ref data 'js_evt #f))) @@ -306,9 +311,9 @@ (define ww-input-range% (class ww-input% - (define/override (get) - (let ((val (super get))) - val)) + (define/override (value-converter v) + (string->number v)) + (super-new) )) diff --git a/private/web-wire.rkt b/private/web-wire.rkt index ac4f7b7..a3a70fd 100644 --- a/private/web-wire.rkt +++ b/private/web-wire.rkt @@ -899,7 +899,14 @@ ;; get value of an element (def-cmd ww-get-value value ((win-id ww-win?) - (element-id symbol-or-string?)) () -> json) + (element-id symbol-or-string?)) () -> string + => (λ (val) + ; expect :{ "result": } + (let ((e-id (format "~a:" element-id))) + (unless (string=? (substring val 0 (string-length e-id)) e-id) + (error "Unexpected for ww-get-value, result does not start with requested id")) + (ww-from-json (substring val (string-length e-id))))) + ) ;; set value of an element (def-cmd ww-set-value