60 lines
1.5 KiB
Racket
60 lines
1.5 KiB
Racket
#lang racket
|
|
|
|
(require racket/gui
|
|
"gui.rkt"
|
|
simple-ini/class
|
|
racket-sound
|
|
racket-webview
|
|
racket/runtime-path
|
|
"utils.rkt"
|
|
net/uri-codec
|
|
)
|
|
|
|
(provide run-rktplayer)
|
|
|
|
(define-runtime-path rkt-gui-dir "gui")
|
|
|
|
(define log-file (build-path (find-system-path 'home-dir) ".rktplayer.log"))
|
|
(sl-log-to-file log-file)
|
|
|
|
(displayln (format "Logging to file ~a" log-file))
|
|
|
|
|
|
(define (my-file-getter url)
|
|
(dbg-rktplayer "my-file-getter - url = ~a" url)
|
|
(when (string-prefix? url "/")
|
|
(set! url (substring url 1)))
|
|
(if (string-prefix? url "get-image")
|
|
(let* ((str (uri-decode url))
|
|
(idx (string-find str "?")))
|
|
(set! str (substring str (+ idx 1)))
|
|
(set! idx (string-find str "&"))
|
|
(set! str (substring str 0 idx))
|
|
(dbg-rktplayer "returning file ~a" str)
|
|
(build-path str)
|
|
)
|
|
(build-path rkt-gui-dir url)
|
|
)
|
|
)
|
|
|
|
(define (run)
|
|
(let* ((ini (new ini% [file 'rktplayer]))
|
|
(context (new wv-context%
|
|
[base-path rkt-gui-dir]
|
|
[ini ini]
|
|
[file-getter my-file-getter]
|
|
))
|
|
(window (new rktplayer% [wv-context context]))
|
|
)
|
|
;(send window devtools)
|
|
(let ((sem (make-semaphore)))
|
|
(send window on-quit (lambda () (semaphore-post sem)))
|
|
sem)
|
|
)
|
|
)
|
|
|
|
(define (run-rktplayer)
|
|
(let ((sem (run)))
|
|
(semaphore-wait sem)))
|
|
|