Fooling around with commands
parent
23b7d93944
commit
474695cfff
|
@ -46,7 +46,16 @@ M: object gesture>string drop f ;
|
||||||
"gestures" set-word-prop ;
|
"gestures" set-word-prop ;
|
||||||
|
|
||||||
: commands ( gadget -- seq )
|
: commands ( gadget -- seq )
|
||||||
delegates [ class "commands" word-prop ] map concat ;
|
[
|
||||||
|
parents [
|
||||||
|
delegates [ class "commands" word-prop % ] each
|
||||||
|
] each
|
||||||
|
] V{ } make ;
|
||||||
|
|
||||||
|
: commands. ( gadget -- )
|
||||||
|
commands [
|
||||||
|
[ command-string ] keep write-object terpri
|
||||||
|
] each ;
|
||||||
|
|
||||||
world {
|
world {
|
||||||
{ f "Cut" T{ key-down f { C+ } "x" } [ T{ cut-action } send-action ] }
|
{ f "Cut" T{ key-down f { C+ } "x" } [ T{ cut-action } send-action ] }
|
||||||
|
|
|
@ -64,46 +64,46 @@ sequences ;
|
||||||
|
|
||||||
: editor-doc-end ( editor -- ) T{ doc-elt } editor-next ;
|
: editor-doc-end ( editor -- ) T{ doc-elt } editor-next ;
|
||||||
|
|
||||||
editor H{
|
editor {
|
||||||
{ T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
|
{ f "Insert newline" T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
|
||||||
{ T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
|
{ f "Insert newline" T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
|
||||||
{ T{ button-down } [ editor-mouse-down ] }
|
{ f "Position caret" T{ button-down } [ editor-mouse-down ] }
|
||||||
{ T{ drag } [ editor-mouse-drag ] }
|
{ f "Start selection" T{ drag } [ editor-mouse-drag ] }
|
||||||
{ T{ gain-focus } [ focus-editor ] }
|
{ f "Focus editor" T{ gain-focus } [ focus-editor ] }
|
||||||
{ T{ lose-focus } [ unfocus-editor ] }
|
{ f "Unfocus editor" T{ lose-focus } [ unfocus-editor ] }
|
||||||
{ T{ paste-action } [ clipboard get paste-clipboard ] }
|
{ f "Paste" T{ paste-action } [ clipboard get paste-clipboard ] }
|
||||||
{ T{ button-up f 2 } [ selection get paste-clipboard ] }
|
{ f "Paste selection" T{ button-up f 2 } [ selection get paste-clipboard ] }
|
||||||
{ T{ copy-action } [ clipboard get editor-copy ] }
|
{ f "Copy" T{ copy-action } [ clipboard get editor-copy ] }
|
||||||
{ T{ button-up } [ selection get editor-copy ] }
|
{ f "Copy selection" T{ button-up } [ selection get editor-copy ] }
|
||||||
{ T{ cut-action } [ clipboard get editor-cut ] }
|
{ f "Cut" T{ cut-action } [ clipboard get editor-cut ] }
|
||||||
{ T{ delete-action } [ remove-editor-selection ] }
|
{ f "Clear" T{ delete-action } [ remove-editor-selection ] }
|
||||||
{ T{ select-all-action } [ T{ doc-elt } select-elt ] }
|
{ f "Select all" T{ select-all-action } [ T{ doc-elt } select-elt ] }
|
||||||
{ T{ key-down f { C+ } "l" } [ T{ one-line-elt } select-elt ] }
|
{ f "Select line" T{ key-down f { C+ } "l" } [ T{ one-line-elt } select-elt ] }
|
||||||
{ T{ key-down f { C+ } "w" } [ T{ word-elt } select-elt ] }
|
{ f "Select word" T{ key-down f { C+ } "w" } [ T{ word-elt } select-elt ] }
|
||||||
{ T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
|
{ f "Previous character" T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
|
||||||
{ T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
|
{ f "Next character" T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
|
||||||
{ T{ key-down f f "UP" } [ T{ line-elt } editor-prev ] }
|
{ f "Previous line" T{ key-down f f "UP" } [ T{ line-elt } editor-prev ] }
|
||||||
{ T{ key-down f f "DOWN" } [ T{ line-elt } editor-next ] }
|
{ f "Next line" T{ key-down f f "DOWN" } [ T{ line-elt } editor-next ] }
|
||||||
{ T{ key-down f { S+ } "LEFT" } [ T{ char-elt } editor-select-prev ] }
|
{ f "Select previous character" T{ key-down f { S+ } "LEFT" } [ T{ char-elt } editor-select-prev ] }
|
||||||
{ T{ key-down f { S+ } "RIGHT" } [ T{ char-elt } editor-select-next ] }
|
{ f "Select next character" T{ key-down f { S+ } "RIGHT" } [ T{ char-elt } editor-select-next ] }
|
||||||
{ T{ key-down f { S+ } "UP" } [ T{ line-elt } editor-select-prev ] }
|
{ f "Select previous line" T{ key-down f { S+ } "UP" } [ T{ line-elt } editor-select-prev ] }
|
||||||
{ T{ key-down f { S+ } "DOWN" } [ T{ line-elt } editor-select-next ] }
|
{ f "Select next line" T{ key-down f { S+ } "DOWN" } [ T{ line-elt } editor-select-next ] }
|
||||||
{ T{ key-down f { C+ } "LEFT" } [ T{ word-elt } editor-prev ] }
|
{ f "Previous word" T{ key-down f { C+ } "LEFT" } [ T{ word-elt } editor-prev ] }
|
||||||
{ T{ key-down f { C+ } "RIGHT" } [ T{ word-elt } editor-next ] }
|
{ f "Next word" T{ key-down f { C+ } "RIGHT" } [ T{ word-elt } editor-next ] }
|
||||||
{ T{ key-down f { S+ C+ } "LEFT" } [ T{ word-elt } editor-select-prev ] }
|
{ f "Select previous line" T{ key-down f { S+ C+ } "LEFT" } [ T{ word-elt } editor-select-prev ] }
|
||||||
{ T{ key-down f { S+ C+ } "RIGHT" } [ T{ word-elt } editor-select-next ] }
|
{ f "Select next line" T{ key-down f { S+ C+ } "RIGHT" } [ T{ word-elt } editor-select-next ] }
|
||||||
{ T{ key-down f f "HOME" } [ T{ one-line-elt } editor-prev ] }
|
{ f "Start of line" T{ key-down f f "HOME" } [ T{ one-line-elt } editor-prev ] }
|
||||||
{ T{ key-down f f "END" } [ T{ one-line-elt } editor-next ] }
|
{ f "End of line" T{ key-down f f "END" } [ T{ one-line-elt } editor-next ] }
|
||||||
{ T{ key-down f { S+ } "HOME" } [ T{ one-line-elt } editor-select-prev ] }
|
{ f "Select to start of line" T{ key-down f { S+ } "HOME" } [ T{ one-line-elt } editor-select-prev ] }
|
||||||
{ T{ key-down f { S+ } "END" } [ T{ one-line-elt } editor-select-next ] }
|
{ f "Select to end of line" T{ key-down f { S+ } "END" } [ T{ one-line-elt } editor-select-next ] }
|
||||||
{ T{ key-down f { C+ } "HOME" } [ editor-doc-start ] }
|
{ f "Start of document" T{ key-down f { C+ } "HOME" } [ editor-doc-start ] }
|
||||||
{ T{ key-down f { C+ } "END" } [ editor-doc-end ] }
|
{ f "End of document" T{ key-down f { C+ } "END" } [ editor-doc-end ] }
|
||||||
{ T{ key-down f { C+ S+ } "HOME" } [ T{ doc-elt } editor-select-prev ] }
|
{ f "Select start of document" T{ key-down f { C+ S+ } "HOME" } [ T{ doc-elt } editor-select-prev ] }
|
||||||
{ T{ key-down f { C+ S+ } "END" } [ T{ doc-elt } editor-select-next ] }
|
{ f "Select end of document" T{ key-down f { C+ S+ } "END" } [ T{ doc-elt } editor-select-next ] }
|
||||||
{ T{ key-down f f "DELETE" } [ T{ char-elt } editor-delete ] }
|
{ f "Delete next character" T{ key-down f f "DELETE" } [ T{ char-elt } editor-delete ] }
|
||||||
{ T{ key-down f f "BACKSPACE" } [ T{ char-elt } editor-backspace ] }
|
{ f "Delete previous character" T{ key-down f f "BACKSPACE" } [ T{ char-elt } editor-backspace ] }
|
||||||
{ T{ key-down f { C+ } "DELETE" } [ T{ word-elt } editor-delete ] }
|
{ f "Delete previous word" T{ key-down f { C+ } "DELETE" } [ T{ word-elt } editor-delete ] }
|
||||||
{ T{ key-down f { C+ } "BACKSPACE" } [ T{ word-elt } editor-backspace ] }
|
{ f "Delete next word" T{ key-down f { C+ } "BACKSPACE" } [ T{ word-elt } editor-backspace ] }
|
||||||
{ T{ key-down f { A+ } "DELETE" } [ T{ one-line-elt } editor-delete ] }
|
{ f "Delete to start of line" T{ key-down f { A+ } "DELETE" } [ T{ one-line-elt } editor-delete ] }
|
||||||
{ T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
|
{ f "Delete to end of line" T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
|
||||||
} set-gestures
|
} define-commands
|
||||||
|
|
|
@ -15,7 +15,7 @@ C: field ( model -- field )
|
||||||
[ field-model [ dupd set-model ] when* ] keep
|
[ field-model [ dupd set-model ] when* ] keep
|
||||||
select-all ;
|
select-all ;
|
||||||
|
|
||||||
field H{
|
field {
|
||||||
{ T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
|
{ f "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
|
||||||
{ T{ key-down f f "RETURN" } [ field-commit drop ] }
|
{ f "Accept input" T{ key-down f f "RETURN" } [ field-commit drop ] }
|
||||||
} set-gestures
|
} define-commands
|
||||||
|
|
|
@ -76,20 +76,20 @@ SYMBOL: structured-input
|
||||||
: use-word ( str -- )
|
: use-word ( str -- )
|
||||||
words-named [ word-vocabulary dup print use+ ] each ;
|
words-named [ word-vocabulary dup print use+ ] each ;
|
||||||
|
|
||||||
interactor H{
|
interactor {
|
||||||
{ T{ key-down f f "RETURN" } [ interactor-commit ] }
|
{ f "Evaluate input" T{ key-down f f "RETURN" } [ interactor-commit ] }
|
||||||
{ T{ key-down f { A+ } "c" } [ dup [ interactor-output pane-clear ] curry swap interactor-call ] }
|
{ f "Clear output" T{ key-down f { A+ } "c" } [ dup [ interactor-output pane-clear ] curry swap interactor-call ] }
|
||||||
{ T{ key-down f { C+ } "h" } [ dup [ interactor-history. ] curry swap interactor-call ] }
|
{ f "History" T{ key-down f { C+ } "h" } [ dup [ interactor-history. ] curry swap interactor-call ] }
|
||||||
{ T{ key-down f { C+ } "d" } [ f swap interactor-eval ] }
|
{ f "Send EOF" T{ key-down f { C+ } "d" } [ f swap interactor-eval ] }
|
||||||
{ T{ key-down f { C+ } "i" } [ "infer ." quot-action ] }
|
{ f "Infer input" T{ key-down f { C+ } "i" } [ "infer ." quot-action ] }
|
||||||
{ T{ key-down f { C+ } "w" } [ "walk" quot-action ] }
|
{ f "Single step input" T{ key-down f { C+ } "w" } [ "walk" quot-action ] }
|
||||||
{ T{ key-down f { A+ } "s" } [ [ search see ] word-action ] }
|
{ f "See at caret" T{ key-down f { A+ } "s" } [ [ search see ] word-action ] }
|
||||||
{ T{ key-down f { A+ } "j" } [ [ search jedit ] word-action ] }
|
{ f "jEdit at caret" T{ key-down f { A+ } "j" } [ [ search jedit ] word-action ] }
|
||||||
{ T{ key-down f { A+ } "r" } [ [ search reload ] word-action ] }
|
{ f "Reload at caret" T{ key-down f { A+ } "r" } [ [ search reload ] word-action ] }
|
||||||
{ T{ key-down f { A+ } "a" } [ [ apropos ] word-action ] }
|
{ f "Apropos at caret (all)" T{ key-down f { A+ } "a" } [ [ apropos ] word-action ] }
|
||||||
{ T{ key-down f { A+ } "u" } [ [ use-word ] word-action ] }
|
{ f "Use word at caret" T{ key-down f { A+ } "u" } [ [ use-word ] word-action ] }
|
||||||
{ T{ key-down f f "TAB" } [ [ usable-words (apropos) ] word-action ] }
|
{ f "Apropos at caret (used)" T{ key-down f f "TAB" } [ [ usable-words (apropos) ] word-action ] }
|
||||||
} set-gestures
|
} define-commands
|
||||||
|
|
||||||
M: interactor stream-readln
|
M: interactor stream-readln
|
||||||
dup interactor-queue empty? [
|
dup interactor-queue empty? [
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: gadgets-presentations memory io gadgets-panes
|
USING: gadgets-presentations memory io gadgets-panes
|
||||||
gadgets-scrolling namespaces help kernel gadgets-listener
|
gadgets-scrolling namespaces help kernel gadgets-listener
|
||||||
gadgets-browser ;
|
gadgets-browser gadgets-search ;
|
||||||
|
|
||||||
: handbook-window ( -- )
|
: handbook-window ( -- )
|
||||||
T{ link f "handbook" } show ;
|
T{ link f "handbook" } show ;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: arrays errors gadgets gadgets-frames gadgets-grids
|
USING: arrays errors gadgets gadgets-buttons gadgets-frames
|
||||||
gadgets-labels gadgets-panes gadgets-theme gadgets-viewports
|
gadgets-grids gadgets-labels gadgets-panes gadgets-theme
|
||||||
generic hashtables io kernel math models namespaces prettyprint
|
gadgets-viewports generic hashtables io kernel math models
|
||||||
queues sequences test threads ;
|
namespaces prettyprint queues sequences test threads ;
|
||||||
|
|
||||||
! Assoc mapping aliens to gadgets
|
! Assoc mapping aliens to gadgets
|
||||||
SYMBOL: windows
|
SYMBOL: windows
|
||||||
|
|
Loading…
Reference in New Issue