factor/basis/ui/tools/browser/popups/popups.factor

54 lines
1.6 KiB
Factor
Raw Normal View History

! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2011-10-14 13:23:52 -04:00
USING: accessors arrays assocs definitions fry help kernel
2009-02-26 17:15:28 -05:00
colors.constants math.rectangles models.arrow namespaces sequences
sorting definitions.icons tools.crossref ui.gadgets ui.gadgets.glass
2009-02-17 15:26:01 -05:00
ui.gadgets.labeled ui.gadgets.scrollers ui.gadgets.tables
ui.gadgets.search-tables ui.gadgets.wrappers ui.gestures ui.operations
ui.pens.solid ui.images ;
FROM: ui.gadgets.wrappers => wrapper ;
IN: ui.tools.browser.popups
SINGLETON: link-renderer
2009-02-17 15:26:01 -05:00
M: link-renderer row-columns
drop first2 [ definition-icon <image-name> ] dip 2array ;
M: link-renderer row-value drop first ;
TUPLE: links-popup < wrapper ;
: match? ( value str -- ? )
swap second subseq? ;
: <links-table> ( model quot -- table )
2011-10-14 13:23:52 -04:00
'[ @ sort-articles ] <arrow>
link-renderer [ second ] <search-table>
[ invoke-primary-operation ] >>action
2009-02-26 17:15:28 -05:00
[ hide-glass ] >>hook
2009-02-20 21:53:08 -05:00
t >>selection-required?
10 >>min-rows
10 >>max-rows
30 >>min-cols
30 >>max-cols ;
: <links-popup> ( model quot title -- gadget )
[ <links-table> COLOR: white <solid> >>interior ] dip
<labeled-gadget> links-popup new-wrapper ;
links-popup H{
{ T{ key-down f f "ESC" } [ hide-glass ] }
} set-gestures
SLOT: model
: show-links-popup ( browser-gadget quot title -- )
[ dup model>> ] 2dip <links-popup>
[ hand-loc get-global point>rect show-glass ] [ request-focus ] bi ; inline
: com-show-outgoing-links ( browser-gadget -- )
[ uses ] "Outgoing links" show-links-popup ;
: com-show-incoming-links ( browser-gadget -- )
[ usage ] "Incoming links" show-links-popup ;