1 ! Copyright (C) 2006, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays assocs debugger ui.tools.workspace
4 ui.tools.operations ui.tools.traceback ui.tools.browser
5 ui.tools.inspector ui.tools.listener ui.tools.profiler
6 ui.tools.operations inspector io kernel math models namespaces
7 prettyprint quotations sequences ui ui.commands ui.gadgets
8 ui.gadgets.books ui.gadgets.buttons ui.gadgets.labelled
9 ui.gadgets.scrollers ui.gadgets.tracks ui.gadgets.worlds
10 ui.gadgets.presentations ui.gestures words vocabs.loader
11 tools.test tools.vocabs ui.gadgets.buttons ui.gadgets.status-bar
15 : <workspace-tabs> ( workspace -- tabs )
17 "tool-switching" workspace command-map commands>>
18 [ command-string ] { } assoc>map <enum> >alist
21 : <workspace-book> ( workspace -- gadget )
30 : <workspace> ( -- workspace )
31 { 0 1 } workspace new-track
33 <listener-gadget> >>listener
34 dup <workspace-book> >>book
36 dup <workspace-tabs> f track-add
37 dup book>> 1/5 track-add
38 dup listener>> 4/5 track-add
39 dup <toolbar> f track-add ;
41 : resize-workspace ( workspace -- )
42 dup sizes>> over control-value zero? [
50 M: workspace model-changed
52 dup listener>> output>> scroll>bottom
56 [ workspace-window ] ui-hook set-global
58 : com-listener ( workspace -- ) stack-display select-tool ;
60 : com-browser ( workspace -- ) browser-gadget select-tool ;
62 : com-inspector ( workspace -- ) inspector-gadget select-tool ;
64 : com-profiler ( workspace -- ) profiler-gadget select-tool ;
66 workspace "tool-switching" f {
67 { T{ key-down f { A+ } "1" } com-listener }
68 { T{ key-down f { A+ } "2" } com-browser }
69 { T{ key-down f { A+ } "3" } com-inspector }
70 { T{ key-down f { A+ } "4" } com-profiler }
73 workspace "multi-touch" f {
74 { T{ zoom-out-action } com-listener }
75 { T{ up-action } refresh-all }
79 H{ { +nullary+ t } } define-command
82 H{ { +nullary+ t } { +listener+ t } } define-command
84 workspace "workflow" f {
85 { T{ key-down f { C+ } "n" } workspace-window }
86 { T{ key-down f f "ESC" } hide-popup }
87 { T{ key-down f f "F2" } refresh-all }
91 <workspace> dup "Factor workspace" open-status-window
92 ] workspace-window-hook set-global
94 : inspect-continuation ( traceback -- )
95 control-value [ inspect ] curry call-listener ;
97 traceback-gadget "toolbar" f {
98 { T{ key-down f f "v" } variables }
99 { T{ key-down f f "n" } inspect-continuation }