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