wolfhece.plugins.types ====================== .. py:module:: wolfhece.plugins.types .. autoapi-nested-parse:: Declarative menu and action types for companion plugins. Module Contents --------------- .. py:class:: Keys Bases: :py:obj:`enum.IntEnum` .. autoapi-inheritance-diagram:: wolfhece.plugins.types.Keys :parts: 1 :private-bases: 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. .. py:attribute:: NONE :value: 0 .. py:attribute:: CONTROL_A :value: 1 .. py:attribute:: CONTROL_B :value: 2 .. py:attribute:: CONTROL_C :value: 3 .. py:attribute:: CONTROL_D :value: 4 .. py:attribute:: CONTROL_E :value: 5 .. py:attribute:: CONTROL_F :value: 6 .. py:attribute:: CONTROL_G :value: 7 .. py:attribute:: BACK :value: 8 .. py:attribute:: BACKSPACE :value: 8 .. py:attribute:: TAB :value: 9 .. py:attribute:: CONTROL_J :value: 10 .. py:attribute:: CONTROL_K :value: 11 .. py:attribute:: CONTROL_L :value: 12 .. py:attribute:: RETURN :value: 13 .. py:attribute:: CONTROL_N :value: 14 .. py:attribute:: CONTROL_O :value: 15 .. py:attribute:: CONTROL_P :value: 16 .. py:attribute:: CONTROL_Q :value: 17 .. py:attribute:: CONTROL_R :value: 18 .. py:attribute:: CONTROL_S :value: 19 .. py:attribute:: CONTROL_T :value: 20 .. py:attribute:: CONTROL_U :value: 21 .. py:attribute:: CONTROL_V :value: 22 .. py:attribute:: CONTROL_W :value: 23 .. py:attribute:: CONTROL_X :value: 24 .. py:attribute:: CONTROL_Y :value: 25 .. py:attribute:: CONTROL_Z :value: 26 .. py:attribute:: ESCAPE :value: 27 .. py:attribute:: SPACE :value: 32 .. py:attribute:: DELETE :value: 127 .. py:attribute:: START :value: 300 .. py:attribute:: LBUTTON :value: 301 .. py:attribute:: RBUTTON :value: 302 .. py:attribute:: CANCEL :value: 303 .. py:attribute:: MBUTTON :value: 304 .. py:attribute:: CLEAR :value: 305 .. py:attribute:: SHIFT :value: 306 .. py:attribute:: ALT :value: 307 .. py:attribute:: CONTROL :value: 308 .. py:attribute:: MENU :value: 309 .. py:attribute:: PAUSE :value: 310 .. py:attribute:: CAPITAL :value: 311 .. py:attribute:: END :value: 312 .. py:attribute:: HOME :value: 313 .. py:attribute:: LEFT :value: 314 .. py:attribute:: UP :value: 315 .. py:attribute:: RIGHT :value: 316 .. py:attribute:: DOWN :value: 317 .. py:attribute:: SELECT :value: 318 .. py:attribute:: PRINT :value: 319 .. py:attribute:: EXECUTE :value: 320 .. py:attribute:: SNAPSHOT :value: 321 .. py:attribute:: INSERT :value: 322 .. py:attribute:: HELP :value: 323 .. py:attribute:: NUMPAD0 :value: 324 .. py:attribute:: NUMPAD1 :value: 325 .. py:attribute:: NUMPAD2 :value: 326 .. py:attribute:: NUMPAD3 :value: 327 .. py:attribute:: NUMPAD4 :value: 328 .. py:attribute:: NUMPAD5 :value: 329 .. py:attribute:: NUMPAD6 :value: 330 .. py:attribute:: NUMPAD7 :value: 331 .. py:attribute:: NUMPAD8 :value: 332 .. py:attribute:: NUMPAD9 :value: 333 .. py:attribute:: MULTIPLY :value: 334 .. py:attribute:: ADD :value: 335 .. py:attribute:: SEPARATOR :value: 336 .. py:attribute:: SUBTRACT :value: 337 .. py:attribute:: DECIMAL :value: 338 .. py:attribute:: DIVIDE :value: 339 .. py:attribute:: F1 :value: 340 .. py:attribute:: F2 :value: 341 .. py:attribute:: F3 :value: 342 .. py:attribute:: F4 :value: 343 .. py:attribute:: F5 :value: 344 .. py:attribute:: F6 :value: 345 .. py:attribute:: F7 :value: 346 .. py:attribute:: F8 :value: 347 .. py:attribute:: F9 :value: 348 .. py:attribute:: F10 :value: 349 .. py:attribute:: F11 :value: 350 .. py:attribute:: F12 :value: 351 .. py:attribute:: F13 :value: 352 .. py:attribute:: F14 :value: 353 .. py:attribute:: F15 :value: 354 .. py:attribute:: F16 :value: 355 .. py:attribute:: F17 :value: 356 .. py:attribute:: F18 :value: 357 .. py:attribute:: F19 :value: 358 .. py:attribute:: F20 :value: 359 .. py:attribute:: F21 :value: 360 .. py:attribute:: F22 :value: 361 .. py:attribute:: F23 :value: 362 .. py:attribute:: F24 :value: 363 .. py:attribute:: NUMLOCK :value: 364 .. py:attribute:: SCROLL :value: 365 .. py:attribute:: PAGEUP :value: 366 .. py:attribute:: PAGEDOWN :value: 367 .. py:attribute:: NUMPAD_SPACE :value: 368 .. py:attribute:: NUMPAD_TAB :value: 369 .. py:attribute:: NUMPAD_ENTER :value: 370 .. py:attribute:: NUMPAD_F1 :value: 371 .. py:attribute:: NUMPAD_F2 :value: 372 .. py:attribute:: NUMPAD_F3 :value: 373 .. py:attribute:: NUMPAD_F4 :value: 374 .. py:attribute:: NUMPAD_HOME :value: 375 .. py:attribute:: NUMPAD_LEFT :value: 376 .. py:attribute:: NUMPAD_UP :value: 377 .. py:attribute:: NUMPAD_RIGHT :value: 378 .. py:attribute:: NUMPAD_DOWN :value: 379 .. py:attribute:: NUMPAD_PAGEUP :value: 380 .. py:attribute:: NUMPAD_PAGEDOWN :value: 381 .. py:attribute:: NUMPAD_END :value: 382 .. py:attribute:: NUMPAD_BEGIN :value: 383 .. py:attribute:: NUMPAD_INSERT :value: 384 .. py:attribute:: NUMPAD_DELETE :value: 385 .. py:attribute:: NUMPAD_EQUAL :value: 386 .. py:attribute:: NUMPAD_MULTIPLY :value: 387 .. py:attribute:: NUMPAD_ADD :value: 388 .. py:attribute:: NUMPAD_SEPARATOR :value: 389 .. py:attribute:: NUMPAD_SUBTRACT :value: 390 .. py:attribute:: NUMPAD_DECIMAL :value: 391 .. py:attribute:: NUMPAD_DIVIDE :value: 392 .. py:attribute:: WINDOWS_LEFT :value: 393 .. py:attribute:: WINDOWS_RIGHT :value: 394 .. py:attribute:: WINDOWS_MENU :value: 395 .. py:attribute:: SPECIAL1 :value: 397 .. py:attribute:: SPECIAL2 :value: 398 .. py:attribute:: SPECIAL3 :value: 399 .. py:attribute:: SPECIAL4 :value: 400 .. py:attribute:: SPECIAL5 :value: 401 .. py:attribute:: SPECIAL6 :value: 402 .. py:attribute:: SPECIAL7 :value: 403 .. py:attribute:: SPECIAL8 :value: 404 .. py:attribute:: SPECIAL9 :value: 405 .. py:attribute:: SPECIAL10 :value: 406 .. py:attribute:: SPECIAL11 :value: 407 .. py:attribute:: SPECIAL12 :value: 408 .. py:attribute:: SPECIAL13 :value: 409 .. py:attribute:: SPECIAL14 :value: 410 .. py:attribute:: SPECIAL15 :value: 411 .. py:attribute:: SPECIAL16 :value: 412 .. py:attribute:: SPECIAL17 :value: 413 .. py:attribute:: SPECIAL18 :value: 414 .. py:attribute:: SPECIAL19 :value: 415 .. py:attribute:: SPECIAL20 :value: 416 .. py:attribute:: BROWSER_BACK :value: 417 .. py:attribute:: BROWSER_FORWARD :value: 418 .. py:attribute:: BROWSER_REFRESH :value: 419 .. py:attribute:: BROWSER_STOP :value: 420 .. py:attribute:: BROWSER_SEARCH :value: 421 .. py:attribute:: BROWSER_FAVORITES :value: 422 .. py:attribute:: BROWSER_HOME :value: 423 .. py:attribute:: VOLUME_MUTE :value: 424 .. py:attribute:: VOLUME_DOWN :value: 425 .. py:attribute:: VOLUME_UP :value: 426 .. py:attribute:: MEDIA_NEXT_TRACK :value: 427 .. py:attribute:: MEDIA_PREV_TRACK :value: 428 .. py:attribute:: MEDIA_STOP :value: 429 .. py:attribute:: MEDIA_PLAY_PAUSE :value: 430 .. py:attribute:: LAUNCH_MAIL :value: 431 .. py:attribute:: LAUNCH_0 :value: 432 .. py:attribute:: LAUNCH_1 :value: 433 .. py:attribute:: LAUNCH_2 :value: 434 .. py:attribute:: LAUNCH_3 :value: 435 .. py:attribute:: LAUNCH_4 :value: 436 .. py:attribute:: LAUNCH_5 :value: 437 .. py:attribute:: LAUNCH_6 :value: 438 .. py:attribute:: LAUNCH_7 :value: 439 .. py:attribute:: LAUNCH_8 :value: 440 .. py:attribute:: LAUNCH_9 :value: 441 .. py:attribute:: LAUNCH_A :value: 442 .. py:attribute:: LAUNCH_B :value: 443 .. py:attribute:: LAUNCH_C :value: 444 .. py:attribute:: LAUNCH_D :value: 445 .. py:attribute:: LAUNCH_E :value: 446 .. py:attribute:: LAUNCH_F :value: 447 .. py:attribute:: A :value: 65 .. py:attribute:: B :value: 66 .. py:attribute:: C :value: 67 .. py:attribute:: D :value: 68 .. py:attribute:: E :value: 69 .. py:attribute:: F :value: 70 .. py:attribute:: G :value: 71 .. py:attribute:: H :value: 72 .. py:attribute:: I :value: 73 .. py:attribute:: J :value: 74 .. py:attribute:: K :value: 75 .. py:attribute:: L :value: 76 .. py:attribute:: M :value: 77 .. py:attribute:: N :value: 78 .. py:attribute:: O :value: 79 .. py:attribute:: P :value: 80 .. py:attribute:: Q :value: 81 .. py:attribute:: R :value: 82 .. py:attribute:: S :value: 83 .. py:attribute:: T :value: 84 .. py:attribute:: U :value: 85 .. py:attribute:: V :value: 86 .. py:attribute:: W :value: 87 .. py:attribute:: X :value: 88 .. py:attribute:: Y :value: 89 .. py:attribute:: Z :value: 90 .. py:attribute:: KEY_0 :value: 48 .. py:attribute:: KEY_1 :value: 49 .. py:attribute:: KEY_2 :value: 50 .. py:attribute:: KEY_3 :value: 51 .. py:attribute:: KEY_4 :value: 52 .. py:attribute:: KEY_5 :value: 53 .. py:attribute:: KEY_6 :value: 54 .. py:attribute:: KEY_7 :value: 55 .. py:attribute:: KEY_8 :value: 56 .. py:attribute:: KEY_9 :value: 57 .. py:class:: MenuItem Declarative menu entry. .. py:attribute:: label :type: str .. py:attribute:: handler :type: Callable[[wolfhece._viewer_plugin_handlers.MouseContext], None] .. py:attribute:: help :type: str :value: '' .. py:attribute:: checkable :type: bool :value: False .. py:attribute:: enabled :type: bool :value: True .. py:class:: Separator Singleton sentinel that inserts a separator line in menus. .. py:attribute:: _instance :type: Separator | None :value: None .. py:data:: SEPARATOR :type: Separator .. py:class:: SubMenuSpec A labelled submenu containing its own list of entries. .. py:attribute:: label :type: str .. py:attribute:: items :type: list[MenuEntry] :value: [] .. py:attribute:: help :type: str :value: '' .. py:data:: MenuEntry .. py:class:: ActionSpec Declarative interactive-action entry. .. py:attribute:: action_id :type: str | wolfhece._action_kind.ActionKind .. py:attribute:: rdown :type: Optional[Callable] :value: None .. py:attribute:: motion :type: Optional[Callable] :value: None .. py:attribute:: ldown :type: Optional[Callable] :value: None .. py:attribute:: key :type: Optional[Callable] :value: None .. py:attribute:: paint :type: Optional[Callable] :value: None .. py:attribute:: overload :type: bool :value: False .. py:attribute:: primary :type: bool :value: False .. py:attribute:: start_message :type: str :value: '' .. py:class:: StepTransition Bases: :py:obj:`str`, :py:obj:`enum.Enum` .. autoapi-inheritance-diagram:: wolfhece.plugins.types.StepTransition :parts: 1 :private-bases: Transition directives returned by multi-step handlers. .. py:attribute:: NONE :value: 'none' .. py:attribute:: NEXT :value: 'next' .. py:attribute:: FINISH :value: 'finish' .. py:attribute:: CANCEL :value: 'cancel' .. py:class:: StepSpec Single step declaration used by :class:`MultiStepSpec`. .. py:attribute:: hint :type: str :value: '' .. py:attribute:: rdown :type: Optional[Callable] :value: None .. py:attribute:: motion :type: Optional[Callable] :value: None .. py:attribute:: ldown :type: Optional[Callable] :value: None .. py:attribute:: key :type: Optional[Callable] :value: None .. py:attribute:: paint :type: Optional[Callable] :value: None .. py:class:: MultiStepSpec Declarative multi-step interactive action. Phase 1 behaviour: - startup selection is declarative (``primary`` + ``start_message``), - action registration uses handlers from the first step. .. py:attribute:: action_id :type: str | wolfhece._action_kind.ActionKind .. py:attribute:: steps :type: list[StepSpec] .. py:attribute:: overload :type: bool :value: False .. py:attribute:: primary :type: bool :value: False .. py:attribute:: start_message :type: str :value: '' .. py:attribute:: finish_message :type: str :value: '' .. py:property:: first_step :type: StepSpec .. py:property:: effective_start_message :type: str