racket webview qt finalizer next

This commit is contained in:
2026-04-18 15:32:15 +02:00
parent 72a0c80320
commit 4a66ae23da
3 changed files with 28 additions and 12 deletions

18
gui.rkt
View File

@@ -174,7 +174,7 @@
) )
(define/public (update-tabs) (define/public (update-tabs)
(displayln (format "playlist = ~a" playlist)) (dbg-rktplayer "playlist = ~a" playlist)
(let* ((tabs (send playlist tab-count)) (let* ((tabs (send playlist tab-count))
(html "") (html "")
(tab-el (send this element 'tabs)) (tab-el (send this element 'tabs))
@@ -342,7 +342,7 @@
(send this connect-menu! 'm-select-library-dir (λ () (send this select-library))) (send this connect-menu! 'm-select-library-dir (λ () (send this select-library)))
(send this connect-menu! 'm-add-tab (λ () (send this add-tab))) (send this connect-menu! 'm-add-tab (λ () (send this add-tab)))
(displayln (format "page-loaded, playlist = ~a" playlist)) (dbg-rktplayer "page-loaded, playlist = ~a" playlist)
(send this update-tabs) (send this update-tabs)
(send this update-library) (send this update-library)
(send this update-playlist) (send this update-playlist)
@@ -532,11 +532,19 @@
(send player seek percentage) (send player seek percentage)
) )
(define quit-callback (lambda () #t))
(define/public (on-quit callback)
(set! quit-callback callback))
(define/public (quit) (define/public (quit)
(dbg-rktplayer "Quitting") (dbg-rktplayer "Quitting")
(send player quit) (send player quit)
(set! closed #t) (set! closed #t)
(send this close)) (send this close)
(quit-callback)
(exit)
)
(define/public (select-library) (define/public (select-library)
(let ((dir (send this choose-dir (let ((dir (send this choose-dir
@@ -556,13 +564,13 @@
) )
(begin (begin
(displayln "Initalizing gui") (dbg-rktplayer "Initalizing gui")
(dbg-rktplayer "ICON: ~a" (get-field icon this)) (dbg-rktplayer "ICON: ~a" (get-field icon this))
(let ((lang (send settings get 'lang 'en))) (let ((lang (send settings get 'lang 'en)))
(dbg-rktplayer "RktPlayer started, current language: ~a" lang)) (dbg-rktplayer "RktPlayer started, current language: ~a" lang))
(set! playlist (new playlist% [settings (send settings clone 'playlists)])) (set! playlist (new playlist% [settings (send settings clone 'playlists)]))
(send player set-list! playlist) (send player set-list! playlist)
(displayln (format "playlist = ~a" playlist)) (dbg-rktplayer "playlist = ~a" playlist)
(semaphore-post initialized) (semaphore-post initialized)
) )
) )

View File

@@ -5,7 +5,7 @@
racket-sound racket-sound
"utils.rkt" "utils.rkt"
racket-sprintf racket-sprintf
"keystore.rkt" keystore/class
) )
(provide track% (provide track%
@@ -165,7 +165,7 @@
[settings #f] [settings #f]
) )
(define store (new keystore% [filename "rktplayer.store"])) (define store (new keystore% [file 'rktplayer]))
(define tracks '()) (define tracks '())
(define (can-add? file) (define (can-add? file)
@@ -274,12 +274,12 @@
(let* ((entry id) (let* ((entry id)
(idx (send this tab-index entry)) (idx (send this tab-index entry))
) )
(displayln (format "entry id = ~a, ~a" entry idx)) (dbg-rktplayer "entry id = ~a, ~a" entry idx)
(if (eq? idx #f) (if (eq? idx #f)
(err-rktplayer "Cannot get tab for id ~a" entry) (err-rktplayer "Cannot get tab for id ~a" entry)
(let ((value (list (send this get-tab-name idx) (let ((value (list (send this get-tab-name idx)
(map (λ (track) (map (λ (track)
(format "~a" (send track get-file))) (send track get-file))
tracks)))) tracks))))
(send store set! entry value) (send store set! entry value)
) )
@@ -291,7 +291,7 @@
(let* ((t (tabs)) (let* ((t (tabs))
(entry (list-ref t idx)) (entry (list-ref t idx))
) )
(displayln (format "loading ~a" entry)) (dbg-rktplayer "loading ~a" entry)
(set! id entry) (set! id entry)
(set! tracks '()) (set! tracks '())
(let ((value (send store get entry (list "Default" '())))) (let ((value (send store get entry (list "Default" '()))))

View File

@@ -10,6 +10,8 @@
net/uri-codec net/uri-codec
) )
(provide run-rktplayer)
(define-runtime-path rkt-gui-dir "gui") (define-runtime-path rkt-gui-dir "gui")
(define log-file (build-path (find-system-path 'home-dir) ".rktplayer.log")) (define log-file (build-path (find-system-path 'home-dir) ".rktplayer.log"))
@@ -45,7 +47,13 @@
(window (new rktplayer% [wv-context context])) (window (new rktplayer% [wv-context context]))
) )
;(send window devtools) ;(send window devtools)
window) (let ((sem (make-semaphore)))
(send window on-quit (lambda () (semaphore-post sem)))
sem)
)
) )
;(run) (define (run-rktplayer)
(let ((sem (run)))
(semaphore-wait sem)))