root/widgets/menu.r

Revision 112, 1.4 kB (checked in by ashley, 9 months ago)

Added pill.r
Scroller fixes
Major color / theme management changes (in progress)

Line 
1menu: make rebface [
2        tip:    {
3                USAGE:
4                        menu data ["Item-1" ["Choice 1" [print "1"] "Choice 2" [print "2"]] "Item-2" []]
5
6                DESCRIPTION:
7                        Simple one-level text-only menu system.
8        }
9        size:   100x5
10        pane:   []
11        color:  colors/outline-light
12        rebind: make function! [] [color: colors/outline-light]
13        init:   make function! [/local item item-offset] [
14                item-offset: 2x0
15                foreach [label block] data [
16                        insert tail pane make subface [
17                                offset: item-offset
18                                size:   as-pair 1 sizes/line
19                                text:   label
20                                data:   block
21                                font:   make default-font [align: 'center]
22                                para:   default-para
23                                feel:   make default-feel [
24                                        over: make function! [face act pos] [
25                                                either act [select-face face] [deselect-face face]
26                                        ]
27                                        engage: make function! [face act event] [
28                                                if act = 'up [
29                                                        ;       evaluate block associated with choice
30                                                        do select face/data choose face/parent-face face/options face/parent-face/offset + face/offset + as-pair 0 face/size/y extract face/data 2
31                                                        deselect-face face
32                                                ]
33                                        ]
34                                ]
35                        ]
36                        item: last pane
37                        item/options: item/size/x: sizes/line + first size-text item    ; set item label width
38                        item-offset/x: item-offset/x + item/size/x      ; set offset for next item label
39                        ;       get max sub-menu size
40                        foreach i extract item/data 2 [
41                                default-text/text: i
42                                item/options: max item/options sizes/cell + first size-text default-text
43                        ]
44                ]
45                data: first pane
46        ]
47]
Note: See TracBrowser for help on using the browser.