factor/extra/ui/tools/tools.factor

96 lines
2.7 KiB
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
! 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
2007-11-13 18:51:10 -05:00
ui.gadgets.books ui.gadgets.buttons
2007-09-20 18:09:08 -04:00
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
2007-10-31 01:04:54 -04:00
ui.gadgets.status-bar mirrors ;
2007-09-20 18:09:08 -04:00
IN: ui.tools
: <workspace-tabs> ( -- tabs )
2007-11-14 16:35:17 -05:00
g gadget-model
2007-09-20 18:09:08 -04:00
"tool-switching" workspace command-map
2007-10-31 01:04:54 -04:00
[ command-string ] { } assoc>map <enum> >alist
<toggle-buttons> ;
2007-09-20 18:09:08 -04:00
: <workspace-book> ( -- gadget )
2007-11-16 01:19:13 -05:00
[
<stack-display> ,
<browser-gadget> ,
<inspector-gadget> ,
<walker> ,
<profiler-gadget> ,
] { } make g gadget-model <book> ;
2007-09-20 18:09:08 -04:00
: <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
2007-09-20 18:09:08 -04:00
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 ;
2007-10-04 18:45:19 -04:00
: com-walker walker select-tool ;
2007-09-20 18:09:08 -04:00
: com-profiler profiler-gadget select-tool ;
workspace "tool-switching" f {
{ T{ key-down f { C+ } "1" } com-listener }
{ T{ key-down f { C+ } "2" } com-browser }
{ T{ key-down f { C+ } "3" } com-inspector }
{ T{ key-down f { C+ } "4" } com-walker }
{ T{ key-down f { C+ } "5" } com-profiler }
2007-09-20 18:09:08 -04:00
} define-command-map
\ workspace-window
H{ { +nullary+ t } } define-command
\ refresh-all
H{ { +nullary+ t } { +listener+ t } } define-command
\ test-changes
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 }
{ T{ key-down f { A+ } "F2" } test-changes }
2007-09-20 18:09:08 -04:00
} define-command-map
[
<workspace> "Factor workspace" open-status-window
] workspace-window-hook set-global