] [
pick rot >r >r call dup r> r> set-hash
] ifte* ; inline
+
+: ?hash ( key hash/f -- value/f )
+ dup [ hash ] [ 2drop f ] ifte ;
+
+: ?set-hash ( value key hash/f -- hash )
+ [ 1 <hashtable> ] unless* [ set-hash ] keep ;
IN: gadgets
USING: generic io kernel listener math namespaces styles threads ;
+SYMBOL: stack-display
+
+: <stack-display>
+ ;
+
: init-world
global [
<world> world set
<plain-gadget> add-layer
- <pane> dup
-
- <scroller> "Stack display goes here" <label> 3/4 <y-splitter> add-layer
-
- [ [ clear print-banner listener ] with-stream ] in-thread
+ <pane> dup pane set <scroller>
+ <pane> dup stack-display set <scroller>
+ 3/4 <y-splitter> add-layer
- dup request-focus
+ [ pane get [ clear print-banner listener ] with-stream ] in-thread
- pane set
+ pane get request-focus
] bind ;
SYMBOL: first-time
{ 1 0 0 } <splitter> ;
: splitter-part ( splitter -- vec )
- dup splitter-split swap shape-dim n*v divider-size 1/2 v*n v- ;
+ dup splitter-split swap shape-dim
+ n*v divider-size 1/2 v*n v- ;
: splitter-layout ( splitter -- [ a b c ] )
[
dup splitter-part ,
divider-size ,
- dup shape-dim swap splitter-part v- ,
+ dup shape-dim divider-size v- swap splitter-part v- ,
] make-list ;
M: splitter layout* ( splitter -- )