TUPLE: cairo-gadget < gadget ;
: <cairo-gadget> ( dim -- gadget )
- cairo-gadget new-gadget
+ cairo-gadget new
swap >>dim ;
M: cairo-gadget draw-gadget*
relayout ;
: new-book ( model class -- book )
- new-gadget
+ new
swap >>model ; inline
: <book> ( pages model -- book )
TUPLE: canvas < gadget dlist ;
: new-canvas ( class -- canvas )
- new-gadget black <solid> >>interior ; inline
+ new black <solid> >>interior ; inline
: delete-canvas-dlist ( canvas -- )
[ find-gl-context ]
M: baseline-gadget baseline baseline>> ;
: <baseline-gadget> ( baseline dim -- gadget )
- baseline-gadget new-gadget
+ baseline-gadget new
swap >>dim
swap >>baseline ;
M: bad-gadget pref-dim* drop { 100 100 } ;
-: <bad-gadget> ( -- gadget ) bad-gadget new-gadget ;
+: <bad-gadget> ( -- gadget ) bad-gadget new ;
: bad-gadget-test ( -- )
<bad-button> "Test 1" open-window
M: glue pref-dim* drop { 0 0 } ;
-: <glue> ( -- glue ) glue new-gadget ;
+: <glue> ( -- glue ) glue new ;
: <frame-grid> ( cols rows -- grid )
swap '[ _ [ <glue> ] replicate ] replicate ;
TUPLE: mock-gadget < gadget graft-called ungraft-called ;
: <mock-gadget> ( -- gadget )
- mock-gadget new-gadget 0 >>graft-called 0 >>ungraft-called ;
+ mock-gadget new 0 >>graft-called 0 >>ungraft-called ;
M: mock-gadget graft*
[ 1+ ] change-graft-called drop ;
: nth-gadget ( n gadget -- child ) children>> nth ;
-: new-gadget ( class -- gadget ) new ; inline
-
: <gadget> ( -- gadget )
- gadget new-gadget ;
+ gadget new ;
: control-value ( control -- value )
model>> value>> ;
TUPLE: glass < gadget visible-rect owner ;
: <glass> ( owner child visible-rect -- glass )
- glass new-gadget
+ glass new
swap >>visible-rect
swap add-gadget
swap >>owner ;
{ fill? initial: t } ;
: new-grid ( children class -- grid )
- new-gadget
+ new
swap [ >>grid ] [ concat add-gadgets ] bi ; inline
: <grid> ( children -- grid )
TUPLE: incremental < pack cursor ;
: <incremental> ( -- incremental )
- incremental new-gadget
+ incremental new
vertical >>orientation
{ 0 0 } >>cursor ;
sans-serif-font >>font ; inline
: new-label ( string class -- label )
- new-gadget
+ new
swap >>string
label-theme ; inline
[ [ packed-locs ] [ children>> ] bi [ (>>loc) ] 2each ] 2bi ;
: <pack> ( orientation -- pack )
- pack new-gadget
+ pack new
swap >>orientation ;
: <pile> ( -- pack ) vertical <pack> ;
bi ;
: new-pane ( input class -- pane )
- new-gadget
+ new
swap >>input
1 >>fill
vertical >>orientation
TUPLE: fake-break < gadget ;
-: <fake-break> ( -- gadget ) fake-break new-gadget { 5 5 } >>dim ;
+: <fake-break> ( -- gadget ) fake-break new { 5 5 } >>dim ;
INSTANCE: fake-break word-break
TUPLE: paragraph < gadget margin ;
: <paragraph> ( margin -- gadget )
- paragraph new-gadget
+ paragraph new
horizontal >>orientation
swap >>margin ;
} set-gestures
: <elevator> ( vector -- elevator )
- elevator new-gadget
+ elevator new
swap >>orientation ;
: thumb-loc ( slider -- loc )
TUPLE: focusing < gadget ;
: <focusing>
- focusing new-gadget ;
+ focusing new ;
TUPLE: focus-test < gadget ;
: <focus-test>
- focus-test new-gadget
+ focus-test new
dup <focusing> add-gadget drop ;
M: focus-test focusable-child* gadget-child ;
TUPLE: wrapper < gadget ;
: new-wrapper ( child class -- wrapper )
- new-gadget swap add-gadget ; inline
+ new swap add-gadget ; inline
: <wrapper> ( child -- wrapper ) wrapper new-wrapper ;
} define-command-map
: <deploy-gadget> ( vocab -- gadget )
- deploy-gadget new-gadget
+ deploy-gadget new
over >>vocab
vertical >>orientation
swap <deploy-settings> >>settings
USING: help.markup help.syntax strings quotations debugger
namespaces ui.backend ui.gadgets ui.gadgets.worlds
ui.gadgets.tracks ui.gadgets.packs ui.gadgets.grids
-ui.gadgets.private math.rectangles colors ui.text fonts ;
+ui.gadgets.private math.rectangles colors ui.text fonts
+kernel ;
IN: ui
HELP: windows
$nl
"Bare gadgets can be constructed directly, which is useful if all you need is a custom appearance with no further behavior (see " { $link "ui-pen-protocol" } "):"
{ $subsection <gadget> }
-"New gadgets are defined as subclasses of an existing gadget type, perhaps even " { $link gadget } " itself. A parametrized constructor should be used to construct subclasses:"
-{ $subsection new-gadget }
+"New gadgets are defined as subclasses of an existing gadget type, perhaps even " { $link gadget } " itself. Direct subclasses of " { $link gadget } " can be constructed using " { $link new } ", however some subclasses may define their own parametrized constructors (see " { $link "parametrized-constructors" } ")."
+$nl
"Further topics:"
{ $subsection "ui-gestures" }
{ $subsection "ui-paint" }
pov-polygons [ add-pov-gadget ] assoc-map >>pov ;
: <axis-gadget> ( -- gadget )
- axis-gadget new-gadget
+ axis-gadget new
add-pov-gadgets
black <indicator-gadget> [ >>z-indicator ] [ add-gadget ] bi
red <indicator-gadget> [ >>indicator ] [ add-gadget ] bi
[ (add-button-gadgets) ] 2keep ;
: <joystick-demo-gadget> ( controller -- gadget )
- joystick-demo-gadget new-gadget
+ joystick-demo-gadget new
{ 0 1 } >>orientation
swap add-controller-label
<shelf> add-axis-gadget add-raxis-gadget add-gadget
[ >>keys ] tri ;
: <key-caps-gadget> ( -- gadget )
- key-caps-gadget new-gadget
+ key-caps-gadget new
add-keys-gadgets ;
M: key-caps-gadget pref-dim* drop KEYBOARD-SIZE ;
: height 256 ;
: <nehe2-gadget> ( -- gadget )
- nehe2-gadget new-gadget ;
+ nehe2-gadget new ;
M: nehe2-gadget pref-dim* ( gadget -- dim )
drop width height 2array ;
: height 256 ;
: <nehe3-gadget> ( -- gadget )
- nehe3-gadget new-gadget ;
+ nehe3-gadget new ;
M: nehe3-gadget pref-dim* ( gadget -- dim )
drop width height 2array ;
: redraw-interval ( -- dt ) 10 milliseconds ;
: <nehe4-gadget> ( -- gadget )
- nehe4-gadget new-gadget
+ nehe4-gadget new
0.0 >>rtri
0.0 >>rquad ;
: redraw-interval ( -- dt ) 10 milliseconds ;\r
\r
: <nehe5-gadget> ( -- gadget )\r
- nehe5-gadget new-gadget\r
+ nehe5-gadget new\r
0.0 >>rtri\r
0.0 >>rquad ;\r
\r
TUPLE: demo-gadget < gadget yaw pitch distance ;
: new-demo-gadget ( yaw pitch distance class -- gadget )
- new-gadget
+ new
swap >>distance
swap >>pitch
swap >>yaw ;
TUPLE: tetris-gadget < gadget { tetris tetris } { alarm } ;
: <tetris-gadget> ( tetris -- gadget )
- tetris-gadget new-gadget swap >>tetris ;
+ tetris-gadget new swap >>tetris ;
M: tetris-gadget pref-dim* drop { 200 400 } ;