xnano.actions
xnano.actions
¶
xnano.actions
Describe keyboard, mouse, focus, clipboard, resize, tick, and request actions.
Classes:
-
Action–Declarative event trigger.
-
KeyboardAction–Match keyboard bindings and an optional transition.
-
MouseAction–Match mouse buttons and an optional transition.
-
ClickAction–Match a field click.
-
FocusAction–Match a focus transition.
-
ClipboardAction–Match clipboard text.
-
TickAction–Match a runtime tick.
-
ResizeAction–Match viewport dimensions.
-
RequestAction–Match an HTTP method and path.
-
Actions–Perform actions through a runtime.
Functions:
-
normalize_binding–Normalize a
ctrl+shift+kstyle binding.
Attributes:
-
KeyboardEventKind(TypeAlias) –Keyboard event phase.
-
MouseEventKind(TypeAlias) –Mouse event phase.
-
FocusEventKind(TypeAlias) –Focus transition.
-
NormalizedBinding(TypeAlias) –Normalized keyboard binding as
(modifiers, key).
KeyboardEventKind
module-attribute
¶
Keyboard event phase.
MouseEventKind
module-attribute
¶
MouseEventKind: TypeAlias = Literal[
"press",
"release",
"drag",
"move",
"scroll_up",
"scroll_down",
"scroll_left",
"scroll_right",
]
Mouse event phase.
FocusEventKind
module-attribute
¶
Focus transition.
NormalizedBinding
module-attribute
¶
Normalized keyboard binding as (modifiers, key).
Action
dataclass
¶
Bases: ABC
Declarative event trigger.
Examples:
save = Action.keyboard("ctrl+s")
@on_action(save)
def save_document(self) -> None:
...
terminal.actions.perform(save)
Methods:
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
-
matches–Return whether
eventsatisfies this action.
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
KeyboardAction
dataclass
¶
KeyboardAction(
bindings: tuple[KeyboardBinding, ...] = (),
kind: KeyboardEventKind | None = None,
)
Bases: Action
Match keyboard bindings and an optional transition.
Attributes:
-
bindings(tuple[KeyboardBinding, ...]) –Accepted keyboard bindings.
-
kind(KeyboardEventKind | None) –Required keyboard transition, or any transition.
Methods:
-
matches–Return whether an event matches this keyboard action.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
bindings
class-attribute
instance-attribute
¶
bindings: tuple[KeyboardBinding, ...] = ()
Accepted keyboard bindings.
kind
class-attribute
instance-attribute
¶
kind: KeyboardEventKind | None = None
Required keyboard transition.
matches
¶
Return whether an event matches this keyboard action.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
MouseAction
dataclass
¶
MouseAction(
buttons: tuple[MouseButton, ...] = (),
kind: MouseEventKind | None = None,
)
Bases: Action
Match mouse buttons and an optional transition.
Attributes:
-
buttons(tuple[MouseButton, ...]) –Accepted mouse buttons.
-
kind(MouseEventKind | None) –Required mouse transition, or any transition.
Methods:
-
matches–Return whether an event matches this mouse action.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
buttons
class-attribute
instance-attribute
¶
buttons: tuple[MouseButton, ...] = ()
Accepted mouse buttons.
kind
class-attribute
instance-attribute
¶
kind: MouseEventKind | None = None
Required mouse transition.
matches
¶
Return whether an event matches this mouse action.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
ClickAction
dataclass
¶
ClickAction(
field: str | None = None, button: MouseButton = "left"
)
Bases: Action
Match a field click.
Attributes:
-
field(str | None) –Required field name, or any field.
-
button(MouseButton) –Required mouse button.
Methods:
-
matches–Return whether an event matches this click action.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
matches
¶
Return whether an event matches this click action.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
FocusAction
dataclass
¶
FocusAction(
field: str | None = None,
kind: FocusEventKind | None = None,
)
Bases: Action
Match a focus transition.
Attributes:
-
field(str | None) –Required field name, or any field.
-
kind(FocusEventKind | None) –Required focus transition, or any transition.
Methods:
-
matches–Return whether an event matches this focus action.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
kind
class-attribute
instance-attribute
¶
kind: FocusEventKind | None = None
Required focus transition.
matches
¶
Return whether an event matches this focus action.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
ClipboardAction
dataclass
¶
ClipboardAction(text: str | None = None)
Bases: Action
Match clipboard text.
Attributes:
Methods:
-
matches–Return whether an event matches this clipboard action.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
matches
¶
Return whether an event matches this clipboard action.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
TickAction
dataclass
¶
TickAction(interval_ms: int = 0)
Bases: Action
Match a runtime tick.
Attributes:
-
interval_ms(int) –Requested tick interval in milliseconds.
Methods:
-
matches–Return whether an event is a runtime tick.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
interval_ms
class-attribute
instance-attribute
¶
interval_ms: int = 0
Requested tick interval in milliseconds.
matches
¶
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
ResizeAction
dataclass
¶
Bases: Action
Match viewport dimensions.
Attributes:
-
width(int | None) –Required viewport width, or any width.
-
height(int | None) –Required viewport height, or any height.
Methods:
-
matches–Return whether an event matches these viewport dimensions.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
matches
¶
Return whether an event matches these viewport dimensions.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
RequestAction
dataclass
¶
Bases: Action
Match an HTTP method and path.
Attributes:
Methods:
-
matches–Return whether an event matches this request route.
-
keyboard–Match one or more keyboard bindings.
-
mouse–Match a mouse event.
-
click–Match a button press on a field.
-
focus–Match a focus transition.
-
clipboard–Match pasted text.
-
tick–Match a clock tick.
-
resize–Match a resize event.
-
request–Match an HTTP request.
matches
¶
Return whether an event matches this request route.
Source code in xnano/actions.py
keyboard
classmethod
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind | None = None
) -> "KeyboardAction"
Match one or more keyboard bindings.
mouse
classmethod
¶
mouse(
*buttons: MouseButton,
kind: MouseEventKind | None = None
) -> "MouseAction"
click
classmethod
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> "ClickAction"
focus
classmethod
¶
focus(
field: str | None = None,
kind: FocusEventKind | None = None,
) -> "FocusAction"
resize
classmethod
¶
request
classmethod
¶
Actions
¶
Actions(runtime: Any)
Perform actions through a runtime.
Attributes:
-
runtime–Runtime that receives performed actions.
Examples:
Methods:
-
perform–Queue or dispatch an action.
-
keyboard–Perform keyboard actions.
-
click–Perform a click action.
-
request–Perform an HTTP request action.
Source code in xnano/actions.py
keyboard
¶
keyboard(
*bindings: KeyboardBinding,
kind: KeyboardEventKind = "press"
) -> None
click
¶
click(
field: str | None = None, button: MouseButton = "left"
) -> None
normalize_binding
cached
¶
normalize_binding(binding: str) -> NormalizedBinding | None
Normalize a ctrl+shift+k style binding.