Fooling around with commands

slava 2006-08-24 23:15:50 +00:00
parent 23b7d93944
commit 474695cfff
6 changed files with 76 additions and 67 deletions

View File

@ -46,7 +46,16 @@ M: object gesture>string drop f ;
"gestures" set-word-prop ;
: 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 {
{ f "Cut" T{ key-down f { C+ } "x" } [ T{ cut-action } send-action ] }

View File

@ -64,46 +64,46 @@ sequences ;
: editor-doc-end ( editor -- ) T{ doc-elt } editor-next ;
editor H{
{ T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
{ T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
{ T{ button-down } [ editor-mouse-down ] }
{ T{ drag } [ editor-mouse-drag ] }
{ T{ gain-focus } [ focus-editor ] }
{ T{ lose-focus } [ unfocus-editor ] }
{ T{ paste-action } [ clipboard get paste-clipboard ] }
{ T{ button-up f 2 } [ selection get paste-clipboard ] }
{ T{ copy-action } [ clipboard get editor-copy ] }
{ T{ button-up } [ selection get editor-copy ] }
{ T{ cut-action } [ clipboard get editor-cut ] }
{ T{ delete-action } [ remove-editor-selection ] }
{ T{ select-all-action } [ T{ doc-elt } select-elt ] }
{ T{ key-down f { C+ } "l" } [ T{ one-line-elt } select-elt ] }
{ T{ key-down f { C+ } "w" } [ T{ word-elt } select-elt ] }
{ T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
{ T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
{ T{ key-down f f "UP" } [ T{ line-elt } editor-prev ] }
{ T{ key-down f f "DOWN" } [ T{ line-elt } editor-next ] }
{ T{ key-down f { S+ } "LEFT" } [ T{ char-elt } editor-select-prev ] }
{ T{ key-down f { S+ } "RIGHT" } [ T{ char-elt } editor-select-next ] }
{ T{ key-down f { S+ } "UP" } [ T{ line-elt } editor-select-prev ] }
{ T{ key-down f { S+ } "DOWN" } [ T{ line-elt } editor-select-next ] }
{ T{ key-down f { C+ } "LEFT" } [ T{ word-elt } editor-prev ] }
{ T{ key-down f { C+ } "RIGHT" } [ T{ word-elt } editor-next ] }
{ 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 ] }
{ T{ key-down f f "HOME" } [ T{ one-line-elt } editor-prev ] }
{ 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 ] }
{ T{ key-down f { S+ } "END" } [ T{ one-line-elt } editor-select-next ] }
{ T{ key-down f { C+ } "HOME" } [ editor-doc-start ] }
{ T{ key-down f { C+ } "END" } [ editor-doc-end ] }
{ 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 ] }
{ T{ key-down f f "DELETE" } [ T{ char-elt } editor-delete ] }
{ T{ key-down f f "BACKSPACE" } [ T{ char-elt } editor-backspace ] }
{ T{ key-down f { C+ } "DELETE" } [ T{ word-elt } editor-delete ] }
{ T{ key-down f { C+ } "BACKSPACE" } [ T{ word-elt } editor-backspace ] }
{ T{ key-down f { A+ } "DELETE" } [ T{ one-line-elt } editor-delete ] }
{ T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
} set-gestures
editor {
{ f "Insert newline" T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
{ f "Insert newline" T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
{ f "Position caret" T{ button-down } [ editor-mouse-down ] }
{ f "Start selection" T{ drag } [ editor-mouse-drag ] }
{ f "Focus editor" T{ gain-focus } [ focus-editor ] }
{ f "Unfocus editor" T{ lose-focus } [ unfocus-editor ] }
{ f "Paste" T{ paste-action } [ clipboard get paste-clipboard ] }
{ f "Paste selection" T{ button-up f 2 } [ selection get paste-clipboard ] }
{ f "Copy" T{ copy-action } [ clipboard get editor-copy ] }
{ f "Copy selection" T{ button-up } [ selection get editor-copy ] }
{ f "Cut" T{ cut-action } [ clipboard get editor-cut ] }
{ f "Clear" T{ delete-action } [ remove-editor-selection ] }
{ f "Select all" T{ select-all-action } [ T{ doc-elt } select-elt ] }
{ f "Select line" T{ key-down f { C+ } "l" } [ T{ one-line-elt } select-elt ] }
{ f "Select word" T{ key-down f { C+ } "w" } [ T{ word-elt } select-elt ] }
{ f "Previous character" T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
{ f "Next character" T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
{ f "Previous line" T{ key-down f f "UP" } [ T{ line-elt } editor-prev ] }
{ f "Next line" T{ key-down f f "DOWN" } [ T{ line-elt } editor-next ] }
{ f "Select previous character" T{ key-down f { S+ } "LEFT" } [ T{ char-elt } editor-select-prev ] }
{ f "Select next character" T{ key-down f { S+ } "RIGHT" } [ T{ char-elt } editor-select-next ] }
{ f "Select previous line" T{ key-down f { S+ } "UP" } [ T{ line-elt } editor-select-prev ] }
{ f "Select next line" T{ key-down f { S+ } "DOWN" } [ T{ line-elt } editor-select-next ] }
{ f "Previous word" T{ key-down f { C+ } "LEFT" } [ T{ word-elt } editor-prev ] }
{ f "Next word" T{ key-down f { C+ } "RIGHT" } [ T{ word-elt } editor-next ] }
{ f "Select previous line" T{ key-down f { S+ C+ } "LEFT" } [ T{ word-elt } editor-select-prev ] }
{ f "Select next line" T{ key-down f { S+ C+ } "RIGHT" } [ T{ word-elt } editor-select-next ] }
{ f "Start of line" T{ key-down f f "HOME" } [ T{ one-line-elt } editor-prev ] }
{ f "End of line" T{ key-down f f "END" } [ T{ one-line-elt } editor-next ] }
{ f "Select to start of line" T{ key-down f { S+ } "HOME" } [ T{ one-line-elt } editor-select-prev ] }
{ f "Select to end of line" T{ key-down f { S+ } "END" } [ T{ one-line-elt } editor-select-next ] }
{ f "Start of document" T{ key-down f { C+ } "HOME" } [ editor-doc-start ] }
{ f "End of document" T{ key-down f { C+ } "END" } [ editor-doc-end ] }
{ f "Select start of document" T{ key-down f { C+ S+ } "HOME" } [ T{ doc-elt } editor-select-prev ] }
{ f "Select end of document" T{ key-down f { C+ S+ } "END" } [ T{ doc-elt } editor-select-next ] }
{ f "Delete next character" T{ key-down f f "DELETE" } [ T{ char-elt } editor-delete ] }
{ f "Delete previous character" T{ key-down f f "BACKSPACE" } [ T{ char-elt } editor-backspace ] }
{ f "Delete previous word" T{ key-down f { C+ } "DELETE" } [ T{ word-elt } editor-delete ] }
{ f "Delete next word" T{ key-down f { C+ } "BACKSPACE" } [ T{ word-elt } editor-backspace ] }
{ f "Delete to start of line" T{ key-down f { A+ } "DELETE" } [ T{ one-line-elt } editor-delete ] }
{ f "Delete to end of line" T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
} define-commands

View File

@ -15,7 +15,7 @@ C: field ( model -- field )
[ field-model [ dupd set-model ] when* ] keep
select-all ;
field H{
{ T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
{ T{ key-down f f "RETURN" } [ field-commit drop ] }
} set-gestures
field {
{ f "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
{ f "Accept input" T{ key-down f f "RETURN" } [ field-commit drop ] }
} define-commands

View File

@ -76,20 +76,20 @@ SYMBOL: structured-input
: use-word ( str -- )
words-named [ word-vocabulary dup print use+ ] each ;
interactor H{
{ T{ key-down f f "RETURN" } [ interactor-commit ] }
{ 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 ] }
{ T{ key-down f { C+ } "d" } [ f swap interactor-eval ] }
{ T{ key-down f { C+ } "i" } [ "infer ." quot-action ] }
{ T{ key-down f { C+ } "w" } [ "walk" quot-action ] }
{ T{ key-down f { A+ } "s" } [ [ search see ] word-action ] }
{ T{ key-down f { A+ } "j" } [ [ search jedit ] word-action ] }
{ T{ key-down f { A+ } "r" } [ [ search reload ] word-action ] }
{ T{ key-down f { A+ } "a" } [ [ apropos ] word-action ] }
{ T{ key-down f { A+ } "u" } [ [ use-word ] word-action ] }
{ T{ key-down f f "TAB" } [ [ usable-words (apropos) ] word-action ] }
} set-gestures
interactor {
{ f "Evaluate input" T{ key-down f f "RETURN" } [ interactor-commit ] }
{ f "Clear output" T{ key-down f { A+ } "c" } [ dup [ interactor-output pane-clear ] curry swap interactor-call ] }
{ f "History" T{ key-down f { C+ } "h" } [ dup [ interactor-history. ] curry swap interactor-call ] }
{ f "Send EOF" T{ key-down f { C+ } "d" } [ f swap interactor-eval ] }
{ f "Infer input" T{ key-down f { C+ } "i" } [ "infer ." quot-action ] }
{ f "Single step input" T{ key-down f { C+ } "w" } [ "walk" quot-action ] }
{ f "See at caret" T{ key-down f { A+ } "s" } [ [ search see ] word-action ] }
{ f "jEdit at caret" T{ key-down f { A+ } "j" } [ [ search jedit ] word-action ] }
{ f "Reload at caret" T{ key-down f { A+ } "r" } [ [ search reload ] word-action ] }
{ f "Apropos at caret (all)" T{ key-down f { A+ } "a" } [ [ apropos ] word-action ] }
{ f "Use word at caret" T{ key-down f { A+ } "u" } [ [ use-word ] word-action ] }
{ f "Apropos at caret (used)" T{ key-down f f "TAB" } [ [ usable-words (apropos) ] word-action ] }
} define-commands
M: interactor stream-readln
dup interactor-queue empty? [

View File

@ -3,7 +3,7 @@
IN: gadgets
USING: gadgets-presentations memory io gadgets-panes
gadgets-scrolling namespaces help kernel gadgets-listener
gadgets-browser ;
gadgets-browser gadgets-search ;
: handbook-window ( -- )
T{ link f "handbook" } show ;

View File

@ -1,10 +1,10 @@
! Copyright (C) 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: gadgets
USING: arrays errors gadgets gadgets-frames gadgets-grids
gadgets-labels gadgets-panes gadgets-theme gadgets-viewports
generic hashtables io kernel math models namespaces prettyprint
queues sequences test threads ;
USING: arrays errors gadgets gadgets-buttons gadgets-frames
gadgets-grids gadgets-labels gadgets-panes gadgets-theme
gadgets-viewports generic hashtables io kernel math models
namespaces prettyprint queues sequences test threads ;
! Assoc mapping aliens to gadgets
SYMBOL: windows