parent
3636ed78bb
commit
dfb4ccc93f
|
@ -24,6 +24,7 @@ import traceback
|
||||||
from time import time
|
from time import time
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
from typing import Protocol
|
||||||
|
|
||||||
from solaar.i18n import _
|
from solaar.i18n import _
|
||||||
|
|
||||||
|
@ -1805,7 +1806,95 @@ SETTINGS: list[settings.Setting] = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def check_feature(device, settings_class: settings.Setting) -> None | bool | Any:
|
class SettingsProtocol(Protocol):
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def label(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def description(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def feature(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def register(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def kind(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def min_version(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def persist(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def rw_options(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def validator_class(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def validator_options(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def build(cls, device):
|
||||||
|
...
|
||||||
|
|
||||||
|
def val_to_string(self, value):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def choices(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def range(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
def _pre_read(self, cached, key=None):
|
||||||
|
...
|
||||||
|
|
||||||
|
def read(self, cached=True):
|
||||||
|
...
|
||||||
|
|
||||||
|
def _pre_write(self, save=True):
|
||||||
|
...
|
||||||
|
|
||||||
|
def update(self, value, save=True):
|
||||||
|
...
|
||||||
|
|
||||||
|
def write(self, value, save=True):
|
||||||
|
...
|
||||||
|
|
||||||
|
def acceptable(self, args, current):
|
||||||
|
...
|
||||||
|
|
||||||
|
def compare(self, args, current):
|
||||||
|
...
|
||||||
|
|
||||||
|
def apply(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
def check_feature(device, settings_class: SettingsProtocol) -> None | bool | Any:
|
||||||
if settings_class.feature not in device.features:
|
if settings_class.feature not in device.features:
|
||||||
return
|
return
|
||||||
if settings_class.min_version > device.features.get_feature_version(settings_class.feature):
|
if settings_class.min_version > device.features.get_feature_version(settings_class.feature):
|
||||||
|
|
|
@ -19,6 +19,7 @@ import yaml
|
||||||
from logitech_receiver import settings
|
from logitech_receiver import settings
|
||||||
from logitech_receiver import settings_templates
|
from logitech_receiver import settings_templates
|
||||||
from logitech_receiver.common import NamedInts
|
from logitech_receiver.common import NamedInts
|
||||||
|
from logitech_receiver.settings_templates import SettingsProtocol
|
||||||
|
|
||||||
from solaar import configuration
|
from solaar import configuration
|
||||||
|
|
||||||
|
@ -215,7 +216,7 @@ def run(receivers, args, _find_receiver, find_device):
|
||||||
dev.persister[setting.name] = setting._value
|
dev.persister[setting.name] = setting._value
|
||||||
|
|
||||||
|
|
||||||
def set(dev, setting: settings.Setting, args, save):
|
def set(dev, setting: SettingsProtocol, args, save):
|
||||||
if setting.kind == settings.Kind.TOGGLE:
|
if setting.kind == settings.Kind.TOGGLE:
|
||||||
value = select_toggle(args.value_key, setting)
|
value = select_toggle(args.value_key, setting)
|
||||||
args.value_key = value
|
args.value_key = value
|
||||||
|
|
Loading…
Reference in New Issue