parent
3636ed78bb
commit
dfb4ccc93f
|
@ -24,6 +24,7 @@ import traceback
|
|||
from time import time
|
||||
from typing import Any
|
||||
from typing import Callable
|
||||
from typing import Protocol
|
||||
|
||||
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:
|
||||
return
|
||||
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_templates
|
||||
from logitech_receiver.common import NamedInts
|
||||
from logitech_receiver.settings_templates import SettingsProtocol
|
||||
|
||||
from solaar import configuration
|
||||
|
||||
|
@ -215,7 +216,7 @@ def run(receivers, args, _find_receiver, find_device):
|
|||
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:
|
||||
value = select_toggle(args.value_key, setting)
|
||||
args.value_key = value
|
||||
|
|
Loading…
Reference in New Issue