Documentation updates, menus fix
parent
02eeedf508
commit
5cc28c7e0c
|
@ -2,8 +2,6 @@
|
||||||
- fix alien-callback/SEH bug on win32
|
- fix alien-callback/SEH bug on win32
|
||||||
- x11: scroll up/down wiggles caret
|
- x11: scroll up/down wiggles caret
|
||||||
- tab completion: add a USE: if necessary
|
- tab completion: add a USE: if necessary
|
||||||
- cocoa: horizontal wheel scrolling
|
|
||||||
- rollover is not updated on window focus changes
|
|
||||||
- cocoa: windows are not updated while resizing
|
- cocoa: windows are not updated while resizing
|
||||||
|
|
||||||
+ ui:
|
+ ui:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
USING: gadgets gadgets-listener gadgets-browser gadgets-help
|
USING: gadgets gadgets-listener gadgets-browser gadgets-help
|
||||||
gadgets-presentations gadgets-walker gadgets-dataflow
|
gadgets-presentations gadgets-walker gadgets-dataflow
|
||||||
gadgets-workspace help gadgets-panes gadgets-text listener
|
gadgets-workspace help gadgets-panes gadgets-text listener
|
||||||
definitions prettyprint io parser ;
|
definitions prettyprint io parser modules compiler ;
|
||||||
|
|
||||||
ARTICLE: "ui-presentations" "Presentations in the UI"
|
ARTICLE: "ui-presentations" "Presentations in the UI"
|
||||||
"A " { $emphasis "presentation" } " is a graphical view of an object which is directly linked to the object in some way. The help article links you see in the documentation browser are presentations; and if you " { $link see } " a word in the UI listener, all words in the definition will themselves be presentations."
|
"A " { $emphasis "presentation" } " is a graphical view of an object which is directly linked to the object in some way. The help article links you see in the documentation browser are presentations; and if you " { $link see } " a word in the UI listener, all words in the definition will themselves be presentations."
|
||||||
|
@ -21,26 +21,38 @@ ARTICLE: "ui-listener" "UI listener"
|
||||||
"Completion"
|
"Completion"
|
||||||
{ "Clickable presentations (see " { $link "ui-presentations" } ")" }
|
{ "Clickable presentations (see " { $link "ui-presentations" } ")" }
|
||||||
}
|
}
|
||||||
"The below completion commands display a gadget at the bottom of the listener, known as the mini-buffer. Typing more text narrows down the list of available items. The " { $snippet "UP" } " and " { $snippet "DOWN" } " arrow keys shift the selection between listed items, and the " { $snippet "RETURN" } " key invokes a default operation for the selected item."
|
{ $heading "Listener commands" }
|
||||||
{ $commands listener-gadget }
|
{ $commands listener-gadget "toolbar" }
|
||||||
"The below word commands operate on the token at the caret position in the input area. The quotation commands operate on the entire contents of the input area."
|
{ $heading "Interactor commands" }
|
||||||
{ $commands interactor }
|
{ $commands interactor "interactor" }
|
||||||
|
{ $heading "Completion" }
|
||||||
|
"Completion commands display a gadget at the bottom of the listener, known as the mini-buffer. Typing more text narrows down the list of available items. The " { $snippet "UP" } " and " { $snippet "DOWN" } " arrow keys shift the selection between listed items, and the " { $snippet "RETURN" } " key invokes a default operation for the selected item."
|
||||||
|
{ $commands listener-gadget "completion" }
|
||||||
|
{ $heading "Word commands" }
|
||||||
|
"These commands operate on the token at the caret position in the input area."
|
||||||
|
{ $commands interactor "words" }
|
||||||
|
{ $heading "Quotation commands" }
|
||||||
|
"These commands operate on the entire contents of the input area."
|
||||||
|
{ $commands interactor "quotations" }
|
||||||
|
{ $heading "Editing commands" }
|
||||||
|
"The text editing commands are standard and are documented in the " { $link editor } " class."
|
||||||
|
{ $heading "Implementation" }
|
||||||
"Listeners are instances of " { $link listener-gadget } ". The listener consists of an output area (instance of " { $link pane } "), 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 } "), an input area (instance of " { $link interactor } "), and a stack display kept up to date using a " { $link listener-hook } "." ;
|
||||||
|
|
||||||
ARTICLE: "ui-browser" "UI definition browser"
|
ARTICLE: "ui-browser" "UI definition browser"
|
||||||
{ $commands browser }
|
{ $commands browser "toolbar" }
|
||||||
"Definition browsers are instances of " { $link browser } "." ;
|
"Definition browsers are instances of " { $link browser } "." ;
|
||||||
|
|
||||||
ARTICLE: "ui-help" "UI documentation browser"
|
ARTICLE: "ui-help" "UI documentation browser"
|
||||||
"The documentation browser is used to display Factor documentation, which is rooted at the " { $link "handbook" } " page."
|
"The documentation browser is used to display Factor documentation, which is rooted at the " { $link "handbook" } " page."
|
||||||
{ $commands help-gadget }
|
{ $commands help-gadget "toolbar" }
|
||||||
"Documentation browsers are instances of " { $link help-gadget } "." ;
|
"Documentation browsers are instances of " { $link help-gadget } "." ;
|
||||||
|
|
||||||
ARTICLE: "ui-walker" "UI walker"
|
ARTICLE: "ui-walker" "UI walker"
|
||||||
"The walker single-steps through quotations. To use the walker, enter a piece of code in the listener's input area and press " { $snippet "C+A+w" } "."
|
"The walker single-steps through quotations. To use the walker, enter a piece of code in the listener's input area and press " { $snippet "C+A+w" } "."
|
||||||
$terpri
|
$terpri
|
||||||
"The walker can travel backwards through time, and restore stacks. This does not undo side effects and therefore can only be used reliably on referentially transparent code."
|
"The walker can travel backwards through time, and restore stacks. This does not undo side effects and therefore can only be used reliably on referentially transparent code."
|
||||||
{ $commands walker-gadget }
|
{ $commands walker-gadget "toolbar" }
|
||||||
"Walkers are instances of " { $link walker-gadget } "." ;
|
"Walkers are instances of " { $link walker-gadget } "." ;
|
||||||
|
|
||||||
ARTICLE: "ui-dataflow" "UI dataflow tool"
|
ARTICLE: "ui-dataflow" "UI dataflow tool"
|
||||||
|
@ -49,7 +61,7 @@ $terpri
|
||||||
"Only quotations and words for which a stack effect can be inferred can be viewed. See " { $link "inference" } "."
|
"Only quotations and words for which a stack effect can be inferred can be viewed. See " { $link "inference" } "."
|
||||||
$terpri
|
$terpri
|
||||||
"The dataflow viewer displays the dataflow intermediate representation output by the compiler's optimizer. Therefore inlining and various other optimizations will have already been performed, and the visual representation may not resemble your original code in many ways. An upside of this arrangement is that the dataflow viewer can be used to predict how fast the code will run, because you will see which layers of generic dispatch have been optimized out at compile time."
|
"The dataflow viewer displays the dataflow intermediate representation output by the compiler's optimizer. Therefore inlining and various other optimizations will have already been performed, and the visual representation may not resemble your original code in many ways. An upside of this arrangement is that the dataflow viewer can be used to predict how fast the code will run, because you will see which layers of generic dispatch have been optimized out at compile time."
|
||||||
{ $commands dataflow-gadget }
|
{ $commands dataflow-gadget "toolbar" }
|
||||||
"Dataflow viewers are instances of " { $link dataflow-gadget } "." ;
|
"Dataflow viewers are instances of " { $link dataflow-gadget } "." ;
|
||||||
|
|
||||||
ARTICLE: "ui-cocoa" "Functionality specific to Mac OS X"
|
ARTICLE: "ui-cocoa" "Functionality specific to Mac OS X"
|
||||||
|
@ -77,9 +89,21 @@ $terpri
|
||||||
{ "Single stepping through the code makes the problem obvious, so you right-click on a presentation of the broken word in the stepper, and choose " { $strong "Edit" } " from the resulting popup menu." }
|
{ "Single stepping through the code makes the problem obvious, so you right-click on a presentation of the broken word in the stepper, and choose " { $strong "Edit" } " from the resulting popup menu." }
|
||||||
{ "After fixing the problem in the source editor, you right click on the word in the stepper and invoke " { $strong "Reload" } "." }
|
{ "After fixing the problem in the source editor, you right click on the word in the stepper and invoke " { $strong "Reload" } "." }
|
||||||
}
|
}
|
||||||
"All development tools are integrated into a single-window " { $emphasis "workspace" } ". Multiple workspaces can be open at once, and keyboard commands are provided for switching between tools."
|
{ $heading "Switching tools" }
|
||||||
{ $commands workspace }
|
"All development tools are integrated into a single-window " { $emphasis "workspace" } "."
|
||||||
|
{ $commands workspace "tool-switch" }
|
||||||
|
{ $heading "Opening new windows" }
|
||||||
|
"Multiple workspace windows can be open at once."
|
||||||
|
{ $commands workspace "tool-window" }
|
||||||
|
{ $heading "Scrolling" }
|
||||||
|
"The current tool's scroll pane can be scrolled from the keyboard."
|
||||||
|
{ $commands workspace "scrolling" }
|
||||||
|
{ $heading "Workflow" }
|
||||||
|
"A pair of commands for invoking " { $link reload-modules } " and " { $link recompile } "."
|
||||||
|
{ $commands workspace "workflow" }
|
||||||
|
{ $heading "Implementation" }
|
||||||
"Workspaces are instances of " { $link workspace-window } "."
|
"Workspaces are instances of " { $link workspace-window } "."
|
||||||
|
{ $heading "Tools" }
|
||||||
{ $subsection "ui-presentations" }
|
{ $subsection "ui-presentations" }
|
||||||
{ $subsection "ui-listener" }
|
{ $subsection "ui-listener" }
|
||||||
{ $subsection "ui-browser" }
|
{ $subsection "ui-browser" }
|
||||||
|
|
|
@ -12,12 +12,12 @@ SYMBOL: listener-hook
|
||||||
: (read-multiline) ( quot depth -- newquot ? )
|
: (read-multiline) ( quot depth -- newquot ? )
|
||||||
>r readln dup [
|
>r readln dup [
|
||||||
(parse) depth r> dup >r <= [
|
(parse) depth r> dup >r <= [
|
||||||
( we're done ) r> drop t
|
r> drop t
|
||||||
] [
|
] [
|
||||||
( more input needed ) r> (read-multiline)
|
r> (read-multiline)
|
||||||
] if
|
] if
|
||||||
] [
|
] [
|
||||||
( EOF ) r> 2drop f
|
r> 2drop f
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
: read-multiline ( -- quot ? )
|
: read-multiline ( -- quot ? )
|
||||||
|
|
|
@ -246,6 +246,7 @@ opengl sequences ;
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
2drop dup view-dim swap window set-gadget-dim
|
2drop dup view-dim swap window set-gadget-dim
|
||||||
|
ui-step
|
||||||
] ui-try
|
] ui-try
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@ USING: arrays gadgets kernel math objc sequences ;
|
||||||
|
|
||||||
{
|
{
|
||||||
"windowDidResignKey:" "void" { "id" "SEL" "id" } [
|
"windowDidResignKey:" "void" { "id" "SEL" "id" } [
|
||||||
|
forget-rollover
|
||||||
2nip -> object -> contentView window unfocus-world
|
2nip -> object -> contentView window unfocus-world
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,11 +23,8 @@ M: menu-glass layout* gadget-child prefer ;
|
||||||
hand-loc get-global swap find-world move-hand
|
hand-loc get-global swap find-world move-hand
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
: hide-menu ( -- )
|
|
||||||
find-world hide-glass f menu-mode? set-global ;
|
|
||||||
|
|
||||||
\ menu-glass H{
|
\ menu-glass H{
|
||||||
{ T{ button-up } [ hide-menu ] }
|
{ T{ button-up } [ find-world hide-glass ] }
|
||||||
{ T{ drag } [ retarget-drag ] }
|
{ T{ drag } [ retarget-drag ] }
|
||||||
} set-gestures
|
} set-gestures
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ PROVIDE: library/ui {
|
||||||
"tools/dataflow.factor"
|
"tools/dataflow.factor"
|
||||||
"tools/workspace.factor"
|
"tools/workspace.factor"
|
||||||
"tools/operations.factor"
|
"tools/operations.factor"
|
||||||
|
"text/editor.facts"
|
||||||
} {
|
} {
|
||||||
"test/gadgets.factor"
|
"test/gadgets.factor"
|
||||||
"test/models.factor"
|
"test/models.factor"
|
||||||
|
|
|
@ -70,7 +70,7 @@ USING: gadgets kernel models namespaces sequences ;
|
||||||
[ dup T{ word-elt } select-elt ] unless
|
[ dup T{ word-elt } select-elt ] unless
|
||||||
gadget-selection ;
|
gadget-selection ;
|
||||||
|
|
||||||
editor "Editing commands" {
|
editor "editing" {
|
||||||
{ "Insert newline" T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
|
{ "Insert newline" T{ key-down f f "RETURN" } [ "\n" swap user-input ] }
|
||||||
{ "Insert newline" T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
|
{ "Insert newline" T{ key-down f { S+ } "RETURN" } [ "\n" swap user-input ] }
|
||||||
{ "Insert newline" T{ key-down f f "ENTER" } [ "\n" swap user-input ] }
|
{ "Insert newline" T{ key-down f f "ENTER" } [ "\n" swap user-input ] }
|
||||||
|
@ -82,7 +82,7 @@ editor "Editing commands" {
|
||||||
{ "Delete to end of line" T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
|
{ "Delete to end of line" T{ key-down f { A+ } "BACKSPACE" } [ T{ one-line-elt } editor-backspace ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
editor "Clipboard commands" {
|
editor "clipboard" {
|
||||||
{ "Paste" T{ paste-action } [ clipboard get paste-clipboard ] }
|
{ "Paste" T{ paste-action } [ clipboard get paste-clipboard ] }
|
||||||
{ "Paste selection" T{ button-up f f 2 } [ selection get paste-clipboard ] }
|
{ "Paste selection" T{ button-up f f 2 } [ selection get paste-clipboard ] }
|
||||||
{ "Copy" T{ copy-action } [ clipboard get editor-copy ] }
|
{ "Copy" T{ copy-action } [ clipboard get editor-copy ] }
|
||||||
|
@ -90,7 +90,7 @@ editor "Clipboard commands" {
|
||||||
{ "Cut" T{ cut-action } [ clipboard get editor-cut ] }
|
{ "Cut" T{ cut-action } [ clipboard get editor-cut ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
editor "Caret motion commands" {
|
editor "caret" {
|
||||||
{ "Position caret" T{ button-down } [ editor-mouse-down ] }
|
{ "Position caret" T{ button-down } [ editor-mouse-down ] }
|
||||||
{ "Previous character" T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
|
{ "Previous character" T{ key-down f f "LEFT" } [ T{ char-elt } editor-prev ] }
|
||||||
{ "Next character" T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
|
{ "Next character" T{ key-down f f "RIGHT" } [ T{ char-elt } editor-next ] }
|
||||||
|
@ -104,7 +104,7 @@ editor "Caret motion commands" {
|
||||||
{ "End of document" T{ key-down f { C+ } "END" } [ editor-doc-end ] }
|
{ "End of document" T{ key-down f { C+ } "END" } [ editor-doc-end ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
editor "Text selection commands" {
|
editor "selection" {
|
||||||
{ "Extend selection" T{ button-down f { S+ } } [ editor-extend-selection ] }
|
{ "Extend selection" T{ button-down f { S+ } } [ editor-extend-selection ] }
|
||||||
{ "Start selection" T{ drag } [ editor-mouse-drag ] }
|
{ "Start selection" T{ drag } [ editor-mouse-drag ] }
|
||||||
{ "Focus editor" T{ gain-focus } [ focus-editor ] }
|
{ "Focus editor" T{ gain-focus } [ focus-editor ] }
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
IN: gadgets-text
|
||||||
|
USING: help gadgets ;
|
||||||
|
|
||||||
|
HELP: editor
|
||||||
|
{ $class-description "Instances of this class are multi-line text editors which edit an underlying " { $link document } " model."
|
||||||
|
$terpri
|
||||||
|
"The " { $link interactor } " gadget is built off the " { $link editor } " gadget and is used by the " { $link "ui-listener" } "." }
|
||||||
|
{ $heading "General commands" }
|
||||||
|
{ $commands editor "editing" }
|
||||||
|
{ $heading "Caret motion commands" }
|
||||||
|
{ $commands editor "caret" }
|
||||||
|
{ $heading "Selection commands" }
|
||||||
|
{ $commands editor "selection" } ;
|
|
@ -58,7 +58,7 @@ M: interactor stream-readln
|
||||||
[ over set-interactor-continuation stop ] callcc0
|
[ over set-interactor-continuation stop ] callcc0
|
||||||
] when interactor-queue pop ;
|
] when interactor-queue pop ;
|
||||||
|
|
||||||
interactor "Interactor commands" {
|
interactor "interactor" {
|
||||||
{ "Evaluate" T{ key-down f f "RETURN" } [ interactor-commit ] }
|
{ "Evaluate" T{ key-down f f "RETURN" } [ interactor-commit ] }
|
||||||
{ "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
|
{ "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
|
@ -115,7 +115,7 @@ M: browser focusable-child* browser-search ;
|
||||||
: clear-browser ( browser -- )
|
: clear-browser ( browser -- )
|
||||||
browser-definitions close-definitions ;
|
browser-definitions close-definitions ;
|
||||||
|
|
||||||
browser "Toolbar" {
|
browser "toolbar" {
|
||||||
{ "Clear" T{ key-down f f "CLEAR" } [ clear-browser ] }
|
{ "Clear" T{ key-down f f "CLEAR" } [ clear-browser ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ DEFER: (compute-heights)
|
||||||
! The UI tool
|
! The UI tool
|
||||||
TUPLE: dataflow-gadget history ;
|
TUPLE: dataflow-gadget history ;
|
||||||
|
|
||||||
dataflow-gadget "Toolbar" {
|
dataflow-gadget "toolbar" {
|
||||||
{ "Back" T{ key-down f { C+ } "b" } [ dataflow-gadget-history go-back ] }
|
{ "Back" T{ key-down f { C+ } "b" } [ dataflow-gadget-history go-back ] }
|
||||||
{ "Forward" T{ key-down f { C+ } "f" } [ dataflow-gadget-history go-forward ] }
|
{ "Forward" T{ key-down f { C+ } "f" } [ dataflow-gadget-history go-forward ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
|
@ -8,9 +8,10 @@ generic hashtables tools io kernel listener math models
|
||||||
namespaces parser prettyprint sequences shells strings styles
|
namespaces parser prettyprint sequences shells strings styles
|
||||||
threads words definitions help ;
|
threads words definitions help ;
|
||||||
|
|
||||||
TUPLE: listener-gadget input output stack minibuffer ;
|
TUPLE: listener-gadget input output stack use minibuffer ;
|
||||||
|
|
||||||
: ui-listener-hook ( listener -- )
|
: ui-listener-hook ( listener -- )
|
||||||
|
use get over set-listener-gadget-use
|
||||||
>r datastack r> listener-gadget-stack set-model ;
|
>r datastack r> listener-gadget-stack set-model ;
|
||||||
|
|
||||||
: listener-stream ( listener -- stream )
|
: listener-stream ( listener -- stream )
|
||||||
|
@ -151,7 +152,7 @@ M: listener-gadget tool-help
|
||||||
: insert-completion ( completion -- )
|
: insert-completion ( completion -- )
|
||||||
word-name find-listener listener-gadget-input user-input ;
|
word-name find-listener listener-gadget-input user-input ;
|
||||||
|
|
||||||
listener-gadget "Toolbar" {
|
listener-gadget "toolbar" {
|
||||||
{ "Restart" T{ key-down f { C+ } "r" } [ start-listener ] }
|
{ "Restart" T{ key-down f { C+ } "r" } [ start-listener ] }
|
||||||
{
|
{
|
||||||
"History"
|
"History"
|
||||||
|
@ -171,7 +172,7 @@ listener-gadget "Toolbar" {
|
||||||
{ "Send EOF" T{ key-down f { C+ } "d" } [ listener-eof ] }
|
{ "Send EOF" T{ key-down f { C+ } "d" } [ listener-eof ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
listener-gadget "Completion commands" {
|
listener-gadget "completion" {
|
||||||
{
|
{
|
||||||
"Complete word"
|
"Complete word"
|
||||||
T{ key-down f f "TAB" }
|
T{ key-down f f "TAB" }
|
||||||
|
|
|
@ -187,7 +187,7 @@ M: operation invoke-command ( target operation -- )
|
||||||
! Define commands in terms of operations
|
! Define commands in terms of operations
|
||||||
|
|
||||||
! Tile commands
|
! Tile commands
|
||||||
tile "Toolbar"
|
tile "toolbar"
|
||||||
\ word class-operations [ tile-definition ] modify-operations
|
\ word class-operations [ tile-definition ] modify-operations
|
||||||
[ command-name "Browse" = not ] subset
|
[ command-name "Browse" = not ] subset
|
||||||
{ "Close" f [ close-tile ] } add*
|
{ "Close" f [ close-tile ] } add*
|
||||||
|
@ -200,17 +200,17 @@ define-commands
|
||||||
: quot-action ( interactor -- quot )
|
: quot-action ( interactor -- quot )
|
||||||
dup editor-text swap select-all parse ;
|
dup editor-text swap select-all parse ;
|
||||||
|
|
||||||
interactor "Word commands"
|
interactor "words"
|
||||||
\ word class-operations
|
\ word class-operations
|
||||||
[ word-action ] modify-listener-operations
|
[ word-action ] modify-listener-operations
|
||||||
define-commands
|
define-commands
|
||||||
|
|
||||||
interactor "Quotation commands"
|
interactor "quotations"
|
||||||
quotation class-operations
|
quotation class-operations
|
||||||
[ quot-action ] modify-listener-operations
|
[ quot-action ] modify-listener-operations
|
||||||
define-commands
|
define-commands
|
||||||
|
|
||||||
help-gadget "Toolbar" {
|
help-gadget "toolbar" {
|
||||||
{ "Back" T{ key-down f { C+ } "b" } [ help-gadget-history go-back ] }
|
{ "Back" T{ key-down f { C+ } "b" } [ help-gadget-history go-back ] }
|
||||||
{ "Forward" T{ key-down f { C+ } "f" } [ help-gadget-history go-forward ] }
|
{ "Forward" T{ key-down f { C+ } "f" } [ help-gadget-history go-forward ] }
|
||||||
{ "Home" T{ key-down f { C+ } "h" } [ go-home ] }
|
{ "Home" T{ key-down f { C+ } "h" } [ go-home ] }
|
||||||
|
|
|
@ -77,7 +77,7 @@ M: walker-gadget tool-help drop "ui-walker" ;
|
||||||
dup [ step-all ] walker-command reset-walker
|
dup [ step-all ] walker-command reset-walker
|
||||||
find-workspace listener-gadget select-tool ;
|
find-workspace listener-gadget select-tool ;
|
||||||
|
|
||||||
walker-gadget "Toolbar" {
|
walker-gadget "toolbar" {
|
||||||
{ "Step" T{ key-down f f "s" } [ walker-step ] }
|
{ "Step" T{ key-down f f "s" } [ walker-step ] }
|
||||||
{ "Step in" T{ key-down f f "i" } [ walker-step-in ] }
|
{ "Step in" T{ key-down f f "i" } [ walker-step-in ] }
|
||||||
{ "Step out" T{ key-down f f "o" } [ walker-step-out ] }
|
{ "Step out" T{ key-down f f "o" } [ walker-step-out ] }
|
||||||
|
|
|
@ -40,7 +40,7 @@ M: tool tool-help tool-gadget tool-help ;
|
||||||
: tool-help-window ( tool -- )
|
: tool-help-window ( tool -- )
|
||||||
tool-help [ help-window ] when* ;
|
tool-help [ help-window ] when* ;
|
||||||
|
|
||||||
tool "Tool commands" {
|
tool "toolbar" {
|
||||||
{ "Tool help" T{ key-down f f "F1" } [ tool-help-window ] }
|
{ "Tool help" T{ key-down f f "F1" } [ tool-help-window ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
|
@ -86,12 +86,12 @@ M: workspace pref-dim* delegate pref-dim* { 550 650 } vmax ;
|
||||||
: tool-scroll-down ( workspace -- )
|
: tool-scroll-down ( workspace -- )
|
||||||
current-page tool-scroller [ scroll-down-page ] when* ;
|
current-page tool-scroller [ scroll-down-page ] when* ;
|
||||||
|
|
||||||
workspace "Scrolling primary pane" {
|
workspace "scrolling" {
|
||||||
{ "Scroll up" T{ key-down f { C+ } "PAGE_UP" } [ tool-scroll-up ] }
|
{ "Scroll up" T{ key-down f { C+ } "PAGE_UP" } [ tool-scroll-up ] }
|
||||||
{ "Scroll down" T{ key-down f { C+ } "PAGE_DOWN" } [ tool-scroll-down ] }
|
{ "Scroll down" T{ key-down f { C+ } "PAGE_DOWN" } [ tool-scroll-down ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
workspace "Tool switching commands" {
|
workspace "tool-switch" {
|
||||||
{ "Listener" T{ key-down f f "F2" } [ listener-gadget select-tool ] }
|
{ "Listener" T{ key-down f f "F2" } [ listener-gadget select-tool ] }
|
||||||
{ "Messages" T{ key-down f f "F3" } [ messages select-tool ] }
|
{ "Messages" T{ key-down f f "F3" } [ messages select-tool ] }
|
||||||
{ "Definitions" T{ key-down f f "F4" } [ browser select-tool ] }
|
{ "Definitions" T{ key-down f f "F4" } [ browser select-tool ] }
|
||||||
|
@ -100,13 +100,13 @@ workspace "Tool switching commands" {
|
||||||
{ "Dataflow" T{ key-down f f "F7" } [ dataflow-gadget select-tool ] }
|
{ "Dataflow" T{ key-down f f "F7" } [ dataflow-gadget select-tool ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
workspace "Tool window commands" {
|
workspace "tool-window" {
|
||||||
{ "New listener" T{ key-down f { S+ } "F2" } [ listener-gadget tool-window drop ] }
|
{ "New listener" T{ key-down f { S+ } "F2" } [ listener-gadget tool-window drop ] }
|
||||||
{ "New definitions" T{ key-down f { S+ } "F3" } [ browser tool-window drop ] }
|
{ "New definitions" T{ key-down f { S+ } "F3" } [ browser tool-window drop ] }
|
||||||
{ "New documentation" T{ key-down f { S+ } "F4" } [ help-gadget tool-window drop ] }
|
{ "New documentation" T{ key-down f { S+ } "F4" } [ help-gadget tool-window drop ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
||||||
workspace "Workflow commands" {
|
workspace "workflow" {
|
||||||
{ "Reload changed sources" T{ key-down f f "F8" } [ drop [ reload-modules ] call-listener ] }
|
{ "Reload changed sources" T{ key-down f f "F8" } [ drop [ reload-modules ] call-listener ] }
|
||||||
{ "Recompile changed words" T{ key-down f { S+ } "F8" } [ drop [ recompile ] call-listener ] }
|
{ "Recompile changed words" T{ key-down f { S+ } "F8" } [ drop [ recompile ] call-listener ] }
|
||||||
} define-commands
|
} define-commands
|
||||||
|
|
|
@ -120,7 +120,7 @@ C: titled-gadget ( gadget title -- )
|
||||||
windows get [ empty? not ] [ f ] if* ;
|
windows get [ empty? not ] [ f ] if* ;
|
||||||
|
|
||||||
: <toolbar> ( target classes -- toolbar )
|
: <toolbar> ( target classes -- toolbar )
|
||||||
[ commands "Toolbar" swap hash ] map concat
|
[ commands "toolbar" swap hash ] map concat
|
||||||
[ <command-presentation> ] map-with
|
[ <command-presentation> ] map-with
|
||||||
make-shelf ;
|
make-shelf ;
|
||||||
|
|
||||||
|
@ -128,19 +128,14 @@ C: titled-gadget ( gadget title -- )
|
||||||
dup command-name swap command-gesture gesture>string
|
dup command-name swap command-gesture gesture>string
|
||||||
2array ;
|
2array ;
|
||||||
|
|
||||||
: command-table. ( commands group -- )
|
: commands. ( commands -- )
|
||||||
$heading
|
|
||||||
[ command-gesture key-down? ] subset
|
[ command-gesture key-down? ] subset
|
||||||
[ command-description ] map
|
[ command-description ] map
|
||||||
{ "Command" "Shortcut" } add* $table ;
|
{ { $strong "Command" } { $strong "Shortcut" } } add*
|
||||||
|
$table ;
|
||||||
: commands. ( hash -- )
|
|
||||||
hash>alist
|
|
||||||
[ [ first ] 2apply <=> ] sort
|
|
||||||
[ first2 swap command-table. ] each ;
|
|
||||||
|
|
||||||
: $commands ( elt -- )
|
: $commands ( elt -- )
|
||||||
dup array? [ first ] when commands commands. ;
|
first2 swap commands hash commands. ;
|
||||||
|
|
||||||
TUPLE: labelled-gadget content ;
|
TUPLE: labelled-gadget content ;
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ M: world layout*
|
||||||
] when* drop ;
|
] when* drop ;
|
||||||
|
|
||||||
: hide-glass ( world -- )
|
: hide-glass ( world -- )
|
||||||
|
f menu-mode? set-global
|
||||||
dup world-glass [ unparent ] when*
|
dup world-glass [ unparent ] when*
|
||||||
f swap set-world-glass ;
|
f swap set-world-glass ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue