factor/extra/ui/tools/traceback/traceback.factor

57 lines
1.7 KiB
Factor
Raw Normal View History

! Copyright (C) 2006, 2008 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: continuations kernel models namespaces prettyprint ui
2008-02-21 02:25:59 -05:00
ui.commands ui.gadgets ui.gadgets.labelled assocs
ui.gadgets.tracks ui.gadgets.buttons ui.gadgets.panes
ui.gadgets.status-bar ui.gadgets.scrollers
ui.gestures sequences hashtables inspector ;
2007-09-20 18:09:08 -04:00
IN: ui.tools.traceback
2007-11-16 01:19:13 -05:00
: <callstack-display> ( model -- gadget )
2007-09-20 18:09:08 -04:00
[ [ continuation-call callstack. ] when* ]
2008-02-21 02:25:59 -05:00
t "Call stack" <labelled-pane> ;
2007-09-20 18:09:08 -04:00
2007-11-16 01:19:13 -05:00
: <datastack-display> ( model -- gadget )
2007-09-20 18:09:08 -04:00
[ [ continuation-data stack. ] when* ]
2008-02-21 02:25:59 -05:00
t "Data stack" <labelled-pane> ;
2007-09-20 18:09:08 -04:00
2007-11-16 01:19:13 -05:00
: <retainstack-display> ( model -- gadget )
2007-09-20 18:09:08 -04:00
[ [ continuation-retain stack. ] when* ]
2008-02-21 02:25:59 -05:00
t "Retain stack" <labelled-pane> ;
2007-09-20 18:09:08 -04:00
TUPLE: traceback-gadget ;
2008-02-21 02:25:59 -05:00
M: traceback-gadget pref-dim* drop { 550 600 } ;
2007-09-20 18:09:08 -04:00
: <traceback-gadget> ( model -- gadget )
{ 0 1 } <track> traceback-gadget construct-control [
[
[
2007-11-14 16:35:17 -05:00
g gadget-model <datastack-display> 1/2 track,
g gadget-model <retainstack-display> 1/2 track,
] { 1 0 } make-track 1/3 track,
g gadget-model <callstack-display> 2/3 track,
toolbar,
2007-09-20 18:09:08 -04:00
] with-gadget
] keep ;
: <namestack-display> ( model -- gadget )
[ [ continuation-name namestack. ] when* ]
<pane-control> ;
TUPLE: variables-gadget ;
: <variables-gadget> ( model -- gadget )
<namestack-display> <scroller>
variables-gadget construct-empty
[ set-gadget-delegate ] keep ;
M: variables-gadget pref-dim* drop { 400 400 } ;
: variables ( traceback -- )
gadget-model <variables-gadget>
"Dynamic variables" open-status-window ;
2007-09-20 18:09:08 -04:00
: traceback-window ( continuation -- )
<model> <traceback-gadget> "Traceback" open-window ;