cli player agent added
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
#lang racket/base
|
||||
|
||||
;; SDL3 is deliberately loaded dynamically. The GUI agent keeps working
|
||||
;; without the optional Racket package and native SDL3 runtime.
|
||||
|
||||
(provide (struct-out tray-controller)
|
||||
try-make-tray-controller)
|
||||
|
||||
(struct tray-controller (update! destroy!) #:transparent)
|
||||
|
||||
(define (try-make-tray-controller show-window! quit!)
|
||||
(with-handlers ((exn:fail? (lambda (_) #f)))
|
||||
(define sdl-init! (dynamic-require 'sdl3 'sdl-init!))
|
||||
(define sdl-quit! (dynamic-require 'sdl3 'sdl-quit!))
|
||||
(define make-tray (dynamic-require 'sdl3 'make-tray))
|
||||
(define make-tray-menu (dynamic-require 'sdl3 'make-tray-menu))
|
||||
(define insert-tray-entry! (dynamic-require 'sdl3 'insert-tray-entry!))
|
||||
(define set-tray-entry-callback!
|
||||
(dynamic-require 'sdl3 'set-tray-entry-callback!))
|
||||
(define update-trays! (dynamic-require 'sdl3 'update-trays!))
|
||||
(define tray-destroy! (dynamic-require 'sdl3 'tray-destroy!))
|
||||
(sdl-init! '(video events))
|
||||
(define tray (make-tray #f "RKT Web Player Agent"))
|
||||
(define menu (make-tray-menu tray))
|
||||
(define show-entry (insert-tray-entry! menu "RKT Web Player Agent openen"))
|
||||
(insert-tray-entry! menu #f)
|
||||
(define quit-entry (insert-tray-entry! menu "Afsluiten"))
|
||||
(set-tray-entry-callback! show-entry (lambda (_) (show-window!)))
|
||||
(set-tray-entry-callback! quit-entry (lambda (_) (quit!)))
|
||||
(tray-controller
|
||||
update-trays!
|
||||
(lambda ()
|
||||
(tray-destroy! tray)
|
||||
(sdl-quit!)))))
|
||||
Reference in New Issue
Block a user