| 
									
										
										
										
											2009-02-01 21:31:42 -05:00
										 |  |  | USING: accessors ui.gadgets ui.gadgets.private ui.gadgets.packs | 
					
						
							|  |  |  | ui.gadgets.worlds tools.test namespaces models kernel dlists deques | 
					
						
							|  |  |  | math sets math.parser ui sequences hashtables assocs io arrays | 
					
						
							| 
									
										
										
										
											2009-02-17 07:10:02 -05:00
										 |  |  | prettyprint io.streams.string math.rectangles ui.gadgets.private | 
					
						
							|  |  |  | sets generic ;
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | IN: ui.gadgets.tests | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ { 300 300 } ] | 
					
						
							|  |  |  | [ | 
					
						
							|  |  |  |     ! c contains b contains a | 
					
						
							|  |  |  |     <gadget> "a" set
 | 
					
						
							|  |  |  |     <gadget> "b" set
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  |     "b" get "a" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     <gadget> "c" set
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  |     "c" get "b" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     ! position a and b | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |     "a" get { 100 200 } >>loc drop
 | 
					
						
							|  |  |  |     "b" get { 200 100 } >>loc drop
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     ! give c a loc, it doesn't matter | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |     "c" get { -1000 23 } >>loc drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ! what is the location of a inside c? | 
					
						
							|  |  |  |     "a" get "c" get relative-loc | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <gadget> "g1" set
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g1" get { 10 10 } >>loc | 
					
						
							|  |  |  |          { 30 30 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | <gadget> "g2" set
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g2" get { 20 20 } >>loc | 
					
						
							|  |  |  |          { 50 500 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | <gadget> "g3" set
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g3" get { 100 200 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  | "g2" get "g1" get add-gadget drop
 | 
					
						
							|  |  |  | "g3" get "g2" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ { 30 30 } ] [ "g1" get screen-loc ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-05 04:28:41 -05:00
										 |  |  | [ { 30 30 } ] [ "g1" get screen-rect loc>> ] unit-test | 
					
						
							|  |  |  | [ { 30 30 } ] [ "g1" get screen-rect dim>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | [ { 20 20 } ] [ "g2" get screen-loc ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-05 04:28:41 -05:00
										 |  |  | [ { 20 20 } ] [ "g2" get screen-rect loc>> ] unit-test | 
					
						
							|  |  |  | [ { 50 180 } ] [ "g2" get screen-rect dim>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | [ { 0 0 } ] [ "g3" get screen-loc ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-05 04:28:41 -05:00
										 |  |  | [ { 0 0 } ] [ "g3" get screen-rect loc>> ] unit-test | 
					
						
							|  |  |  | [ { 100 200 } ] [ "g3" get screen-rect dim>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | <gadget> "g1" set
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g1" get { 300 300 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | <gadget> "g2" set
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  | "g1" get "g2" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g2" get { 20 20 } >>loc | 
					
						
							|  |  |  |          { 20 20 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | <gadget> "g3" set
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  | "g1" get "g3" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g3" get { 100 100 } >>loc | 
					
						
							|  |  |  |          { 20 20 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-05 04:28:41 -05:00
										 |  |  | [ t ] [ { 30 30 } "g2" get contains-point? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-05 04:28:41 -05:00
										 |  |  | [ t ] [ { 30 30 } "g1" get pick-up "g2" get eq? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ { 30 30 } "g1" get pick-up "g2" get eq? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ { 110 110 } "g1" get pick-up "g3" get eq? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <gadget> "g4" set
 | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  | "g2" get "g4" get add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  | "g4" get { 5 5 } >>loc | 
					
						
							|  |  |  |          { 1 1 } >>dim drop
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ { 25 25 } "g1" get pick-up "g4" get eq? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-11 15:52:36 -04:00
										 |  |  | TUPLE: mock-gadget < gadget graft-called ungraft-called ;
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-10 21:32:17 -04:00
										 |  |  | : <mock-gadget> ( -- gadget )
 | 
					
						
							| 
									
										
										
										
											2009-02-16 05:04:32 -05:00
										 |  |  |     mock-gadget new 0 >>graft-called 0 >>ungraft-called ;
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: mock-gadget graft* | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |     [ 1+ ] change-graft-called drop ;
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: mock-gadget ungraft* | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |     [ 1+ ] change-ungraft-called drop ;
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-05 03:19:25 -04:00
										 |  |  | ! We can't print to output-stream here because that might be a pane | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | ! stream, and our graft-queue rebinding here would be captured | 
					
						
							|  |  |  | ! by code adding children to the pane... | 
					
						
							|  |  |  | [ | 
					
						
							|  |  |  |     <dlist> \ graft-queue [ | 
					
						
							|  |  |  |         [ ] [ <mock-gadget> dup queue-graft unqueue-graft ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |         [ t ] [ graft-queue deque-empty? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |     ] with-variable
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <dlist> \ graft-queue [ | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |         [ t ] [ graft-queue deque-empty? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         <mock-gadget> "g" set
 | 
					
						
							|  |  |  |         [ ] [ "g" get queue-graft ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |         [ f ] [ graft-queue deque-empty? ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ { f t } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ "g" get graft-later ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ { f t } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ "g" get ungraft-later ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ { f f } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |         [ t ] [ graft-queue deque-empty? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ "g" get ungraft-later ] unit-test | 
					
						
							|  |  |  |         [ ] [ "g" get graft-later ] unit-test | 
					
						
							|  |  |  |         [ ] [ notify-queued ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ { t t } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |         [ t ] [ graft-queue deque-empty? ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ "g" get graft-later ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ 1 ] [ "g" get graft-called>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ "g" get ungraft-later ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ { t f } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         [ ] [ notify-queued ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         [ 1 ] [ "g" get ungraft-called>> ] unit-test | 
					
						
							|  |  |  |         [ { f f } ] [ "g" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |     ] with-variable
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  |     : add-some-children ( gadget -- gadget )
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |         3 [ | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |             <mock-gadget> over <model> >>model | 
					
						
							| 
									
										
										
										
											2008-09-27 15:36:04 -04:00
										 |  |  |             "g" get over add-gadget drop
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |             swap 1+ number>string set
 | 
					
						
							|  |  |  |         ] each ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  |     : status-flags ( -- seq )
 | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |         { "g" "1" "2" "3" } [ get graft-state>> ] map prune ;
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     : notify-combo ( ? ? -- )
 | 
					
						
							|  |  |  |         nl "===== Combo: " write 2dup 2array . nl
 | 
					
						
							|  |  |  |         <dlist> \ graft-queue [ | 
					
						
							|  |  |  |             <mock-gadget> "g" set
 | 
					
						
							|  |  |  |             [ ] [ add-some-children ] unit-test | 
					
						
							|  |  |  |             [ V{ { f f } } ] [ status-flags ] unit-test | 
					
						
							|  |  |  |             [ ] [ "g" get graft ] unit-test | 
					
						
							|  |  |  |             [ V{ { f t } } ] [ status-flags ] unit-test | 
					
						
							|  |  |  |             dup [ [ ] [ notify-queued ] unit-test ] when
 | 
					
						
							|  |  |  |             [ ] [ "g" get clear-gadget ] unit-test | 
					
						
							| 
									
										
										
										
											2008-11-16 07:57:53 -05:00
										 |  |  |             [ [ t ] [ graft-queue [ front>> ] [ back>> ] bi eq? ] unit-test ] unless
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |             [ [ ] [ notify-queued ] unit-test ] when
 | 
					
						
							|  |  |  |             [ ] [ add-some-children ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-02 02:52:22 -04:00
										 |  |  |             [ { f t } ] [ "1" get graft-state>> ] unit-test | 
					
						
							|  |  |  |             [ { f t } ] [ "2" get graft-state>> ] unit-test | 
					
						
							|  |  |  |             [ { f t } ] [ "3" get graft-state>> ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 15:06:20 -04:00
										 |  |  |             [ ] [ graft-queue [ "x" print notify ] slurp-deque ] unit-test | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  |             [ ] [ notify-queued ] unit-test | 
					
						
							|  |  |  |             [ V{ { t t } } ] [ status-flags ] unit-test | 
					
						
							|  |  |  |         ] with-variable ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     { { f f } { f t } { t f } { t t } } [ notify-combo ] assoc-each
 | 
					
						
							| 
									
										
										
										
											2008-02-15 23:20:31 -05:00
										 |  |  | ] with-string-writer print
 | 
					
						
							| 
									
										
										
										
											2007-11-16 01:19:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-26 20:54:38 -05:00
										 |  |  | \ <gadget> must-infer | 
					
						
							|  |  |  | \ unparent must-infer | 
					
						
							|  |  |  | \ add-gadget must-infer | 
					
						
							|  |  |  | \ add-gadgets must-infer | 
					
						
							|  |  |  | \ clear-gadget must-infer | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \ relayout must-infer | 
					
						
							|  |  |  | \ relayout-1 must-infer | 
					
						
							|  |  |  | \ pref-dim must-infer | 
					
						
							| 
									
										
										
										
											2009-02-09 01:49:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | \ graft* must-infer | 
					
						
							| 
									
										
										
										
											2009-02-17 07:10:02 -05:00
										 |  |  | \ ungraft* must-infer |