wolfhece.plugins.types

Declarative menu and action types for companion plugins.

Module Contents

class wolfhece.plugins.types.Keys[source]

Bases: enum.IntEnum

Inheritance diagram of wolfhece.plugins.types.Keys

Complete set of key codes, mirroring wx.WXK_* values.

Use these constants in key handlers instead of raw integers to avoid any dependency on wx being imported at module level:

def _key(self, kb: KeyboardSnapshot) -> bool | StepTransition:
    if kb.key_code == Keys.ESCAPE:
        return StepTransition.CANCEL
    if kb.key_code == Keys.CONTROL_Z:
        self._undo()
    return False

Aliases (same integer value as another member) are listed with a comment.

NONE = 0[source]
CONTROL_A = 1[source]
CONTROL_B = 2[source]
CONTROL_C = 3[source]
CONTROL_D = 4[source]
CONTROL_E = 5[source]
CONTROL_F = 6[source]
CONTROL_G = 7[source]
BACK = 8[source]
BACKSPACE = 8[source]
TAB = 9[source]
CONTROL_J = 10[source]
CONTROL_K = 11[source]
CONTROL_L = 12[source]
RETURN = 13[source]
CONTROL_N = 14[source]
CONTROL_O = 15[source]
CONTROL_P = 16[source]
CONTROL_Q = 17[source]
CONTROL_R = 18[source]
CONTROL_S = 19[source]
CONTROL_T = 20[source]
CONTROL_U = 21[source]
CONTROL_V = 22[source]
CONTROL_W = 23[source]
CONTROL_X = 24[source]
CONTROL_Y = 25[source]
CONTROL_Z = 26[source]
ESCAPE = 27[source]
SPACE = 32[source]
DELETE = 127[source]
START = 300[source]
LBUTTON = 301[source]
RBUTTON = 302[source]
CANCEL = 303[source]
MBUTTON = 304[source]
CLEAR = 305[source]
SHIFT = 306[source]
ALT = 307[source]
CONTROL = 308[source]
MENU = 309[source]
PAUSE = 310[source]
CAPITAL = 311[source]
END = 312[source]
HOME = 313[source]
LEFT = 314[source]
UP = 315[source]
RIGHT = 316[source]
DOWN = 317[source]
SELECT = 318[source]
PRINT = 319[source]
EXECUTE = 320[source]
SNAPSHOT = 321[source]
INSERT = 322[source]
HELP = 323[source]
NUMPAD0 = 324[source]
NUMPAD1 = 325[source]
NUMPAD2 = 326[source]
NUMPAD3 = 327[source]
NUMPAD4 = 328[source]
NUMPAD5 = 329[source]
NUMPAD6 = 330[source]
NUMPAD7 = 331[source]
NUMPAD8 = 332[source]
NUMPAD9 = 333[source]
MULTIPLY = 334[source]
ADD = 335[source]
SEPARATOR = 336[source]
SUBTRACT = 337[source]
DECIMAL = 338[source]
DIVIDE = 339[source]
F1 = 340[source]
F2 = 341[source]
F3 = 342[source]
F4 = 343[source]
F5 = 344[source]
F6 = 345[source]
F7 = 346[source]
F8 = 347[source]
F9 = 348[source]
F10 = 349[source]
F11 = 350[source]
F12 = 351[source]
F13 = 352[source]
F14 = 353[source]
F15 = 354[source]
F16 = 355[source]
F17 = 356[source]
F18 = 357[source]
F19 = 358[source]
F20 = 359[source]
F21 = 360[source]
F22 = 361[source]
F23 = 362[source]
F24 = 363[source]
NUMLOCK = 364[source]
SCROLL = 365[source]
PAGEUP = 366[source]
PAGEDOWN = 367[source]
NUMPAD_SPACE = 368[source]
NUMPAD_TAB = 369[source]
NUMPAD_ENTER = 370[source]
NUMPAD_F1 = 371[source]
NUMPAD_F2 = 372[source]
NUMPAD_F3 = 373[source]
NUMPAD_F4 = 374[source]
NUMPAD_HOME = 375[source]
NUMPAD_LEFT = 376[source]
NUMPAD_UP = 377[source]
NUMPAD_RIGHT = 378[source]
NUMPAD_DOWN = 379[source]
NUMPAD_PAGEUP = 380[source]
NUMPAD_PAGEDOWN = 381[source]
NUMPAD_END = 382[source]
NUMPAD_BEGIN = 383[source]
NUMPAD_INSERT = 384[source]
NUMPAD_DELETE = 385[source]
NUMPAD_EQUAL = 386[source]
NUMPAD_MULTIPLY = 387[source]
NUMPAD_ADD = 388[source]
NUMPAD_SEPARATOR = 389[source]
NUMPAD_SUBTRACT = 390[source]
NUMPAD_DECIMAL = 391[source]
NUMPAD_DIVIDE = 392[source]
WINDOWS_LEFT = 393[source]
WINDOWS_RIGHT = 394[source]
WINDOWS_MENU = 395[source]
SPECIAL1 = 397[source]
SPECIAL2 = 398[source]
SPECIAL3 = 399[source]
SPECIAL4 = 400[source]
SPECIAL5 = 401[source]
SPECIAL6 = 402[source]
SPECIAL7 = 403[source]
SPECIAL8 = 404[source]
SPECIAL9 = 405[source]
SPECIAL10 = 406[source]
SPECIAL11 = 407[source]
SPECIAL12 = 408[source]
SPECIAL13 = 409[source]
SPECIAL14 = 410[source]
SPECIAL15 = 411[source]
SPECIAL16 = 412[source]
SPECIAL17 = 413[source]
SPECIAL18 = 414[source]
SPECIAL19 = 415[source]
SPECIAL20 = 416[source]
BROWSER_BACK = 417[source]
BROWSER_FORWARD = 418[source]
BROWSER_REFRESH = 419[source]
BROWSER_STOP = 420[source]
BROWSER_FAVORITES = 422[source]
BROWSER_HOME = 423[source]
VOLUME_MUTE = 424[source]
VOLUME_DOWN = 425[source]
VOLUME_UP = 426[source]
MEDIA_NEXT_TRACK = 427[source]
MEDIA_PREV_TRACK = 428[source]
MEDIA_STOP = 429[source]
MEDIA_PLAY_PAUSE = 430[source]
LAUNCH_MAIL = 431[source]
LAUNCH_0 = 432[source]
LAUNCH_1 = 433[source]
LAUNCH_2 = 434[source]
LAUNCH_3 = 435[source]
LAUNCH_4 = 436[source]
LAUNCH_5 = 437[source]
LAUNCH_6 = 438[source]
LAUNCH_7 = 439[source]
LAUNCH_8 = 440[source]
LAUNCH_9 = 441[source]
LAUNCH_A = 442[source]
LAUNCH_B = 443[source]
LAUNCH_C = 444[source]
LAUNCH_D = 445[source]
LAUNCH_E = 446[source]
LAUNCH_F = 447[source]
A = 65[source]
B = 66[source]
C = 67[source]
D = 68[source]
E = 69[source]
F = 70[source]
G = 71[source]
H = 72[source]
I = 73[source]
J = 74[source]
K = 75[source]
L = 76[source]
M = 77[source]
N = 78[source]
O = 79[source]
P = 80[source]
Q = 81[source]
R = 82[source]
S = 83[source]
T = 84[source]
U = 85[source]
V = 86[source]
W = 87[source]
X = 88[source]
Y = 89[source]
Z = 90[source]
KEY_0 = 48[source]
KEY_1 = 49[source]
KEY_2 = 50[source]
KEY_3 = 51[source]
KEY_4 = 52[source]
KEY_5 = 53[source]
KEY_6 = 54[source]
KEY_7 = 55[source]
KEY_8 = 56[source]
KEY_9 = 57[source]
class wolfhece.plugins.types.MenuItem[source]

Declarative menu entry.

label: str[source]
handler: Callable[[wolfhece._viewer_plugin_handlers.MouseContext], None][source]
help: str = ''[source]
checkable: bool = False[source]
enabled: bool = True[source]
class wolfhece.plugins.types.Separator[source]

Singleton sentinel that inserts a separator line in menus.

_instance: Separator | None = None[source]
wolfhece.plugins.types.SEPARATOR: Separator[source]
class wolfhece.plugins.types.SubMenuSpec[source]

A labelled submenu containing its own list of entries.

label: str[source]
items: list[MenuEntry] = [][source]
help: str = ''[source]
wolfhece.plugins.types.MenuEntry[source]
class wolfhece.plugins.types.ActionSpec[source]

Declarative interactive-action entry.

action_id: str | wolfhece._action_kind.ActionKind[source]
rdown: Callable | None = None[source]
motion: Callable | None = None[source]
ldown: Callable | None = None[source]
key: Callable | None = None[source]
paint: Callable | None = None[source]
overload: bool = False[source]
primary: bool = False[source]
start_message: str = ''[source]
class wolfhece.plugins.types.StepTransition[source]

Bases: str, enum.Enum

Inheritance diagram of wolfhece.plugins.types.StepTransition

Transition directives returned by multi-step handlers.

NONE = 'none'[source]
NEXT = 'next'[source]
FINISH = 'finish'[source]
CANCEL = 'cancel'[source]
class wolfhece.plugins.types.StepSpec[source]

Single step declaration used by MultiStepSpec.

hint: str = ''[source]
rdown: Callable | None = None[source]
motion: Callable | None = None[source]
ldown: Callable | None = None[source]
key: Callable | None = None[source]
paint: Callable | None = None[source]
class wolfhece.plugins.types.MultiStepSpec[source]

Declarative multi-step interactive action.

Phase 1 behaviour: - startup selection is declarative (primary + start_message), - action registration uses handlers from the first step.

action_id: str | wolfhece._action_kind.ActionKind[source]
steps: list[StepSpec][source]
overload: bool = False[source]
primary: bool = False[source]
start_message: str = ''[source]
finish_message: str = ''[source]
property first_step: StepSpec[source]
property effective_start_message: str[source]