This commit is contained in:
2026-02-19 17:23:52 +01:00
parent 9974a598dc
commit 12758d83e0

View File

@@ -68,7 +68,8 @@
(error "menu-item's optional argument separator must be boolean?")) (error "menu-item's optional argument separator must be boolean?"))
(make-ww-menu-item id title icon-file callback submenu separator)) (make-ww-menu-item id title icon-file callback submenu separator))
(define (menu->hash menu) (define (menu->hash menu . for-json)
(let ((fj (if (null? for-json) #f (car for-json))))
(unless (is-menu? menu) (unless (is-menu? menu)
(error "menu->hash must be called with a menu")) (error "menu->hash must be called with a menu"))
(let* ((items (ww-menu-items menu)) (let* ((items (ww-menu-items menu))
@@ -79,7 +80,7 @@
(unless (eq? (ww-menu-item-icon-file item) #f) (unless (eq? (ww-menu-item-icon-file item) #f)
(hash-set! h 'icon (ww-menu-item-icon-file item))) (hash-set! h 'icon (ww-menu-item-icon-file item)))
(unless (eq? (ww-menu-item-submenu item) #f) (unless (eq? (ww-menu-item-submenu item) #f)
(hash-set! h 'submenu (menu->hash (ww-menu-item-submenu item)))) (hash-set! h 'submenu (menu->hash (ww-menu-item-submenu item) fj)))
(unless (eq? (ww-menu-item-separator item) #f) (unless (eq? (ww-menu-item-separator item) #f)
(hash-set! h 'separator #t)) (hash-set! h 'separator #t))
h h
@@ -87,8 +88,8 @@
) )
(let ((h (make-hasheq))) (let ((h (make-hasheq)))
(hash-set! h 'menu r) (hash-set! h 'menu r)
(hash-set! h 'menu-id (ww-menu-id menu)) (hash-set! h 'menu-id (if fj (format "~a" (ww-menu-id menu)) (ww-menu-id menu)))
h))) h))))
(define (menu-for-each menu cb) (define (menu-for-each menu cb)
(let ((items (ww-menu-items menu))) (let ((items (ww-menu-items menu)))
@@ -109,7 +110,7 @@
(define (menu->json menu) (define (menu->json menu)
(let ((o (open-output-string))) (let ((o (open-output-string)))
(write-json (menu->hash menu) o) (write-json (menu->hash menu #t) o)
(get-output-string o))) (get-output-string o)))
(define (find-menu-item menu id) (define (find-menu-item menu id)