]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/tools/traceback/traceback.factor
ui.gadgets.traceback: Cleanup
[factor.git] / basis / ui / tools / traceback / traceback.factor
1 ! Copyright (C) 2006, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors continuations kernel models namespaces
4 prettyprint ui ui.commands ui.gadgets ui.gadgets.labelled assocs
5 ui.gadgets.tracks ui.gadgets.buttons ui.gadgets.panes
6 ui.gadgets.status-bar ui.gadgets.scrollers
7 ui.gestures sequences inspector models.filter ;
8 QUALIFIED-WITH: ui.tools.inspector i
9 IN: ui.tools.traceback
10
11 : <callstack-display> ( model -- gadget )
12     [ [ call>> callstack. ] when* ]
13     t "Call stack" <labelled-pane> ;
14
15 : <datastack-display> ( model -- gadget )
16     [ [ data>> stack. ] when* ]
17     t "Data stack" <labelled-pane> ;
18
19 : <retainstack-display> ( model -- gadget )
20     [ [ retain>> stack. ] when* ]
21     t "Retain stack" <labelled-pane> ;
22
23 TUPLE: traceback-gadget < track ;
24
25 M: traceback-gadget pref-dim* drop { 550 600 } ;
26
27 : <traceback-gadget> ( model -- gadget )
28     [ vertical traceback-gadget new-track ] dip
29     [ >>model ]
30     [
31         [ horizontal <track> ] dip
32         [ <datastack-display> 1/2 track-add ]
33         [ <retainstack-display> 1/2 track-add ] bi
34         1/3 track-add
35     ]
36     [ <callstack-display> 2/3 track-add ] tri
37     add-toolbar ;
38
39 : variables ( traceback -- )
40     model>> [ dup [ name>> vars-in-scope ] when ] <filter> i:inspect-model ;
41
42 : traceback-window ( continuation -- )
43     <model> <traceback-gadget> "Traceback" open-status-window ;
44
45 : inspect-continuation ( traceback -- )
46     control-value i:inspector ;
47
48 traceback-gadget "toolbar" f {
49     { T{ key-down f f "v" } variables }
50     { T{ key-down f f "n" } inspect-continuation }
51 } define-command-map