-
This commit is contained in:
@@ -34,8 +34,16 @@
|
|||||||
(menu-item 'm-auto "Processes"
|
(menu-item 'm-auto "Processes"
|
||||||
#:submenu
|
#:submenu
|
||||||
(menu (menu-item 'm-start "Start counter")
|
(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")
|
(menu-item 'm-stop "Stop counter")
|
||||||
))
|
)
|
||||||
|
)
|
||||||
))
|
))
|
||||||
|
|
||||||
(define example-1-dialog%
|
(define example-1-dialog%
|
||||||
|
|||||||
2
info.rkt
2
info.rkt
@@ -1,7 +1,7 @@
|
|||||||
#lang info
|
#lang info
|
||||||
|
|
||||||
(define pkg-authors '(hnmdijkema))
|
(define pkg-authors '(hnmdijkema))
|
||||||
(define version "0.2.18")
|
(define version "0.2.19")
|
||||||
(define license 'MIT)
|
(define license 'MIT)
|
||||||
(define collection "web-racket")
|
(define collection "web-racket")
|
||||||
(define pkg-desc "web-racket - A Web Based GUI library, based on webui-wire")
|
(define pkg-desc "web-racket - A Web Based GUI library, based on webui-wire")
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
menu-set-title!
|
menu-set-title!
|
||||||
menu->json
|
menu->json
|
||||||
with-menu-item
|
with-menu-item
|
||||||
|
menu-for-each
|
||||||
|
ww-menu-item-callback
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -81,6 +83,21 @@
|
|||||||
(hash-set! h 'menu r)
|
(hash-set! h 'menu r)
|
||||||
h)))
|
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)
|
(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) o)
|
||||||
|
|||||||
@@ -609,6 +609,20 @@
|
|||||||
|
|
||||||
(define/public (popup-menu menu-def x y)
|
(define/public (popup-menu menu-def x y)
|
||||||
(ww-popup-menu win-id 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
|
; files and directories
|
||||||
|
|||||||
Reference in New Issue
Block a user