root/widgets/text-list.r

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

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

Line 
1text-list: make rebface [
2        tip:    {
3                USAGE:
4                        text-list data ["One" "Two"]
5                        text-list data ctx-rebgui/locale*/colors
6                        text-list data [1 2] [print face/selected]
7
8                DESCRIPTION:
9                        A single column list with a scroller.
10
11                OPTIONS:
12                        'multi allows multiple rows to be selected at once
13        }
14        size:           50x25
15        data:           []
16        edge:           outline-edge
17        ;       widget facets
18        redraw:         make function! [] []    ; place-holder for examine
19        selected:       make function! [] []    ; place-holder for examine
20        picked:         []
21        rows:           make function! [] [pane/rows]
22
23        select-row: make function! [
24                row [integer! none! block!]
25                /no-action
26                /local rows lines
27        ][
28                clear picked
29                if row [
30                        row: either integer? row [to block! row] [sort copy row]
31                        rows: pane/rows
32                        lines: pane/lines
33                        foreach r row [
34                                r: max 1 min rows r
35                                insert picked r
36                        ]
37                        unless no-action [action/on-click self]
38                ]
39                show self
40        ]
41        ;       init
42        init:   make function! [/local p] [
43                p: self
44                pane: make face-iterator [
45                        size:           p/size
46                        span:           either p/span [copy p/span] [none]
47                        data:           p/data
48                        options:        p/options                                               ; share options block
49                        picked:         p/picked                                                ; share picked block
50                        action:         get in p/action 'on-click               ; share action func
51                        alt-action:     get in p/action 'on-alt-click   ; share alt-action func
52                        dbl-action:     get in p/action 'on-dbl-click   ; share dbl-action func
53                ]
54                pane/init
55                ;       accessors
56                redraw: get in pane 'redraw
57                selected: get in pane 'selected
58        ]
59]
Note: See TracBrowser for help on using the browser.