: com-show-incoming-links ( browser-gadget -- )
[ usage ] "Incoming links" show-links-popup ;
-: <active-buttons-table> ( model -- table )
- [ keys [ ">" swap 2array ] map ] <arrow> trivial-renderer [ second ] <search-table>
- dup table>>
- active-buttons get '[ second _ at invoke-secondary ] >>action
- [ hide-glass ] >>hook
- t >>selection-required?
- 10 >>min-rows
- 10 >>max-rows
- 30 >>min-cols
- 30 >>max-cols drop
- ;
-
-: <active-buttons-popup> ( model title -- gadget )
- [ <active-buttons-table> white-interior ] dip
- popup-color <framed-labeled-gadget> links-popup new-wrapper ;
-
-: show-active-buttons-popup ( browser-gadget model title -- )
- <active-buttons-popup>
- [ hand-loc get-global point>rect show-glass ] [ request-focus ] bi ; inline
-
-: com-show-active-buttons ( browser-gadget -- )
- active-buttons get <model> "Active buttons" show-active-buttons-popup ;
--- /dev/null
+USING: help.markup help.syntax ui.tools.button-list ;
+IN: ui.tools.button-list
+
+HELP: show-active-buttons-popup
+{ $description "Displays a popup window for fuzzy selection of any labeled button in any window of the session." } ;
--- /dev/null
+! Copyright (C) 2021 Kevin Cope.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors arrays assocs classes kernel math.rectangles
+models models.arrow namespaces sequences ui ui.gadgets
+ui.gadgets.buttons ui.gadgets.glass ui.gadgets.labeled
+ui.gadgets.presentations ui.gadgets.search-tables
+ui.gadgets.tables ui.gadgets.wrappers ui.gestures ui.theme
+ui.tools.browser.popups ui.tools.common ;
+FROM: ui.gadgets.wrappers => wrapper ;
+IN: ui.tools.button-list
+
+TUPLE: button-list-popup < wrapper ;
+
+: <active-buttons-table> ( model -- table )
+ [ keys [ ">" swap 2array ] map ] <arrow> trivial-renderer [ second ] <search-table>
+ dup table>>
+ [ second active-buttons get at invoke-primary ] >>action
+ [ hide-glass ] >>hook
+ t >>selection-required?
+ 10 >>min-rows
+ 10 >>max-rows
+ 30 >>min-cols
+ 30 >>max-cols
+ drop
+ ;
+
+: <active-buttons-popup> ( model title -- gadget )
+ [ <active-buttons-table> white-interior ] dip
+ popup-color <framed-labeled-gadget> button-list-popup new-wrapper ;
+
+button-list-popup H{
+ { T{ key-down f f "ESC" } [ hide-glass ] }
+} set-gestures
+
+: show-active-buttons-popup ( tool -- )
+ active-buttons get <model> "Active Buttons" <active-buttons-popup>
+ [ hand-loc get-global point>rect show-glass ] [ request-focus ] bi ; inline
+
! See http://factorcode.org/license.txt for BSD license.
USING: accessors classes combinators.short-circuit kernel ui
ui.gadgets ui.gadgets.borders ui.gadgets.scrollers
-ui.gadgets.tracks ui.pens.solid ui.theme words ;
+ui.gadgets.tracks ui.pens.solid ui.theme ui.tools.button-list words ;
IN: ui.tools.common
: white-interior ( track -- track )
content-background <solid> >>interior ;
+
+: com-show-active-buttons ( tool -- )
+ show-active-buttons-popup ;
} define-command-map
tool "common" f {
+ { T{ key-down f ${ os macosx? M+ A+ ? } "t" } com-show-active-buttons }
{ T{ key-down f ${ os macosx? M+ C+ ? } "w" } close-window }
{ T{ key-down f ${ os macosx? M+ C+ ? } "q" } com-exit }
{ T{ key-down f f "F2" } refresh-all }