Generalize menu item ordering to datum-order

This commit is contained in:
Tony Garnock-Jones 2016-09-25 15:27:48 -04:00
parent 08dd0f16d1
commit ad177f2d74
1 changed files with 8 additions and 3 deletions

11
gui.rkt
View File

@ -1,6 +1,7 @@
#lang syndicate/actor
(require racket/set)
(require data/order)
(require (prefix-in i: 2htdp/image))
(require (prefix-in p: pict))
(require syndicate-gl/2d)
@ -111,8 +112,11 @@
(run-pop-up-menu menu-id x y x-pin y-pin release-event)))
(define (menu-item-order-key i)
(cond [(menu-item? i) (menu-item-order i)]
[(menu-separator? i) (menu-separator-order i)]))
(define v (cond [(menu-item? i) (menu-item-order i)]
[(menu-separator? i) (menu-separator-order i)]))
(if (number? v)
(exact->inexact v)
v))
(define (run-pop-up-menu menu-id pop-up-cursor-x pop-up-cursor-y x-pin y-pin release-event)
(define instance-id (list menu-id (gensym 'instance)))
@ -125,7 +129,8 @@
(define/query-set separators ($ s (menu-separator menu-id _)) s)
(define/dataflow ordered-items (sort (append (set->list (items))
(set->list (separators)))
< #:key menu-item-order-key)
(order-<? datum-order)
#:key menu-item-order-key)
#:default '())
(define/dataflow menu-table (for/list [(i (ordered-items))]
(match i