92 lines
2.6 KiB
Factor
Executable File
92 lines
2.6 KiB
Factor
Executable File
! Copyright (C) 2006, 2007 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: arrays assocs debugger ui.tools.workspace
|
|
ui.tools.operations ui.tools.browser ui.tools.inspector
|
|
ui.tools.listener ui.tools.profiler ui.tools.walker
|
|
ui.tools.operations inspector io kernel math models namespaces
|
|
prettyprint quotations sequences ui ui.commands ui.gadgets
|
|
ui.gadgets.books ui.gadgets.buttons
|
|
ui.gadgets.labelled ui.gadgets.scrollers ui.gadgets.tracks
|
|
ui.gadgets.worlds ui.gadgets.presentations ui.gestures words
|
|
vocabs.loader tools.test ui.gadgets.buttons
|
|
ui.gadgets.status-bar mirrors ;
|
|
IN: ui.tools
|
|
|
|
: <workspace-tabs> ( -- tabs )
|
|
g gadget-model
|
|
"tool-switching" workspace command-map
|
|
[ command-string ] { } assoc>map <enum> >alist
|
|
<toggle-buttons> ;
|
|
|
|
: <workspace-book> ( -- gadget )
|
|
[
|
|
<stack-display> ,
|
|
<browser-gadget> ,
|
|
<inspector-gadget> ,
|
|
<walker> ,
|
|
<profiler-gadget> ,
|
|
] { } make g gadget-model <book> ;
|
|
|
|
: <workspace> ( -- workspace )
|
|
0 <model> { 0 1 } <track> workspace construct-control [
|
|
[
|
|
<listener-gadget> g set-workspace-listener
|
|
<workspace-book> g set-workspace-book
|
|
<workspace-tabs> f track,
|
|
g workspace-book 1/5 track,
|
|
g workspace-listener 4/5 track,
|
|
toolbar,
|
|
] with-gadget
|
|
] keep ;
|
|
|
|
: resize-workspace ( workspace -- )
|
|
dup track-sizes over control-value zero? [
|
|
1/5 1 pick set-nth
|
|
4/5 2 rot set-nth
|
|
] [
|
|
2/3 1 pick set-nth
|
|
1/3 2 rot set-nth
|
|
] if relayout ;
|
|
|
|
M: workspace model-changed
|
|
nip
|
|
dup workspace-listener listener-gadget-output scroll>bottom
|
|
dup resize-workspace
|
|
request-focus ;
|
|
|
|
[ workspace-window ] ui-hook set-global
|
|
|
|
: com-listener stack-display select-tool ;
|
|
|
|
: com-browser browser-gadget select-tool ;
|
|
|
|
: com-inspector inspector-gadget select-tool ;
|
|
|
|
: com-walker walker select-tool ;
|
|
|
|
: com-profiler profiler-gadget select-tool ;
|
|
|
|
workspace "tool-switching" f {
|
|
{ T{ key-down f { A+ } "1" } com-listener }
|
|
{ T{ key-down f { A+ } "2" } com-browser }
|
|
{ T{ key-down f { A+ } "3" } com-inspector }
|
|
{ T{ key-down f { A+ } "4" } com-walker }
|
|
{ T{ key-down f { A+ } "5" } com-profiler }
|
|
} define-command-map
|
|
|
|
\ workspace-window
|
|
H{ { +nullary+ t } } define-command
|
|
|
|
\ refresh-all
|
|
H{ { +nullary+ t } { +listener+ t } } define-command
|
|
|
|
workspace "workflow" f {
|
|
{ T{ key-down f { C+ } "n" } workspace-window }
|
|
{ T{ key-down f f "ESC" } hide-popup }
|
|
{ T{ key-down f f "F2" } refresh-all }
|
|
} define-command-map
|
|
|
|
[
|
|
<workspace> "Factor workspace" open-status-window
|
|
] workspace-window-hook set-global
|