Remove stack display from listener tool, and tweak appearance
parent
f27ebdd1ef
commit
08f7e02a3b
|
@ -178,10 +178,6 @@ M: interactor stream-read-quot
|
||||||
]
|
]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
M: interactor pref-dim*
|
|
||||||
[ line-height 4 * 0 swap 2array ] [ call-next-method ] bi
|
|
||||||
vmax ;
|
|
||||||
|
|
||||||
interactor "interactor" f {
|
interactor "interactor" f {
|
||||||
{ T{ key-down f f "RET" } evaluate-input }
|
{ T{ key-down f f "RET" } evaluate-input }
|
||||||
{ T{ key-down f { C+ } "k" } clear-input }
|
{ T{ key-down f { C+ } "k" } clear-input }
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
! Copyright (C) 2005, 2008 Slava Pestov.
|
! Copyright (C) 2005, 2008 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: inspector ui.tools.interactor ui.tools.inspector
|
USING: inspector help help.markup io io.styles
|
||||||
ui.tools.workspace help.markup io io.styles
|
kernel models namespaces parser quotations sequences vocabs words
|
||||||
kernel models namespaces parser quotations sequences ui.commands
|
prettyprint listener debugger threads boxes concurrency.flags
|
||||||
|
math arrays generic accessors combinators assocs fry ui.commands
|
||||||
ui.gadgets ui.gadgets.editors ui.gadgets.labelled
|
ui.gadgets ui.gadgets.editors ui.gadgets.labelled
|
||||||
ui.gadgets.panes ui.gadgets.buttons ui.gadgets.scrollers
|
ui.gadgets.panes ui.gadgets.buttons ui.gadgets.scrollers
|
||||||
ui.gadgets.tracks ui.gestures ui.operations vocabs words
|
ui.gadgets.tracks ui.gadgets.borders ui.gestures ui.operations
|
||||||
prettyprint listener debugger threads boxes concurrency.flags
|
ui.tools.browser ui.tools.interactor ui.tools.inspector
|
||||||
math arrays generic accessors combinators assocs ;
|
ui.tools.workspace ;
|
||||||
IN: ui.tools.listener
|
IN: ui.tools.listener
|
||||||
|
|
||||||
TUPLE: listener-gadget < track input output stack ;
|
TUPLE: listener-gadget < track input output ;
|
||||||
|
|
||||||
: listener-output, ( listener -- listener )
|
: listener-output, ( listener -- listener )
|
||||||
<scrolling-pane> >>output
|
<scrolling-pane>
|
||||||
dup output>> <scroller> "Output" <labelled-gadget> 1 track-add ;
|
[ >>output ] [ <scroller> 1 track-add ] bi ;
|
||||||
|
|
||||||
: listener-streams ( listener -- input output )
|
: listener-streams ( listener -- input output )
|
||||||
[ input>> ] [ output>> <pane-stream> ] bi ;
|
[ input>> ] [ output>> <pane-stream> ] bi ;
|
||||||
|
@ -23,17 +24,13 @@ TUPLE: listener-gadget < track input output stack ;
|
||||||
output>> <pane-stream> <interactor> ;
|
output>> <pane-stream> <interactor> ;
|
||||||
|
|
||||||
: listener-input, ( listener -- listener )
|
: listener-input, ( listener -- listener )
|
||||||
dup <listener-input> >>input
|
dup <listener-input>
|
||||||
dup input>>
|
[ >>input ] [ 1 <border> { 0 0 } >>align f track-add ] bi ;
|
||||||
<limited-scroller>
|
|
||||||
{ 0 100 } >>min-dim
|
|
||||||
{ 1/0. 100 } >>max-dim
|
|
||||||
"Input" <labelled-gadget>
|
|
||||||
f track-add ;
|
|
||||||
|
|
||||||
: welcome. ( -- )
|
: welcome. ( -- )
|
||||||
"If this is your first time with Factor, please read the " print
|
"If this is your first time with Factor, please read the " print
|
||||||
"handbook" ($link) "." print nl ;
|
"handbook" ($link) ". To see a list of keyboard shortcuts," print
|
||||||
|
"press F1." print nl ;
|
||||||
|
|
||||||
M: listener-gadget focusable-child*
|
M: listener-gadget focusable-child*
|
||||||
input>> ;
|
input>> ;
|
||||||
|
@ -60,7 +57,7 @@ M: listener-gadget tool-scroller
|
||||||
|
|
||||||
: call-listener ( quot -- )
|
: call-listener ( quot -- )
|
||||||
[ workspace-busy? not ] get-workspace* listener>>
|
[ workspace-busy? not ] get-workspace* listener>>
|
||||||
[ dup wait-for-listener (call-listener) ] 2curry
|
'[ _ _ dup wait-for-listener (call-listener) ]
|
||||||
"Listener call" spawn drop ;
|
"Listener call" spawn drop ;
|
||||||
|
|
||||||
M: listener-command invoke-command ( target command -- )
|
M: listener-command invoke-command ( target command -- )
|
||||||
|
@ -76,7 +73,7 @@ M: listener-operation invoke-command ( target command -- )
|
||||||
|
|
||||||
: listener-run-files ( seq -- )
|
: listener-run-files ( seq -- )
|
||||||
[
|
[
|
||||||
[ [ run-file ] each ] curry call-listener
|
'[ _ [ run-file ] each ] call-listener
|
||||||
] unless-empty ;
|
] unless-empty ;
|
||||||
|
|
||||||
: com-end ( listener -- )
|
: com-end ( listener -- )
|
||||||
|
@ -122,20 +119,8 @@ M: engine-word word-completion-string
|
||||||
[ select-all ]
|
[ select-all ]
|
||||||
2bi ;
|
2bi ;
|
||||||
|
|
||||||
TUPLE: stack-display < track ;
|
: ui-help-hook ( topic -- )
|
||||||
|
browser-gadget call-tool ;
|
||||||
: <stack-display> ( workspace -- gadget )
|
|
||||||
listener>>
|
|
||||||
{ 0 1 } stack-display new-track
|
|
||||||
over <toolbar> f track-add
|
|
||||||
swap stack>> [ [ stack. ] curry try ] t "Data stack" <labelled-pane>
|
|
||||||
1 track-add ;
|
|
||||||
|
|
||||||
M: stack-display tool-scroller
|
|
||||||
find-workspace listener>> tool-scroller ;
|
|
||||||
|
|
||||||
: ui-listener-hook ( listener -- )
|
|
||||||
>r datastack r> stack>> set-model ;
|
|
||||||
|
|
||||||
: ui-error-hook ( error listener -- )
|
: ui-error-hook ( error listener -- )
|
||||||
find-workspace debugger-popup ;
|
find-workspace debugger-popup ;
|
||||||
|
@ -146,17 +131,20 @@ M: stack-display tool-scroller
|
||||||
|
|
||||||
: listener-thread ( listener -- )
|
: listener-thread ( listener -- )
|
||||||
dup listener-streams [
|
dup listener-streams [
|
||||||
[ [ ui-listener-hook ] curry listener-hook set ]
|
[ ui-help-hook ] help-hook set
|
||||||
[ [ ui-error-hook ] curry error-hook set ]
|
[ '[ _ ui-error-hook ] error-hook set ]
|
||||||
[ [ ui-inspector-hook ] curry inspector-hook set ] tri
|
[ '[ _ ui-inspector-hook ] inspector-hook set ] bi
|
||||||
welcome.
|
welcome.
|
||||||
listener
|
listener
|
||||||
] with-streams* ;
|
] with-streams* ;
|
||||||
|
|
||||||
: start-listener-thread ( listener -- )
|
: start-listener-thread ( listener -- )
|
||||||
[
|
'[
|
||||||
[ input>> register-self ] [ listener-thread ] bi
|
_
|
||||||
] curry "Listener" spawn drop ;
|
[ input>> register-self ]
|
||||||
|
[ listener-thread ]
|
||||||
|
bi
|
||||||
|
] "Listener" spawn drop ;
|
||||||
|
|
||||||
: restart-listener ( listener -- )
|
: restart-listener ( listener -- )
|
||||||
#! Returns when listener is ready to receive input.
|
#! Returns when listener is ready to receive input.
|
||||||
|
@ -168,12 +156,9 @@ M: stack-display tool-scroller
|
||||||
[ wait-for-listener ]
|
[ wait-for-listener ]
|
||||||
} cleave ;
|
} cleave ;
|
||||||
|
|
||||||
: init-listener ( listener -- )
|
|
||||||
f <model> >>stack drop ;
|
|
||||||
|
|
||||||
: <listener-gadget> ( -- gadget )
|
: <listener-gadget> ( -- gadget )
|
||||||
{ 0 1 } listener-gadget new-track
|
{ 0 1 } listener-gadget new-track
|
||||||
dup init-listener
|
add-toolbar
|
||||||
listener-output,
|
listener-output,
|
||||||
listener-input, ;
|
listener-input, ;
|
||||||
|
|
||||||
|
@ -181,12 +166,21 @@ M: stack-display tool-scroller
|
||||||
|
|
||||||
\ listener-help H{ { +nullary+ t } } define-command
|
\ listener-help H{ { +nullary+ t } } define-command
|
||||||
|
|
||||||
|
: com-auto-use ( -- )
|
||||||
|
auto-use? [ not ] change ;
|
||||||
|
|
||||||
|
\ com-auto-use H{ { +nullary+ t } { +listener+ t } } define-command
|
||||||
|
|
||||||
|
listener-gadget "misc" "Miscellaneous commands" {
|
||||||
|
{ T{ key-down f f "F1" } listener-help }
|
||||||
|
} define-command-map
|
||||||
|
|
||||||
listener-gadget "toolbar" f {
|
listener-gadget "toolbar" f {
|
||||||
{ f restart-listener }
|
{ f restart-listener }
|
||||||
{ T{ key-down f { A+ } "c" } clear-output }
|
{ T{ key-down f { A+ } "a" } com-auto-use }
|
||||||
{ T{ key-down f { A+ } "C" } clear-stack }
|
{ T{ key-down f { A+ } "c" } clear-output }
|
||||||
|
{ T{ key-down f { A+ } "C" } clear-stack }
|
||||||
{ T{ key-down f { C+ } "d" } com-end }
|
{ T{ key-down f { C+ } "d" } com-end }
|
||||||
{ T{ key-down f f "F1" } listener-help }
|
|
||||||
} define-command-map
|
} define-command-map
|
||||||
|
|
||||||
M: listener-gadget handle-gesture ( gesture gadget -- ? )
|
M: listener-gadget handle-gesture ( gesture gadget -- ? )
|
||||||
|
|
|
@ -32,7 +32,7 @@ ARTICLE: "ui-listener" "UI listener"
|
||||||
{ $heading "Editing commands" }
|
{ $heading "Editing commands" }
|
||||||
"The text editing commands are standard; see " { $link "gadgets-editors" } "."
|
"The text editing commands are standard; see " { $link "gadgets-editors" } "."
|
||||||
{ $heading "Implementation" }
|
{ $heading "Implementation" }
|
||||||
"Listeners are instances of " { $link listener-gadget } ". The listener consists of an output area (instance of " { $link pane } "), and an input area (instance of " { $link interactor } "), and a stack display kept up to date using a " { $link listener-hook } "." ;
|
"Listeners are instances of " { $link listener-gadget } ". The listener consists of an output area (instance of " { $link pane } ") and an input area (instance of " { $link interactor } ")." ;
|
||||||
|
|
||||||
ARTICLE: "ui-inspector" "UI inspector"
|
ARTICLE: "ui-inspector" "UI inspector"
|
||||||
"The graphical inspector builds on the terminal inspector (see " { $link "inspector" } ") and provides in-place editing of slot values."
|
"The graphical inspector builds on the terminal inspector (see " { $link "inspector" } ") and provides in-place editing of slot values."
|
||||||
|
|
|
@ -19,8 +19,7 @@ IN: ui.tools
|
||||||
<toggle-buttons> ;
|
<toggle-buttons> ;
|
||||||
|
|
||||||
: <workspace-book> ( workspace -- gadget )
|
: <workspace-book> ( workspace -- gadget )
|
||||||
dup
|
<gadget>
|
||||||
<stack-display>
|
|
||||||
<browser-gadget>
|
<browser-gadget>
|
||||||
<inspector-gadget>
|
<inspector-gadget>
|
||||||
<profiler-gadget>
|
<profiler-gadget>
|
||||||
|
@ -34,14 +33,14 @@ IN: ui.tools
|
||||||
dup <workspace-book> >>book
|
dup <workspace-book> >>book
|
||||||
|
|
||||||
dup <workspace-tabs> f track-add
|
dup <workspace-tabs> f track-add
|
||||||
dup book>> 1/5 track-add
|
dup book>> 0 track-add
|
||||||
dup listener>> 4/5 track-add
|
dup listener>> 1 track-add
|
||||||
dup <toolbar> f track-add ;
|
add-toolbar ;
|
||||||
|
|
||||||
: resize-workspace ( workspace -- )
|
: resize-workspace ( workspace -- )
|
||||||
dup sizes>> over control-value zero? [
|
dup sizes>> over control-value 0 = [
|
||||||
1/5 over set-second
|
0 over set-second
|
||||||
4/5 swap set-third
|
1 swap set-third
|
||||||
] [
|
] [
|
||||||
2/3 over set-second
|
2/3 over set-second
|
||||||
1/3 swap set-third
|
1/3 swap set-third
|
||||||
|
@ -55,13 +54,15 @@ M: workspace model-changed
|
||||||
|
|
||||||
[ workspace-window ] ui-hook set-global
|
[ workspace-window ] ui-hook set-global
|
||||||
|
|
||||||
: com-listener ( workspace -- ) stack-display select-tool ;
|
: select-tool ( workspace n -- ) swap book>> model>> set-model ;
|
||||||
|
|
||||||
: com-browser ( workspace -- ) browser-gadget select-tool ;
|
: com-listener ( workspace -- ) 0 select-tool ;
|
||||||
|
|
||||||
: com-inspector ( workspace -- ) inspector-gadget select-tool ;
|
: com-browser ( workspace -- ) 1 select-tool ;
|
||||||
|
|
||||||
: com-profiler ( workspace -- ) profiler-gadget select-tool ;
|
: com-inspector ( workspace -- ) 2 select-tool ;
|
||||||
|
|
||||||
|
: com-profiler ( workspace -- ) 3 select-tool ;
|
||||||
|
|
||||||
workspace "tool-switching" f {
|
workspace "tool-switching" f {
|
||||||
{ T{ key-down f { A+ } "1" } com-listener }
|
{ T{ key-down f { A+ } "1" } com-listener }
|
||||||
|
|
Loading…
Reference in New Issue