there is now a default options in the settings, allowing for default value if the option is disabled (instead of always None)

This commit is contained in:
Faraphel 2022-08-07 20:14:46 +02:00
parent d3ff94b940
commit e46acba9a6
3 changed files with 16 additions and 10 deletions

View file

@ -12,10 +12,13 @@ class Choices(AbstractModSettings):
type = "choices" type = "choices"
def __init__(self, choices: list[str], value: str = None, enabled: bool = False, text: dict[str] = None): def __init__(self, choices: list[str], enabled: bool = False,
self._value = value if value is not None else choices[0] default: str | None = None, text: dict[str] = None):
self.text = text if text is not None else {} self._value = default if default is not None else choices[0]
self.default = default
self.enabled = enabled self.enabled = enabled
self.text = text if text is not None else {}
self.choices = choices self.choices = choices
def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None: def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None:

View file

@ -13,10 +13,13 @@ class String(AbstractModSettings):
type = "string" type = "string"
def __init__(self, value: str = None, preview: str = None, enabled: bool = False, text: dict[str] = None): def __init__(self, preview: str = None, enabled: bool = False,
self._value: str = value if value is not None else "" default: str | None = None, text: dict[str] = None):
self.text = text if text is not None else {} self._value: str = default if default is not None else ""
self.default = default
self.enabled = enabled self.enabled = enabled
self.text = text if text is not None else {}
self.preview: str | None = preview self.preview: str | None = preview
def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None: def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None:

View file

@ -16,15 +16,16 @@ class AbstractModSettings(ABC):
type: str # type name of the settings type: str # type name of the settings
text: dict[str] # text to display in the settings window depending on the language text: dict[str] # text to display in the settings window depending on the language
enabled: bool # is the settings enabled enabled: bool # is the settings enabled
default: str | None # default value of the settings (used is disabled)
_value: str # value for the settings _value: str # value for the settings
@property @property
def value(self) -> "any | None": def value(self) -> "any | None":
""" """
If the option is enabled, return the value, else return None If the option is enabled, return the value, else return the default value
:return: :return: value if the setting is enabled, default otherwise
""" """
return self._value if self.enabled else None return self._value if self.enabled else self.default
@abstractmethod @abstractmethod
def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None: def tkinter_show(self, master: ttk.LabelFrame, checkbox) -> None:
@ -38,7 +39,6 @@ class AbstractModSettings(ABC):
enabled_variable = tkinter.BooleanVar(master, value=self.enabled) enabled_variable = tkinter.BooleanVar(master, value=self.enabled)
enabled_variable.trace_add("write", lambda *_: setattr(self, "enabled", enabled_variable.get())) enabled_variable.trace_add("write", lambda *_: setattr(self, "enabled", enabled_variable.get()))
checkbox.configure(variable=enabled_variable)
... ...
@classmethod @classmethod