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

View File

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

View File

@@ -10,6 +10,8 @@
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"))
@@ -45,7 +47,13 @@
(window (new rktplayer% [wv-context context]))
)
;(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)))