This commit is contained in:
2026-02-19 14:49:31 +01:00
parent bb3d4ead51
commit 5a4f9a3334
4 changed files with 41 additions and 2 deletions

View File

@@ -34,8 +34,16 @@
(menu-item 'm-auto "Processes"
#:submenu
(menu (menu-item 'm-start "Start counter")
(menu-item 'm-sub "Submenu"
#:submenu
(menu (menu-item 'm-sub1 "Submenu 1")
(menu-item 'm-sub2 "Submenu 2")
(menu-item 'm-sub3 "Submenu 3")
)
)
(menu-item 'm-stop "Stop counter")
))
)
)
))
(define example-1-dialog%

View File

@@ -1,7 +1,7 @@
#lang info
(define pkg-authors '(hnmdijkema))
(define version "0.2.18")
(define version "0.2.19")
(define license 'MIT)
(define collection "web-racket")
(define pkg-desc "web-racket - A Web Based GUI library, based on webui-wire")

View File

@@ -10,6 +10,8 @@
menu-set-title!
menu->json
with-menu-item
menu-for-each
ww-menu-item-callback
)
@@ -81,6 +83,21 @@
(hash-set! h 'menu r)
h)))
(define (menu-for-each menu cb)
(let ((items (ww-menu-items menu)))
(letrec ((f (λ (items)
(if (null? items)
#t
(let ((item (car items)))
(let ((submenu (ww-menu-item-submenu item)))
(if (eq? submenu #f)
(cb item)
(menu-for-each submenu cb))))
)
)
))
(f items))))
(define (menu->json menu)
(let ((o (open-output-string)))
(write-json (menu->hash menu) o)

View File

@@ -609,6 +609,20 @@
(define/public (popup-menu menu-def x y)
(ww-popup-menu win-id menu-def x y)
(let* ((ids (list))
(clear-connections (λ ()
(for-each (λ (id)
(send this disconnect-menu! id))
ids))))
(menu-for-each menu-def
(λ (item)
(let ((cb (ww-menu-item-callback item))
(id (ww-menu-item-id item)))
(set! ids (cons id ids))
(send this connect-menu! id (λ ()
(clear-connections)
(cb))))))
)
)
; files and directories