-
This commit is contained in:
@@ -68,27 +68,28 @@
|
||||
(error "menu-item's optional argument separator must be boolean?"))
|
||||
(make-ww-menu-item id title icon-file callback submenu separator))
|
||||
|
||||
(define (menu->hash menu)
|
||||
(unless (is-menu? menu)
|
||||
(error "menu->hash must be called with a menu"))
|
||||
(let* ((items (ww-menu-items menu))
|
||||
(r (map (λ (item)
|
||||
(let ((h (make-hasheq)))
|
||||
(hash-set! h 'id (format "~a" (ww-menu-item-id item)))
|
||||
(hash-set! h 'name (ww-menu-item-title item))
|
||||
(unless (eq? (ww-menu-item-icon-file item) #f)
|
||||
(hash-set! h 'icon (ww-menu-item-icon-file item)))
|
||||
(unless (eq? (ww-menu-item-submenu item) #f)
|
||||
(hash-set! h 'submenu (menu->hash (ww-menu-item-submenu item))))
|
||||
(unless (eq? (ww-menu-item-separator item) #f)
|
||||
(hash-set! h 'separator #t))
|
||||
h
|
||||
)) items))
|
||||
)
|
||||
(let ((h (make-hasheq)))
|
||||
(hash-set! h 'menu r)
|
||||
(hash-set! h 'menu-id (ww-menu-id menu))
|
||||
h)))
|
||||
(define (menu->hash menu . for-json)
|
||||
(let ((fj (if (null? for-json) #f (car for-json))))
|
||||
(unless (is-menu? menu)
|
||||
(error "menu->hash must be called with a menu"))
|
||||
(let* ((items (ww-menu-items menu))
|
||||
(r (map (λ (item)
|
||||
(let ((h (make-hasheq)))
|
||||
(hash-set! h 'id (format "~a" (ww-menu-item-id item)))
|
||||
(hash-set! h 'name (ww-menu-item-title item))
|
||||
(unless (eq? (ww-menu-item-icon-file item) #f)
|
||||
(hash-set! h 'icon (ww-menu-item-icon-file item)))
|
||||
(unless (eq? (ww-menu-item-submenu item) #f)
|
||||
(hash-set! h 'submenu (menu->hash (ww-menu-item-submenu item) fj)))
|
||||
(unless (eq? (ww-menu-item-separator item) #f)
|
||||
(hash-set! h 'separator #t))
|
||||
h
|
||||
)) items))
|
||||
)
|
||||
(let ((h (make-hasheq)))
|
||||
(hash-set! h 'menu r)
|
||||
(hash-set! h 'menu-id (if fj (format "~a" (ww-menu-id menu)) (ww-menu-id menu)))
|
||||
h))))
|
||||
|
||||
(define (menu-for-each menu cb)
|
||||
(let ((items (ww-menu-items menu)))
|
||||
@@ -109,7 +110,7 @@
|
||||
|
||||
(define (menu->json menu)
|
||||
(let ((o (open-output-string)))
|
||||
(write-json (menu->hash menu) o)
|
||||
(write-json (menu->hash menu #t) o)
|
||||
(get-output-string o)))
|
||||
|
||||
(define (find-menu-item menu id)
|
||||
|
||||
Reference in New Issue
Block a user