66 lines
3.2 KiB
Python
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
|