Files
m5stack-automation-tool/models/settings.py
T
2026-07-17 15:29:53 -04:00

66 lines
3.2 KiB
Python

"""Settings model for ATOMS3 MacroPad."""
from utils.constants import (
DEFAULT_HOLD_MS, DEFAULT_TYPE_DELAY, DEFAULT_ORIENTATION, DEFAULT_RESUME_DELAY,
DEFAULT_COMBO_PRE_MS, DEFAULT_COMBO_POST_MS, DEFAULT_PROBE_TIMEOUT_MS,
DEFAULT_MEDIA_HOLD_MS,
DEFAULT_TYPE_SHIFT_EXTRA_MS, DEFAULT_TYPE_SETTLE_MS,
DEFAULT_PAUSE_MARGIN_LEFT, DEFAULT_PAUSE_MARGIN_RIGHT,
DEFAULT_PAUSE_MARGIN_TOP, DEFAULT_PAUSE_MARGIN_BOTTOM,
)
class Settings:
def __init__(self):
self.hold_ms: int = DEFAULT_HOLD_MS
self.type_delay: int = DEFAULT_TYPE_DELAY
self.orientation: int = DEFAULT_ORIENTATION
self.resume_delay: int = DEFAULT_RESUME_DELAY
self.combo_pre_ms: int = DEFAULT_COMBO_PRE_MS
self.combo_post_ms: int = DEFAULT_COMBO_POST_MS
self.probe_timeout_ms: int = DEFAULT_PROBE_TIMEOUT_MS
self.media_hold_ms: int = DEFAULT_MEDIA_HOLD_MS
self.type_shift_extra_ms: int = DEFAULT_TYPE_SHIFT_EXTRA_MS
self.type_settle_ms: int = DEFAULT_TYPE_SETTLE_MS
self.pause_margin_left: int = DEFAULT_PAUSE_MARGIN_LEFT
self.pause_margin_right: int = DEFAULT_PAUSE_MARGIN_RIGHT
self.pause_margin_top: int = DEFAULT_PAUSE_MARGIN_TOP
self.pause_margin_bottom: int = DEFAULT_PAUSE_MARGIN_BOTTOM
def to_dict(self) -> dict:
return {
"hold_ms": self.hold_ms,
"type_delay": self.type_delay,
"orientation": self.orientation,
"resume_delay": self.resume_delay,
"combo_pre_ms": self.combo_pre_ms,
"combo_post_ms": self.combo_post_ms,
"probe_timeout_ms": self.probe_timeout_ms,
"media_hold_ms": self.media_hold_ms,
"type_shift_extra_ms": self.type_shift_extra_ms,
"type_settle_ms": self.type_settle_ms,
"pause_margin_left": self.pause_margin_left,
"pause_margin_right": self.pause_margin_right,
"pause_margin_top": self.pause_margin_top,
"pause_margin_bottom": self.pause_margin_bottom,
}
@classmethod
def from_dict(cls, d: dict) -> "Settings":
s = cls()
s.hold_ms = d.get("hold_ms", DEFAULT_HOLD_MS)
s.type_delay = d.get("type_delay", DEFAULT_TYPE_DELAY)
s.orientation = d.get("orientation", DEFAULT_ORIENTATION)
s.resume_delay = d.get("resume_delay", DEFAULT_RESUME_DELAY)
s.combo_pre_ms = d.get("combo_pre_ms", DEFAULT_COMBO_PRE_MS)
s.combo_post_ms = d.get("combo_post_ms", DEFAULT_COMBO_POST_MS)
s.probe_timeout_ms = d.get("probe_timeout_ms", DEFAULT_PROBE_TIMEOUT_MS)
s.media_hold_ms = d.get("media_hold_ms", DEFAULT_MEDIA_HOLD_MS)
s.type_shift_extra_ms = d.get("type_shift_extra_ms", DEFAULT_TYPE_SHIFT_EXTRA_MS)
s.type_settle_ms = d.get("type_settle_ms", DEFAULT_TYPE_SETTLE_MS)
s.pause_margin_left = d.get("pause_margin_left", DEFAULT_PAUSE_MARGIN_LEFT)
s.pause_margin_right = d.get("pause_margin_right", DEFAULT_PAUSE_MARGIN_RIGHT)
s.pause_margin_top = d.get("pause_margin_top", DEFAULT_PAUSE_MARGIN_TOP)
s.pause_margin_bottom = d.get("pause_margin_bottom", DEFAULT_PAUSE_MARGIN_BOTTOM)
return s