diff --git a/Pack/MKWFaraphel/mod_config.json b/Pack/MKWFaraphel/mod_config.json index aeca2d7..831ce11 100644 --- a/Pack/MKWFaraphel/mod_config.json +++ b/Pack/MKWFaraphel/mod_config.json @@ -6,6 +6,10 @@ "specific_settings": { "mode": { + "text": { + "en": "Mode", + "fr": "Mode" + }, "type": "choices", "choices": [ "normal", @@ -13,6 +17,10 @@ ] }, "highlight_if": { + "text": { + "en": "Highlight if", + "fr": "Surligner si" + }, "type": "string", "preview": "track_formatting" } diff --git a/source/gui/mod_settings.py b/source/gui/mod_settings.py index 1ba16b0..b50e1a1 100644 --- a/source/gui/mod_settings.py +++ b/source/gui/mod_settings.py @@ -10,6 +10,7 @@ AbstractModSettings: any class Window(tkinter.Toplevel): def __init__(self, mod_config: "ModConfig"): super().__init__() + self.root = self.master.root self.resizable(False, False) self.grab_set() @@ -18,7 +19,7 @@ class Window(tkinter.Toplevel): self.mod_config = mod_config - self.panel_window = ttk.Notebook(self) + self.panel_window = NotebookSettings(self) self.panel_window.grid(row=1, column=1, sticky="NEWS") self.frame_global_settings = FrameSettings( @@ -33,8 +34,14 @@ class Window(tkinter.Toplevel): ) +class NotebookSettings(ttk.Notebook): + def __init__(self, master): + super().__init__(master) + self.root = self.master.root + + class FrameSettings(ttk.Frame): - def __init__(self, master: ttk.Notebook, text: str, settings: dict[str, "AbstractModSettings"]): + def __init__(self, master, text: str, settings: dict[str, "AbstractModSettings"]): """ Create a frame where settings will be displayed :param master: master window @@ -43,11 +50,16 @@ class FrameSettings(ttk.Frame): """ super().__init__(master) master.add(self, text=text) + self.root = self.master.root self.columnconfigure(1, weight=1) for index, (settings_name, settings_data) in enumerate(settings.items()): - checkbox = ttk.Checkbutton(self, text=settings_name) + text = settings_data.text.get(self.root.options["language"]) + if text is None: text = settings_data.text.get("*") + if text is None: text = settings_name + + checkbox = ttk.Checkbutton(self, text=text) frame = ttk.LabelFrame(self, labelwidget=checkbox) frame.grid(row=index, column=1, sticky="NEWS") diff --git a/source/mkw/ModConfig.py b/source/mkw/ModConfig.py index 0b76e87..07fda2d 100644 --- a/source/mkw/ModConfig.py +++ b/source/mkw/ModConfig.py @@ -23,15 +23,27 @@ Thread: any global_settings = { - "override_random_new": { + "force_random_new": { + "text": { + "en": "Force random new tracks", + "fr": "Forcer les courses aléatoires nouvelle" + }, "type": "string", "preview": "track_selecting" }, "remove_track_if": { + "text": { + "en": "Remove track if", + "fr": "Retirer la course si" + }, "type": "string", "preview": "track_selecting" }, - "sort_track_by": { + "sort_tracks_by": { + "text": { + "en": "Sort tracks by", + "fr": "Trier les courses par" + }, "type": "choices", "choices": [ "test1", diff --git a/source/mkw/ModSettings/Choices.py b/source/mkw/ModSettings/Choices.py index 852892d..bb930dc 100644 --- a/source/mkw/ModSettings/Choices.py +++ b/source/mkw/ModSettings/Choices.py @@ -12,8 +12,9 @@ class Choices(AbstractModSettings): type = "choices" - def __init__(self, choices: list[str], value: str = None, enabled: bool = False): + def __init__(self, choices: list[str], value: str = None, enabled: bool = False, text: dict[str] = None): self._value = value if value is not None else choices[0] + self.text = text if text is not None else {} self.enabled = enabled self.choices = choices diff --git a/source/mkw/ModSettings/String.py b/source/mkw/ModSettings/String.py index 6e1c8ec..54d34ed 100644 --- a/source/mkw/ModSettings/String.py +++ b/source/mkw/ModSettings/String.py @@ -13,8 +13,9 @@ class String(AbstractModSettings): type = "string" - def __init__(self, value: str = None, preview: str = None, enabled: bool = False): + def __init__(self, value: str = None, preview: str = None, enabled: bool = False, text: dict[str] = None): self._value: str = value if value is not None else "" + self.text = text if text is not None else {} self.enabled = enabled self.preview: str | None = preview diff --git a/source/mkw/ModSettings/__init__.py b/source/mkw/ModSettings/__init__.py index 053708f..c0b025c 100644 --- a/source/mkw/ModSettings/__init__.py +++ b/source/mkw/ModSettings/__init__.py @@ -14,13 +14,10 @@ class AbstractModSettings(ABC): """ type: str # type name of the settings + text: dict[str] # text to display in the settings window depending on the language enabled: bool # is the settings enabled _value: str # value for the settings - @abstractmethod - def __init__(self, value: str = None, preview: str = None, enabled: bool = False): - ... - @property def value(self) -> "any | None": """