Add 'Inspect model' operation

ui.tools.traceback: use new UI inspector
db4
Slava Pestov 2009-02-05 04:00:27 -06:00
parent e74f891662
commit 24b7437ff7
5 changed files with 23 additions and 26 deletions

View File

@ -52,15 +52,15 @@ PRIVATE>
M: tuple error. describe ;
: namestack. ( seq -- )
: vars-in-scope ( seq -- alist )
[ [ global eq? not ] filter [ keys ] gather ] keep
'[ dup _ assoc-stack ] H{ } map>assoc describe ;
'[ dup _ assoc-stack ] H{ } map>assoc ;
: .vars ( -- )
namestack namestack. ;
namestack vars-in-scope describe ;
: :vars ( -- )
error-continuation get name>> namestack. ;
error-continuation get name>> vars-in-scope describe ;
SYMBOL: me

View File

@ -65,10 +65,10 @@ M: hashtable make-slot-descriptions
inspector-renderer >>renderer
monospace-font >>font ;
: <inspector-gadget> ( obj -- gadget )
: <inspector-gadget> ( model -- gadget )
vertical inspector-gadget new-track
add-toolbar
swap <model> >>model
swap >>model
dup model>> <inspector-table> >>table
dup model>> <summary-gadget> "Object" <labelled-gadget> f track-add
dup table>> <scroller> "Contents" <labelled-gadget> 1 track-add ;
@ -112,5 +112,8 @@ inspector-gadget "multi-touch" f {
{ up-action com-refresh }
} define-command-map
: inspect-model ( model -- )
<inspector-gadget> "Inspector" open-status-window ;
: inspector ( obj -- )
<inspector-gadget> "Inspector" open-status-window ;
<model> inspect-model ;

View File

@ -9,7 +9,7 @@ compiler.units accessors vocabs.parser macros.expander ui
ui.tools.browser ui.tools.listener ui.tools.listener.completion
ui.tools.profiler ui.tools.inspector ui.tools.traceback
ui.commands ui.gadgets.editors ui.gestures ui.operations
ui.tools.deploy ;
ui.tools.deploy models ;
IN: ui.tools.operations
V{ } clone operations set-global
@ -35,8 +35,12 @@ V{ } clone operations set-global
[ drop t ] \ com-unparse H{ } define-operation
! Input
! Models
[ model? ] \ inspect-model H{
{ +primary+ t }
} define-operation
! Input
: com-input ( obj -- ) string>> listener-input ;
[ input? ] \ com-input H{

View File

@ -1,8 +1,8 @@
! Copyright (C) 2006, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: memory system kernel tools.vocabs ui.tools.operations
ui.tools.listener ui.tools.browser ui.tools.common ui.commands
ui.gestures ui ;
ui.tools.listener ui.tools.browser ui.tools.common
ui.tools.walker ui.commands ui.gestures ui ;
IN: ui.tools
: main ( -- )

View File

@ -3,8 +3,9 @@
USING: accessors continuations kernel models namespaces
prettyprint ui 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.tools.inspector
ui.gestures sequences hashtables inspector ;
ui.gadgets.status-bar ui.gadgets.scrollers
ui.gestures sequences inspector models.filter ;
QUALIFIED-WITH: ui.tools.inspector i
IN: ui.tools.traceback
: <callstack-display> ( model -- gadget )
@ -37,25 +38,14 @@ M: traceback-gadget pref-dim* drop { 550 600 } ;
add-toolbar ;
: <namestack-display> ( model -- gadget )
[ [ name>> namestack. ] when* ]
<pane-control> ;
: <variables-gadget> ( model -- gadget )
<namestack-display>
<limited-scroller>
{ 400 400 } >>min-dim
{ 400 400 } >>max-dim ;
: variables ( traceback -- )
model>> <variables-gadget>
"Dynamic variables" open-status-window ;
model>> [ dup [ name>> vars-in-scope ] when ] <filter> i:inspect-model ;
: traceback-window ( continuation -- )
<model> <traceback-gadget> "Traceback" open-status-window ;
: inspect-continuation ( traceback -- )
control-value inspector ;
control-value i:inspector ;
traceback-gadget "toolbar" f {
{ T{ key-down f f "v" } variables }