1 ! Copyright (C) 2006, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: continuations kernel models namespaces prettyprint ui
4 ui.commands ui.gadgets ui.gadgets.controls ui.gadgets.labelled
5 ui.gadgets.tracks ui.gestures ;
8 : <callstack-display> ( model -- )
9 [ [ continuation-call callstack. ] when* ]
10 "Call stack" <labelled-pane> ;
12 : <datastack-display> ( model -- )
13 [ [ continuation-data stack. ] when* ]
14 "Data stack" <labelled-pane> ;
16 : <retainstack-display> ( model -- )
17 [ [ continuation-retain stack. ] when* ]
18 "Retain stack" <labelled-pane> ;
20 TUPLE: traceback-gadget ;
22 M: traceback-gadget pref-dim* drop { 300 400 } ;
24 : <traceback-gadget> ( model -- gadget )
25 { 0 1 } <track> traceback-gadget construct-control [
28 g control-model <datastack-display> 1/2 track,
29 g control-model <retainstack-display> 1/2 track,
30 ] { 1 0 } make-track 1/2 track,
31 g control-model <callstack-display> 1/2 track,
35 : traceback-window ( continuation -- )
36 <model> <traceback-gadget> "Traceback" open-window ;