// These classes use a keybinding system based on the design implemented in Scintilla.Net which is an
// MIT licensed open source project https://github.com/jacobslusser/ScintillaNET/blob/master/src/ScintillaNET/Command.cs
namespace Terminal.Gui;
/// Actions which can be performed by the application or bound to keys in a control.
public enum Command
{
/// The default command. For this focuses the view.
Default,
/// Moves down one item (cell, line, etc...).
LineDown,
/// Extends the selection down one (cell, line, etc...).
LineDownExtend,
/// Moves down to the last child node of the branch that holds the current selection.
LineDownToLastBranch,
/// Scrolls down one (cell, line, etc...) (without changing the selection).
ScrollDown,
// --------------------------------------------------------------------
/// Moves up one (cell, line, etc...).
LineUp,
/// Extends the selection up one item (cell, line, etc...).
LineUpExtend,
/// Moves up to the first child node of the branch that holds the current selection.
LineUpToFirstBranch,
/// Scrolls up one item (cell, line, etc...) (without changing the selection).
ScrollUp,
///
/// Moves the selection left one by the minimum increment supported by the e.g. single
/// character, cell, item etc.
///
Left,
/// Scrolls one item (cell, character, etc...) to the left
ScrollLeft,
///
/// Extends the selection left one by the minimum increment supported by the view e.g. single character, cell,
/// item etc.
///
LeftExtend,
///
/// Moves the selection right one by the minimum increment supported by the view e.g. single character, cell, item
/// etc.
///
Right,
/// Scrolls one item (cell, character, etc...) to the right.
ScrollRight,
///
/// Extends the selection right one by the minimum increment supported by the view e.g. single character, cell,
/// item etc.
///
RightExtend,
/// Moves the caret to the start of the previous word.
WordLeft,
/// Extends the selection to the start of the previous word.
WordLeftExtend,
/// Moves the caret to the start of the next word.
WordRight,
/// Extends the selection to the start of the next word.
WordRightExtend,
/// Cuts to the clipboard the characters from the current position to the end of the line.
CutToEndLine,
/// Cuts to the clipboard the characters from the current position to the start of the line.
CutToStartLine,
/// Deletes the characters forwards.
KillWordForwards,
/// Deletes the characters backwards.
KillWordBackwards,
///
/// Toggles overwrite mode such that newly typed text overwrites the text that is already there (typically
/// associated with the Insert key).
///
ToggleOverwrite,
///
/// Enables overwrite mode such that newly typed text overwrites the text that is already there (typically
/// associated with the Insert key).
///
EnableOverwrite,
/// Disables overwrite mode ()
DisableOverwrite,
/// Move one page down.
PageDown,
/// Move one page page extending the selection to cover revealed objects/characters.
PageDownExtend,
/// Move one page up.
PageUp,
/// Move one page up extending the selection to cover revealed objects/characters.
PageUpExtend,
/// Moves to the top/home.
TopHome,
/// Extends the selection to the top/home.
TopHomeExtend,
/// Moves to the bottom/end.
BottomEnd,
/// Extends the selection to the bottom/end.
BottomEndExtend,
/// Open the selected item.
OpenSelectedItem,
/// Toggle the checked state.
ToggleChecked,
/// Accepts the current state (e.g. selection, button press etc).
Accept,
/// Toggles the Expanded or collapsed state of a a list or item (with subitems).
ToggleExpandCollapse,
/// Expands a list or item (with subitems).
Expand,
/// Recursively Expands all child items and their child items (if any).
ExpandAll,
/// Collapses a list or item (with subitems).
Collapse,
/// Recursively collapses a list items of their children (if any).
CollapseAll,
/// Cancels an action or any temporary states on the control e.g. expanding a combo list.
Cancel,
/// Unix emulation.
UnixEmulation,
/// Deletes the character on the right.
DeleteCharRight,
/// Deletes the character on the left.
DeleteCharLeft,
/// Selects all objects.
SelectAll,
/// Deletes all objects.
DeleteAll,
/// Moves the cursor to the start of line.
StartOfLine,
/// Extends the selection to the start of line.
StartOfLineExtend,
/// Moves the cursor to the end of line.
EndOfLine,
/// Extends the selection to the end of line.
EndOfLineExtend,
/// Moves the cursor to the top of page.
StartOfPage,
/// Moves the cursor to the bottom of page.
EndOfPage,
/// Moves to the left page.
PageLeft,
/// Moves to the right page.
PageRight,
/// Moves to the left begin.
LeftHome,
/// Extends the selection to the left begin.
LeftHomeExtend,
/// Moves to the right end.
RightEnd,
/// Extends the selection to the right end.
RightEndExtend,
/// Undo changes.
Undo,
/// Redo changes.
Redo,
/// Copies the current selection.
Copy,
/// Cuts the current selection.
Cut,
/// Pastes the current selection.
Paste,
/// Quit a .
QuitToplevel,
/// Suspend a application (Only implemented in ).
Suspend,
/// Moves focus to the next view.
NextView,
/// Moves focuss to the previous view.
PreviousView,
/// Moves focus to the next view or Toplevel (case of Overlapped).
NextViewOrTop,
/// Moves focus to the next previous or Toplevel (case of Overlapped).
PreviousViewOrTop,
/// Refresh.
Refresh,
/// Toggles the selection.
ToggleExtend,
/// Inserts a new item.
NewLine,
/// Tabs to the next item.
Tab,
/// Tabs back to the previous item.
BackTab,
/// Saves the current document.
Save,
/// Saves the current document with a new name.
SaveAs,
/// Creates a new document.
New,
/// Moves selection to an item (e.g. highlighting a different menu item) without necessarily accepting it.
Select,
/// Shows context about the item (e.g. a context menu).
ShowContextMenu
}