diff --git a/racket-webview-downloader.rkt b/racket-webview-downloader.rkt index 5ecebca..81449be 100644 --- a/racket-webview-downloader.rkt +++ b/racket-webview-downloader.rkt @@ -12,6 +12,7 @@ ) (provide download-racket-webview-qt + racket-webview-qt-clear-download! racket-webview-qt-version racket-webview-qt-directory racket-webview-qt-is-available? @@ -120,6 +121,11 @@ (file->value version-file) #f)) + +(define (racket-webview-qt-clear-download!) + (when (file-exists? version-file) + (delete-file version-file))) + (define (racket-webview-qt-is-downloadable?) (with-handlers ([exn:fail? (λ (e) #f)]) (let ((in (download-port rkt-download-url))) diff --git a/racket-webview-qt.rkt b/racket-webview-qt.rkt index 61fee48..126ad9a 100644 --- a/racket-webview-qt.rkt +++ b/racket-webview-qt.rkt @@ -37,6 +37,7 @@ rkt-webview-minimize rkt-webview-window-state rkt-webview-set-title! + rkt-webview-set-icon! rkt-webview-present rkt-webview-exit rkt-webview-valid? @@ -425,6 +426,11 @@ (define-rktwebview rkt_webview_set_title (_fun _int _string/utf-8 -> _rkt_result_t)) +;RKTWEBVIEW_QT_EXPORT result_t rkt_webview_set_icon(rktwebview_t wv, const char *icon-file); +(define-rktwebview rkt_webview_set_icon + (_fun _int _string/utf-8 -> _rkt_result_t)) + + ;RKTWEBVIEW_QT_EXPORT rkt_js_result_t *rkt_webview_choose_dir(rktwebview_t w, const char *title, const char *base_dir); (define-rktwebview rkt_webview_choose_dir (_fun _int _string/utf-8 _string/utf-8 -> _rkt_result_t)) @@ -648,6 +654,9 @@ (define (rkt-webview-set-title! wv title) (rkt_webview_set_title (rkt-wv-win wv) title)) +(define (rkt-webview-set-icon! wv icon-file) + (rkt_webview_set_icon (rkt-wv-win wv) icon-file)) + (define (rkt-webview-run-js wv js) (rkt_webview_run_js (rkt-wv-win wv) js)) diff --git a/racket-webview.rkt b/racket-webview.rkt index 98409b6..cb9a920 100644 --- a/racket-webview.rkt +++ b/racket-webview.rkt @@ -48,6 +48,7 @@ webview-minimize webview-window-state webview-set-title! + webview-set-icon! webview-messagebox @@ -658,6 +659,10 @@ (-> wv-win? string? symbol?) (rkt-webview-set-title! (wv-win-handle wv) title)) +(define/contract (webview-set-icon! wv icon-file) + (-> wv-win? (or/c string? path?) symbol?) + (rkt-webview-set-icon! (wv-win-handle wv) (format "~a" icon-file))) + (define/contract (webview-close wv) (-> wv-win? symbol?) (begin diff --git a/wv-window.rkt b/wv-window.rkt index ab45b9b..d1beea7 100644 --- a/wv-window.rkt +++ b/wv-window.rkt @@ -54,6 +54,7 @@ [html-path (error "html path is mandatory")] [settings (send wv-context settings (string->symbol (format "~a" html-path)))] [title "Racket Webview Window"] + [icon #f] [width #f] [height #f] [x #f] @@ -327,6 +328,9 @@ (define/public (set-title! title) (webview-set-title! wv title)) + (define/public (set-icon! icon-file) + (webview-set-icon! wv icon-file)) + (define/public (popup-menu! menu-def x y) (webview-popup-menu! wv menu-def x y) (let* ((ids (list)) @@ -468,8 +472,11 @@ event-handler #:parent wv-parent))) - ;; Set title + ;; Set title / icon (send this set-title! title) + (unless (eq? icon #f) + (send this set-icon! icon)) + ;; Move and resize window to settings (send this init-size)