| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  | ! Copyright (C) 2006, 2008 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  | USING: accessors arrays ui ui.commands ui.gestures ui.gadgets | 
					
						
							| 
									
										
										
										
											2008-07-13 16:44:55 -04:00
										 |  |  |        ui.gadgets.worlds ui.gadgets.packs ui.gadgets.buttons | 
					
						
							|  |  |  |        ui.gadgets.labels ui.gadgets.panes ui.gadgets.presentations | 
					
						
							|  |  |  |        ui.gadgets.viewports ui.gadgets.lists ui.gadgets.tracks | 
					
						
							|  |  |  |        ui.gadgets.scrollers ui.gadgets.panes hashtables io kernel math | 
					
						
							|  |  |  |        models namespaces sequences sequences words continuations | 
					
						
							|  |  |  |        debugger prettyprint ui.tools.traceback help editors ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: ui.tools.debugger | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : <restart-list> ( restarts restart-hook -- gadget )
 | 
					
						
							| 
									
										
										
										
											2008-08-31 17:17:46 -04:00
										 |  |  |     [ name>> ] rot <model> <list> ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  | TUPLE: debugger < track restarts ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : <debugger-display> ( restart-list error -- gadget )
 | 
					
						
							| 
									
										
										
										
											2008-07-13 16:44:55 -04:00
										 |  |  |     <filled-pile> | 
					
						
							|  |  |  |         <pane> | 
					
						
							|  |  |  |             swapd tuck [ print-error ] with-pane | 
					
						
							|  |  |  |         add-gadget | 
					
						
							| 
									
										
										
										
											2008-07-13 16:07:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-13 16:44:55 -04:00
										 |  |  |         swap add-gadget ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : <debugger> ( error restarts restart-hook -- gadget )
 | 
					
						
							| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  |     { 0 1 } debugger new-track | 
					
						
							| 
									
										
										
										
											2008-07-24 17:16:13 -04:00
										 |  |  |         dup <toolbar> f track-add | 
					
						
							| 
									
										
										
										
											2008-07-13 16:44:55 -04:00
										 |  |  |         -rot <restart-list> >>restarts | 
					
						
							| 
									
										
										
										
											2008-07-24 17:16:13 -04:00
										 |  |  |         dup restarts>> rot <debugger-display> <scroller> 1 track-add ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-01 04:40:31 -04:00
										 |  |  | M: debugger focusable-child* restarts>> ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : debugger-window ( error -- )
 | 
					
						
							|  |  |  |     #! No restarts for the debugger window | 
					
						
							|  |  |  |     f [ drop ] <debugger> "Error" open-window ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ debugger-window ] ui-error-hook set-global
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: world-error error. | 
					
						
							|  |  |  |     "An error occurred while drawing the world " write
 | 
					
						
							| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  |     dup world>> pprint-short "." print
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "This world has been deactivated to prevent cascading errors." print
 | 
					
						
							| 
									
										
										
										
											2008-07-11 01:01:22 -04:00
										 |  |  |     error>> error. ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | debugger "gestures" f { | 
					
						
							|  |  |  |     { T{ button-down } request-focus } | 
					
						
							|  |  |  | } define-command-map | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-08 16:32:55 -04:00
										 |  |  | : com-traceback ( -- ) error-continuation get traceback-window ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | \ com-traceback H{ { +nullary+ t } } define-command | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \ :help H{ { +nullary+ t } { +listener+ t } } define-command | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-28 02:13:02 -05:00
										 |  |  | \ :edit H{ { +nullary+ t } { +listener+ t } } define-command | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | debugger "toolbar" f { | 
					
						
							|  |  |  |     { T{ key-down f f "s" } com-traceback } | 
					
						
							|  |  |  |     { T{ key-down f f "h" } :help } | 
					
						
							|  |  |  |     { T{ key-down f f "e" } :edit } | 
					
						
							|  |  |  | } define-command-map |