1 """Support for Dremel 3D Printer buttons."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from dremel3dpy
import Dremel3DPrinter
15 from .coordinator
import DremelConfigEntry
16 from .entity
import Dremel3DPrinterEntity
19 @dataclass(frozen=True, kw_only=True)
21 """Describes a Dremel 3D Printer button entity."""
23 press_fn: Callable[[Dremel3DPrinter],
None]
26 BUTTON_TYPES: tuple[Dremel3DPrinterButtonEntityDescription, ...] = (
29 translation_key=
"cancel_job",
30 press_fn=
lambda api: api.stop_print(),
34 translation_key=
"pause_job",
35 press_fn=
lambda api: api.pause_print(),
39 translation_key=
"resume_job",
40 press_fn=
lambda api: api.resume_print(),
47 config_entry: DremelConfigEntry,
48 async_add_entities: AddEntitiesCallback,
50 """Set up Dremel 3D Printer control buttons."""
53 for description
in BUTTON_TYPES
58 """Represent a Dremel 3D Printer button."""
60 entity_description: Dremel3DPrinterButtonEntityDescription
63 """Handle the button press."""
67 except RuntimeError
as ex:
69 "An error occurred while submitting command"
Dremel3DPrinter _api(self)