factor/library/ui/presentations.factor

70 lines
2.4 KiB
Factor
Raw Normal View History

! Copyright (C) 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: gadgets-presentations
USING: compiler gadgets gadgets-buttons gadgets-labels
gadgets-menus gadgets-panes generic hashtables inference
inspector io jedit kernel lists memory namespaces parser
prettyprint sequences styles vectors words ;
2005-07-06 03:29:42 -04:00
SYMBOL: commands
2005-08-25 15:27:38 -04:00
{ } clone commands global set-hash
2005-07-06 03:29:42 -04:00
: define-command ( class name quot -- )
3vector commands get push ;
2005-07-06 03:29:42 -04:00
: applicable ( object -- seq )
commands get [ first call ] subset-with ;
: command-quot ( presented quot -- quot )
2005-08-26 00:55:56 -04:00
[
[ swap literalize , % ] [ ] make ,
[ pane get pane-call ] %
] [ ] make ;
: command-menu ( presented -- menu )
dup applicable
[ [ third command-quot ] keep second swons ] map-with
2005-09-01 18:28:46 -04:00
<menu> show-menu ;
: <object-button> ( gadget object -- button )
[ \ drop , literalize , \ command-menu , ] [ ] make
<roll-button>
dup [ button-clicked ] [ button-down 1 ] set-action
dup [ button-update ] [ button-up 1 ] set-action ;
2005-08-26 21:42:43 -04:00
: init-commands ( gadget -- gadget )
2005-09-01 18:28:46 -04:00
dup presented paint-prop [ <object-button> ] when* ;
: <styled-label> ( style text -- label )
<label> swap dup [ alist>hash ] when over set-gadget-paint ;
: <presentation> ( style text -- presentation )
gadget pick assoc dup
2005-08-26 21:42:43 -04:00
[ 2nip ] [ drop <styled-label> init-commands ] ifte ;
2005-07-13 18:08:54 -04:00
: gadget. ( gadget -- )
gadget swons unit
"This stream does not support live gadgets"
2005-07-21 23:37:08 -04:00
swap format terpri ;
2005-07-13 18:08:54 -04:00
2005-08-21 14:40:12 -04:00
[ drop t ] "Prettyprint" [ . ] define-command
2005-07-13 18:08:54 -04:00
[ drop t ] "Inspect" [ inspect ] define-command
2005-08-26 00:55:56 -04:00
[ drop t ] "Inspect variable" [ get inspect ] define-command
[ drop t ] "Inspect references" [ references inspect ] define-command
[ drop t ] "Push on data stack" [ ] define-command
2005-07-06 03:29:42 -04:00
2005-08-26 00:55:56 -04:00
[ word? ] "See word" [ see ] define-command
[ word? ] "Word usage" [ usage . ] define-command
[ word? ] "Open in jEdit" [ jedit ] define-command
[ word? ] "Reload original source" [ reload ] define-command
[ compound? ] "Annotate with watchpoint" [ watch ] define-command
[ compound? ] "Annotate with breakpoint" [ break ] define-command
[ compound? ] "Annotate with profiling" [ profile ] define-command
[ word? ] "Compile" [ recompile ] define-command
[ word? ] "Show stack effect" [ unit infer . ] define-command
[ word? ] "Show dataflow IR" [ word-def t dataflow. ] define-command
[ word? ] "Show linear IR" [ precompile ] define-command
2005-07-06 03:29:42 -04:00
2005-08-26 00:55:56 -04:00
[ [ gadget? ] is? ] "Display gadget" [ gadget. ] define-command