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 ; M: tuple error. describe ;
: namestack. ( seq -- ) : vars-in-scope ( seq -- alist )
[ [ global eq? not ] filter [ keys ] gather ] keep [ [ global eq? not ] filter [ keys ] gather ] keep
'[ dup _ assoc-stack ] H{ } map>assoc describe ; '[ dup _ assoc-stack ] H{ } map>assoc ;
: .vars ( -- ) : .vars ( -- )
namestack namestack. ; namestack vars-in-scope describe ;
: :vars ( -- ) : :vars ( -- )
error-continuation get name>> namestack. ; error-continuation get name>> vars-in-scope describe ;
SYMBOL: me SYMBOL: me

View File

@ -65,10 +65,10 @@ M: hashtable make-slot-descriptions
inspector-renderer >>renderer inspector-renderer >>renderer
monospace-font >>font ; monospace-font >>font ;
: <inspector-gadget> ( obj -- gadget ) : <inspector-gadget> ( model -- gadget )
vertical inspector-gadget new-track vertical inspector-gadget new-track
add-toolbar add-toolbar
swap <model> >>model swap >>model
dup model>> <inspector-table> >>table dup model>> <inspector-table> >>table
dup model>> <summary-gadget> "Object" <labelled-gadget> f track-add dup model>> <summary-gadget> "Object" <labelled-gadget> f track-add
dup table>> <scroller> "Contents" <labelled-gadget> 1 track-add ; dup table>> <scroller> "Contents" <labelled-gadget> 1 track-add ;
@ -112,5 +112,8 @@ inspector-gadget "multi-touch" f {
{ up-action com-refresh } { up-action com-refresh }
} define-command-map } define-command-map
: inspector ( obj -- ) : inspect-model ( model -- )
<inspector-gadget> "Inspector" open-status-window ; <inspector-gadget> "Inspector" open-status-window ;
: inspector ( obj -- )
<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.browser ui.tools.listener ui.tools.listener.completion
ui.tools.profiler ui.tools.inspector ui.tools.traceback ui.tools.profiler ui.tools.inspector ui.tools.traceback
ui.commands ui.gadgets.editors ui.gestures ui.operations ui.commands ui.gadgets.editors ui.gestures ui.operations
ui.tools.deploy ; ui.tools.deploy models ;
IN: ui.tools.operations IN: ui.tools.operations
V{ } clone operations set-global V{ } clone operations set-global
@ -35,8 +35,12 @@ V{ } clone operations set-global
[ drop t ] \ com-unparse H{ } define-operation [ drop t ] \ com-unparse H{ } define-operation
! Input ! Models
[ model? ] \ inspect-model H{
{ +primary+ t }
} define-operation
! Input
: com-input ( obj -- ) string>> listener-input ; : com-input ( obj -- ) string>> listener-input ;
[ input? ] \ com-input H{ [ input? ] \ com-input H{

View File

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

View File

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