97 lines
2.8 KiB
Racket
97 lines
2.8 KiB
Racket
#lang racket
|
|
|
|
(require racket-webview
|
|
racket/runtime-path
|
|
racket/gui
|
|
racket-sprintf
|
|
open-app
|
|
xml
|
|
"utils.rkt"
|
|
"music-library.rkt"
|
|
"translate.rkt"
|
|
"playlist.rkt"
|
|
"player.rkt"
|
|
)
|
|
|
|
(provide
|
|
(all-from-out racket-webview)
|
|
settings%
|
|
)
|
|
|
|
(define-runtime-path rkt-gui-dir "gui")
|
|
|
|
(define settings%
|
|
(class wv-dialog%
|
|
(init-field [log-file #f])
|
|
(inherit-field settings icon parent)
|
|
|
|
(super-new
|
|
[html-path "settings.html"]
|
|
[title "Racket Music Player - Settings"]
|
|
[icon (build-path rkt-gui-dir "rktplayer.png")]
|
|
[quit-on-close #f]
|
|
)
|
|
|
|
(define initialized #f)
|
|
(define btn-ok #f)
|
|
(define btn-cancel #f)
|
|
(define lbl-language #f)
|
|
(define lbl-name #f)
|
|
(define lbl-local-path #f)
|
|
(define lbl-host #f)
|
|
(define lbl-prefixes #f)
|
|
(define div-language #f)
|
|
(define sel-language #f)
|
|
|
|
(define cfg (send settings clone 'settings))
|
|
|
|
(define/public (set-labels)
|
|
(send btn-ok set-innerHTML! (tr 'ok))
|
|
(send btn-cancel set-innerHTML! (tr 'cancel))
|
|
(send lbl-language set-innerHTML! (tr 'language))
|
|
(send lbl-name set-innerHTML! (tr 'name))
|
|
(send lbl-local-path set-innerHTML! (tr 'local-path))
|
|
(send lbl-host set-innerHTML! (tr 'host))
|
|
(send lbl-prefixes set-innerHTML! (tr 'prefixes))
|
|
)
|
|
|
|
|
|
(define/override (page-loaded oke)
|
|
(unless initialized
|
|
(when oke
|
|
(set! initialized #t)
|
|
(set! btn-ok (send this element 'ok))
|
|
(set! btn-cancel (send this element 'cancel))
|
|
(set! lbl-language (send this element 'lbl-language))
|
|
(set! lbl-name (send this element 'lbl-name))
|
|
(set! lbl-local-path (send this element 'lbl-local-path))
|
|
(set! lbl-host (send this element 'lbl-host))
|
|
(set! lbl-prefixes (send this element 'lbl-prefixes))
|
|
(set! div-language (send this element 'language))
|
|
|
|
(send this set-labels)
|
|
|
|
(send div-language set-innerHTML! (make-select-list 'sel-lang (languages) (current-lang)))
|
|
|
|
(send this bind! 'sel-lang 'change (λ (el evt data)
|
|
(let ((lang (string->symbol
|
|
(format "~a" (hash-ref data 'value (current-lang))))))
|
|
(set-lang! lang)
|
|
(send cfg set! 'language lang)
|
|
(send this set-labels))))
|
|
|
|
(send this bind! 'ok 'click (λ args (displayln args)))
|
|
(send this bind! 'cancel 'click (λ args (displayln args)))
|
|
(send this bind! 'dev 'click (λ args (send this devtools)))
|
|
)
|
|
)
|
|
|
|
(info-rktplayer "page loaded"))
|
|
|
|
|
|
|
|
(begin
|
|
#t)
|
|
)
|
|
)
|