2008-02-27 20:24:50 -05:00
|
|
|
! Copyright (C) 2006, 2008 Slava Pestov.
|
2007-09-20 18:09:08 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-07-10 21:32:17 -04:00
|
|
|
USING: accessors arrays assocs debugger ui.tools.workspace
|
2008-02-27 20:24:50 -05:00
|
|
|
ui.tools.operations ui.tools.traceback ui.tools.browser
|
|
|
|
ui.tools.inspector ui.tools.listener ui.tools.profiler
|
2007-09-20 18:09:08 -04:00
|
|
|
ui.tools.operations inspector io kernel math models namespaces
|
|
|
|
prettyprint quotations sequences ui ui.commands ui.gadgets
|
2008-02-27 20:24:50 -05:00
|
|
|
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
|
2008-03-13 04:52:04 -04:00
|
|
|
tools.test tools.vocabs ui.gadgets.buttons ui.gadgets.status-bar
|
2008-11-28 01:02:02 -05:00
|
|
|
mirrors fry ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: ui.tools
|
|
|
|
|
2008-07-14 17:37:32 -04:00
|
|
|
: <workspace-tabs> ( workspace -- tabs )
|
2008-09-27 15:36:04 -04:00
|
|
|
model>>
|
|
|
|
"tool-switching" workspace command-map commands>>
|
|
|
|
[ command-string ] { } assoc>map <enum> >alist
|
|
|
|
<toggle-buttons> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-07-14 17:37:32 -04:00
|
|
|
: <workspace-book> ( workspace -- gadget )
|
2008-11-20 22:59:22 -05:00
|
|
|
<gadget>
|
2008-09-27 15:36:04 -04:00
|
|
|
<browser-gadget>
|
|
|
|
<inspector-gadget>
|
|
|
|
<profiler-gadget>
|
|
|
|
4array
|
|
|
|
swap model>> <book> ;
|
2008-07-14 17:37:32 -04:00
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
: <workspace> ( -- workspace )
|
2008-09-27 15:36:04 -04:00
|
|
|
{ 0 1 } workspace new-track
|
|
|
|
0 <model> >>model
|
|
|
|
<listener-gadget> >>listener
|
|
|
|
dup <workspace-book> >>book
|
2008-07-14 17:37:32 -04:00
|
|
|
|
2008-09-27 15:36:04 -04:00
|
|
|
dup <workspace-tabs> f track-add
|
2008-11-20 22:59:22 -05:00
|
|
|
dup book>> 0 track-add
|
|
|
|
dup listener>> 1 track-add
|
|
|
|
add-toolbar ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: resize-workspace ( workspace -- )
|
2008-11-20 22:59:22 -05:00
|
|
|
dup sizes>> over control-value 0 = [
|
|
|
|
0 over set-second
|
|
|
|
1 swap set-third
|
2007-09-20 18:09:08 -04:00
|
|
|
] [
|
2008-10-21 00:28:02 -04:00
|
|
|
2/3 over set-second
|
|
|
|
1/3 swap set-third
|
2007-09-20 18:09:08 -04:00
|
|
|
] if relayout ;
|
|
|
|
|
|
|
|
M: workspace model-changed
|
2007-11-16 03:01:45 -05:00
|
|
|
nip
|
2008-09-01 04:40:31 -04:00
|
|
|
dup listener>> output>> scroll>bottom
|
2007-09-20 18:09:08 -04:00
|
|
|
dup resize-workspace
|
|
|
|
request-focus ;
|
|
|
|
|
|
|
|
[ workspace-window ] ui-hook set-global
|
|
|
|
|
2008-11-20 22:59:22 -05:00
|
|
|
: select-tool ( workspace n -- ) swap book>> model>> set-model ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-20 22:59:22 -05:00
|
|
|
: com-listener ( workspace -- ) 0 select-tool ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-20 22:59:22 -05:00
|
|
|
: com-browser ( workspace -- ) 1 select-tool ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-20 22:59:22 -05:00
|
|
|
: com-inspector ( workspace -- ) 2 select-tool ;
|
|
|
|
|
|
|
|
: com-profiler ( workspace -- ) 3 select-tool ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
workspace "tool-switching" f {
|
2007-12-09 11:29:46 -05:00
|
|
|
{ T{ key-down f { A+ } "1" } com-listener }
|
|
|
|
{ T{ key-down f { A+ } "2" } com-browser }
|
|
|
|
{ T{ key-down f { A+ } "3" } com-inspector }
|
2008-03-11 04:37:45 -04:00
|
|
|
{ T{ key-down f { A+ } "4" } com-profiler }
|
2007-09-20 18:09:08 -04:00
|
|
|
} define-command-map
|
|
|
|
|
2008-04-11 23:33:01 -04:00
|
|
|
workspace "multi-touch" f {
|
|
|
|
{ T{ zoom-out-action } com-listener }
|
|
|
|
{ T{ up-action } refresh-all }
|
|
|
|
} define-command-map
|
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
\ 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 }
|
2007-11-24 16:58:31 -05:00
|
|
|
{ T{ key-down f f "F2" } refresh-all }
|
2007-09-20 18:09:08 -04:00
|
|
|
} define-command-map
|
|
|
|
|
|
|
|
[
|
2008-03-01 02:46:01 -05:00
|
|
|
<workspace> dup "Factor workspace" open-status-window
|
2007-09-20 18:09:08 -04:00
|
|
|
] workspace-window-hook set-global
|
2008-02-27 20:24:50 -05:00
|
|
|
|
|
|
|
: inspect-continuation ( traceback -- )
|
2008-11-28 01:02:02 -05:00
|
|
|
control-value '[ _ inspect ] call-listener ;
|
2008-02-27 20:24:50 -05:00
|
|
|
|
|
|
|
traceback-gadget "toolbar" f {
|
|
|
|
{ T{ key-down f f "v" } variables }
|
|
|
|
{ T{ key-down f f "n" } inspect-continuation }
|
|
|
|
} define-command-map
|