: button-theme ( button -- )
dup { 216 216 216 } background set-paint-prop
dup f reverse-video set-paint-prop
- << solid f >> interior set-paint-prop ;
+ << solid >> interior set-paint-prop ;
: roll-button-theme ( button -- )
dup f reverse-video set-paint-prop
<scroller> over add-center ;
: make-presentations ( seq -- seq )
- [ <object-presentation> ] map ;
+ [ [ unparse-short <label> ] keep <object-button> ] map ;
: present-stack ( seq title display -- )
[ display-title set-label-text ] keep
USING: gadgets gadgets-borders gadgets-buttons gadgets-layouts
gadgets-labels generic kernel lists math namespaces sequences ;
+: retarget-drag ( -- )
+ hand [ rect-loc world get pick-up ] keep
+ 2dup hand-clicked eq? [
+ 2drop
+ ] [
+ [ set-hand-clicked ] keep update-hand
+ ] ifte ;
+
: menu-actions ( glass -- )
+ dup [ drop retarget-drag ] [ drag 1 ] set-action
[ drop hide-glass ] [ button-down 1 ] set-action ;
: fit-bounds ( loc dim max -- loc )
: show-menu ( menu -- )
dup show-glass
dup menu-loc swap set-rect-loc
- world get world-glass menu-actions ;
+ world get world-glass dup menu-actions
+ hand set-hand-clicked ;
: menu-items ( assoc -- pile )
#! Given an association list mapping labels to quotations.
<pile> 1 over set-pack-fill [ add-gadgets ] keep ;
: menu-theme ( menu -- )
- << solid f >> interior set-paint-prop ;
+ << solid >> interior set-paint-prop ;
: <menu> ( assoc -- gadget )
#! Given an association list mapping labels to quotations.
: command-menu ( presented -- menu )
dup applicable
[ [ third command-quot ] keep second swons ] map-with
- <menu> ;
+ <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 ;
+
: init-commands ( gadget -- gadget )
- dup presented paint-prop [
- [
- \ drop ,
- literalize ,
- [ command-menu show-menu ] %
- ] [ ] make
- <roll-button>
- ] when* ;
+ dup presented paint-prop [ <object-button> ] when* ;
: <styled-label> ( style text -- label )
<label> swap dup [ alist>hash ] when over set-gadget-paint ;
gadget pick assoc dup
[ 2nip ] [ drop <styled-label> init-commands ] ifte ;
-: <object-presentation> ( object -- gadget )
- dup presented swons unit swap unparse-short <presentation> ;
-
: gadget. ( gadget -- )
gadget swons unit
"This stream does not support live gadgets"