racket webview qt finalizer next
This commit is contained in:
18
gui.rkt
18
gui.rkt
@@ -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)
|
||||
)
|
||||
)
|
||||
|
||||
10
playlist.rkt
10
playlist.rkt
@@ -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" '()))))
|
||||
|
||||
@@ -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)))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user