]> gitweb.factorcode.org Git - factor.git/blob - extra/ui/tools/traceback/traceback.factor
Initial import
[factor.git] / extra / ui / tools / traceback / traceback.factor
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 ;
6 IN: ui.tools.traceback
7
8 : <callstack-display> ( model -- )
9     [ [ continuation-call callstack. ] when* ]
10     "Call stack" <labelled-pane> ;
11
12 : <datastack-display> ( model -- )
13     [ [ continuation-data stack. ] when* ]
14     "Data stack" <labelled-pane> ;
15
16 : <retainstack-display> ( model -- )
17     [ [ continuation-retain stack. ] when* ]
18     "Retain stack" <labelled-pane> ;
19
20 TUPLE: traceback-gadget ;
21
22 M: traceback-gadget pref-dim* drop { 300 400 } ;
23
24 : <traceback-gadget> ( model -- gadget )
25     { 0 1 } <track> traceback-gadget construct-control [
26         [
27             [
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,
32         ] with-gadget
33     ] keep ;
34
35 : traceback-window ( continuation -- )
36     <model> <traceback-gadget> "Traceback" open-window ;