OO framework
This commit is contained in:
93
private/wv-element.rkt
Normal file
93
private/wv-element.rkt
Normal file
@@ -0,0 +1,93 @@
|
||||
#lang racket/base
|
||||
|
||||
(require racket/class
|
||||
"racket-webview.rkt"
|
||||
)
|
||||
|
||||
(provide wv-element%)
|
||||
|
||||
(define wv-element%
|
||||
(class object%
|
||||
(init-field window
|
||||
element-id
|
||||
)
|
||||
|
||||
(define wv (hash-ref (send window info) 'wv))
|
||||
(define callbacks (make-hash))
|
||||
|
||||
(define/public (id)
|
||||
element-id)
|
||||
|
||||
(define/public (add-event-callback! evt cb)
|
||||
(hash-set! callbacks evt cb))
|
||||
|
||||
(define/public (remove-event-callback! evt)
|
||||
(hash-remove! callbacks evt))
|
||||
|
||||
(define/public (event-callback-count)
|
||||
(hash-count callbacks))
|
||||
|
||||
(define/public (dispatch-event evt data)
|
||||
(let ((cb (hash-ref callbacks evt #f)))
|
||||
(if (eq? cb #f)
|
||||
'wv-unhandled-js-event
|
||||
(begin
|
||||
(cb this evt data)
|
||||
'wv-handled-js-event))))
|
||||
|
||||
(define/public (set-innerHTML! html)
|
||||
(webview-set-innerHTML! wv element-id html)
|
||||
this)
|
||||
|
||||
(define/public (add-class! cl)
|
||||
(webview-add-class! wv element-id cl))
|
||||
|
||||
(define/public (remove-class! cl)
|
||||
(webview-remove-class! wv element-id cl))
|
||||
|
||||
(define/public (display . d)
|
||||
(when (not (null? d))
|
||||
(let ((d* (string->symbol (format "~a" (car d)))))
|
||||
(webview-set-style! wv element-id 'display d*)))
|
||||
(webview-get-style wv element-id 'display))
|
||||
|
||||
(define/public (visibility . v)
|
||||
(when (not (null? v))
|
||||
(let ((v* (string->symbol (format "~a" (car v)))))
|
||||
(webview-set-style! wv element-id 'visibility v*)))
|
||||
(webview-get-style wv element-id 'visibility))
|
||||
|
||||
(define/public (set-style! styles)
|
||||
(webview-set-style! wv element-id styles))
|
||||
|
||||
(define/public (unset-style! styles)
|
||||
(webview-unset-style! wv element-id styles))
|
||||
|
||||
(define (set-attr! attr-entries)
|
||||
(webview-set-attr! wv element-id attr-entries))
|
||||
|
||||
(define (attr attr)
|
||||
(webview-attr wv element-id attr))
|
||||
|
||||
(define (attr/number attr)
|
||||
(webview-attr/number wv element-id attr))
|
||||
|
||||
(define (attr/symbol attr)
|
||||
(webview-attr/symbol wv element-id attr))
|
||||
|
||||
(define (attr/boolean attr)
|
||||
(webview-attr/boolean wv element-id attr))
|
||||
|
||||
(define (attr/date attr)
|
||||
(webview-attr/date wv element-id attr))
|
||||
|
||||
(define (attr/time attr)
|
||||
(webview-attr/time wv element-id attr))
|
||||
|
||||
(define (attr/datetime attr)
|
||||
(webview-attr/datetime wv element-id attr))
|
||||
|
||||
(super-new)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user