]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/tools/button-list/button-list.factor
07ad1a2ccca5a1fad6d8ce600db73061feec7c08
[factor.git] / basis / ui / tools / button-list / button-list.factor
1 ! Copyright (C) 2021 Kevin Cope.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays assocs classes kernel math.rectangles 
4 models models.arrow namespaces sequences ui ui.gadgets
5 ui.gadgets.buttons ui.gadgets.glass ui.gadgets.labeled 
6 ui.gadgets.presentations ui.gadgets.search-tables
7 ui.gadgets.tables ui.gadgets.wrappers ui.gestures ui.theme 
8 ui.tools.browser.popups ui.tools.common ;
9 FROM: ui.gadgets.wrappers => wrapper ;
10 IN: ui.tools.button-list
11
12 TUPLE: button-list-popup < wrapper ;
13
14 : <active-buttons-table> ( model -- table )
15     [ keys [ ">" swap 2array ] map ] <arrow> trivial-renderer [ second ] <search-table> 
16     dup table>>
17         [ second active-buttons get at invoke-primary ] >>action
18         [ hide-glass ] >>hook
19         t >>selection-required?
20         10 >>min-rows
21         10 >>max-rows
22         30 >>min-cols
23         30 >>max-cols
24     drop
25     ;
26
27 : <active-buttons-popup> ( model title -- gadget )
28     [ <active-buttons-table> white-interior ] dip
29     popup-color <framed-labeled-gadget> button-list-popup new-wrapper ;
30
31 button-list-popup H{
32     { T{ key-down f f "ESC" } [ hide-glass ] }
33 } set-gestures
34
35 : show-active-buttons-popup ( tool -- )
36     active-buttons get <model> "Active Buttons" <active-buttons-popup>
37     [ hand-loc get-global point>rect show-glass ] [ request-focus ] bi ; inline
38