mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-02 02:38:30 +02:00
the extension settings is now saved in the option.json file
This commit is contained in:
parent
2d50619b6c
commit
e88fb57143
6 changed files with 50 additions and 61 deletions
|
@ -12,14 +12,14 @@ from typing import Generator
|
||||||
from source.gui import better_gui_error, mystuff, mod_settings
|
from source.gui import better_gui_error, mystuff, mod_settings
|
||||||
from source.mkw.Game import Game
|
from source.mkw.Game import Game
|
||||||
from source.mkw.ModConfig import ModConfig
|
from source.mkw.ModConfig import ModConfig
|
||||||
from source.option import Option
|
from source.option import Options
|
||||||
from source.progress import Progress
|
from source.progress import Progress
|
||||||
from source.translation import translate as _, translate_external
|
from source.translation import translate as _, translate_external
|
||||||
from source import plugins
|
from source import plugins
|
||||||
from source import *
|
from source import *
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from source.wt.wit import Extension
|
from source.mkw.collection.Extension import Extension
|
||||||
|
|
||||||
|
|
||||||
class SourceGameError(Exception):
|
class SourceGameError(Exception):
|
||||||
|
@ -39,11 +39,11 @@ class InstallerState(enum.Enum):
|
||||||
|
|
||||||
# Main window for the installer
|
# Main window for the installer
|
||||||
class Window(tkinter.Tk):
|
class Window(tkinter.Tk):
|
||||||
def __init__(self, options: Option):
|
def __init__(self, options: Options):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.root = self
|
self.root = self
|
||||||
|
|
||||||
self.options: Option = options
|
self.options: Options = options
|
||||||
|
|
||||||
self.title(_("INSTALLER_TITLE"))
|
self.title(_("INSTALLER_TITLE"))
|
||||||
self.resizable(False, False)
|
self.resizable(False, False)
|
||||||
|
@ -161,19 +161,12 @@ class Menu(tkinter.Menu):
|
||||||
|
|
||||||
master.add_cascade(label=_("LANGUAGE_SELECTION"), menu=self)
|
master.add_cascade(label=_("LANGUAGE_SELECTION"), menu=self)
|
||||||
|
|
||||||
self.variable = tkinter.StringVar(value=self.root.options["language"])
|
|
||||||
|
|
||||||
def callback(file: Path):
|
|
||||||
def func(): self.root.options["language"] = file.stem
|
|
||||||
return func
|
|
||||||
|
|
||||||
for file in Path("./assets/language/").iterdir():
|
for file in Path("./assets/language/").iterdir():
|
||||||
lang_json = json.loads(file.read_text(encoding="utf8"))
|
lang_json = json.loads(file.read_text(encoding="utf8"))
|
||||||
self.add_radiobutton(
|
self.add_radiobutton(
|
||||||
label=lang_json["name"],
|
label=lang_json["name"],
|
||||||
value=file.stem,
|
value=file.stem,
|
||||||
variable=self.variable,
|
variable=self.root.options.language
|
||||||
command=callback(file)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Advanced menu
|
# Advanced menu
|
||||||
|
@ -194,18 +187,11 @@ class Menu(tkinter.Menu):
|
||||||
|
|
||||||
master.add_cascade(label=_("THREADS_USAGE"), menu=self)
|
master.add_cascade(label=_("THREADS_USAGE"), menu=self)
|
||||||
|
|
||||||
self.variable = tkinter.IntVar(value=self.root.options["threads"])
|
|
||||||
|
|
||||||
def callback(threads_amount: int):
|
|
||||||
def func(): self.root.options["threads"] = threads_amount
|
|
||||||
return func
|
|
||||||
|
|
||||||
for i in [1, 2, 4, 8, 12, 16]:
|
for i in [1, 2, 4, 8, 12, 16]:
|
||||||
self.add_radiobutton(
|
self.add_radiobutton(
|
||||||
label=_("USE", f" {i} ", "THREADS"),
|
label=_("USE", f" {i} ", "THREADS"),
|
||||||
value=i,
|
value=i,
|
||||||
variable=self.variable,
|
variable=self.root.options.threads,
|
||||||
command=callback(i),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Help menu
|
# Help menu
|
||||||
|
@ -324,13 +310,10 @@ class DestinationGame(ttk.LabelFrame):
|
||||||
self.entry = ttk.Entry(self)
|
self.entry = ttk.Entry(self)
|
||||||
self.entry.grid(row=1, column=1, sticky="nsew")
|
self.entry.grid(row=1, column=1, sticky="nsew")
|
||||||
|
|
||||||
self.output_type = ttk.Combobox(self, width=5, values=[extension.name for extension in Extension])
|
self.output_type = ttk.Combobox(self, width=5, values=[extension.name for extension in Extension],
|
||||||
self.output_type.set(self.root.options["extension"])
|
textvariable=self.root.options.extension)
|
||||||
self.output_type.grid(row=1, column=2, sticky="nsew")
|
self.output_type.grid(row=1, column=2, sticky="nsew")
|
||||||
|
|
||||||
def output_type_callback(_: tkinter.Event): self.root.options["extension"] = self.output_type.get()
|
|
||||||
self.output_type.bind("<<ComboboxSelected>>", output_type_callback)
|
|
||||||
|
|
||||||
self.button = ttk.Button(self, text="...", width=2, command=self.select)
|
self.button = ttk.Button(self, text="...", width=2, command=self.select)
|
||||||
self.button.grid(row=1, column=3, sticky="nsew")
|
self.button.grid(row=1, column=3, sticky="nsew")
|
||||||
|
|
||||||
|
@ -437,7 +420,7 @@ class ButtonInstall(ttk.Button):
|
||||||
|
|
||||||
message: str = translate_external(
|
message: str = translate_external(
|
||||||
mod_config,
|
mod_config,
|
||||||
self.root.options["language"],
|
self.root.options.language.value,
|
||||||
mod_config.messages.get("installation_completed", {}).get("text", {})
|
mod_config.messages.get("installation_completed", {}).get("text", {})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ from typing import Generator, IO, TYPE_CHECKING
|
||||||
|
|
||||||
from source.mkw.ModConfig import ModConfig
|
from source.mkw.ModConfig import ModConfig
|
||||||
from source.mkw.Patch.Patch import Patch
|
from source.mkw.Patch.Patch import Patch
|
||||||
|
from source.mkw.collection.Extension import Extension
|
||||||
from source.progress import Progress
|
from source.progress import Progress
|
||||||
from source.wt import szs, lec, wit
|
from source.wt import szs, lec, wit
|
||||||
from source.wt.wstrt import StrPath
|
from source.wt.wstrt import StrPath
|
||||||
|
@ -175,14 +176,14 @@ class ExtractedGame:
|
||||||
yield Progress(description=_("INSTALLING_ALL", " Patchs..."), determinate=False)
|
yield Progress(description=_("INSTALLING_ALL", " Patchs..."), determinate=False)
|
||||||
yield from self._install_all_patch(mod_config, "_PATCH/")
|
yield from self._install_all_patch(mod_config, "_PATCH/")
|
||||||
|
|
||||||
def convert_to(self, output_type: wit.Extension) -> Generator[Progress, None, wit.WITPath | None]:
|
def convert_to(self, output_type: Extension) -> Generator[Progress, None, wit.WITPath | None]:
|
||||||
"""
|
"""
|
||||||
Convert the extracted game to another format
|
Convert the extracted game to another format
|
||||||
:param output_type: path to the destination of the game
|
:param output_type: path to the destination of the game
|
||||||
:output_type: format of the destination game
|
:output_type: format of the destination game
|
||||||
"""
|
"""
|
||||||
yield Progress(description=_("CONVERTING_GAME_TO", " ", output_type.name), determinate=False)
|
yield Progress(description=_("CONVERTING_GAME_TO", " ", output_type.name), determinate=False)
|
||||||
if output_type == wit.Extension.FST: return
|
if output_type == Extension.FST: return
|
||||||
|
|
||||||
destination_file = self.path.with_suffix(self.path.suffix + output_type.value)
|
destination_file = self.path.with_suffix(self.path.suffix + output_type.value)
|
||||||
dest_stem: str = destination_file.stem
|
dest_stem: str = destination_file.stem
|
||||||
|
|
|
@ -3,9 +3,11 @@ from typing import Generator
|
||||||
|
|
||||||
from source.mkw.ExtractedGame import ExtractedGame
|
from source.mkw.ExtractedGame import ExtractedGame
|
||||||
from source.mkw.ModConfig import ModConfig
|
from source.mkw.ModConfig import ModConfig
|
||||||
|
from source.mkw.collection.Extension import Extension
|
||||||
|
from source.mkw.collection.Region import Region
|
||||||
from source.option import Option
|
from source.option import Option
|
||||||
from source.progress import Progress
|
from source.progress import Progress
|
||||||
from source.wt.wit import WITPath, Region, Extension
|
from source.wt.wit import WITPath
|
||||||
from source.translation import translate as _
|
from source.translation import translate as _
|
||||||
|
|
||||||
|
|
||||||
|
|
22
source/mkw/collection/Extension.py
Normal file
22
source/mkw/collection/Extension.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
class Extension(enum.Enum):
|
||||||
|
"""
|
||||||
|
Enum for game extension
|
||||||
|
"""
|
||||||
|
WBFS = ".wbfs"
|
||||||
|
FST = ".dol"
|
||||||
|
CISO = ".ciso"
|
||||||
|
ISO = ".iso"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _missing_(cls, value: str) -> "Extension | None":
|
||||||
|
"""
|
||||||
|
if not found, search for the same value with lower case
|
||||||
|
:param value: value to search for
|
||||||
|
:return: None if nothing found, otherwise the found value
|
||||||
|
"""
|
||||||
|
value = value.lower()
|
||||||
|
for member in filter(lambda m: m.value == value, cls): return member
|
||||||
|
return None
|
11
source/mkw/collection/Region.py
Normal file
11
source/mkw/collection/Region.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
class Region(enum.Enum):
|
||||||
|
"""
|
||||||
|
Enum for game region
|
||||||
|
"""
|
||||||
|
PAL = "PAL"
|
||||||
|
USA = "USA"
|
||||||
|
JAP = "JAP"
|
||||||
|
KOR = "KOR"
|
|
@ -1,8 +1,9 @@
|
||||||
import enum
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
|
|
||||||
|
from source.mkw.collection.Extension import Extension
|
||||||
|
from source.mkw.collection.Region import Region
|
||||||
from source.wt import *
|
from source.wt import *
|
||||||
|
|
||||||
tools_path = tools_wit_dir / "wit"
|
tools_path = tools_wit_dir / "wit"
|
||||||
|
@ -24,37 +25,6 @@ def copy(source_directory: Path | str, destination_file: Path | str) -> "WITPath
|
||||||
return WITPath(destination_file)
|
return WITPath(destination_file)
|
||||||
|
|
||||||
|
|
||||||
class Extension(enum.Enum):
|
|
||||||
"""
|
|
||||||
Enum for game extension
|
|
||||||
"""
|
|
||||||
WBFS = ".wbfs"
|
|
||||||
FST = ".dol"
|
|
||||||
CISO = ".ciso"
|
|
||||||
ISO = ".iso"
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _missing_(cls, value: str) -> "Extension | None":
|
|
||||||
"""
|
|
||||||
if not found, search for the same value with lower case
|
|
||||||
:param value: value to search for
|
|
||||||
:return: None if nothing found, otherwise the found value
|
|
||||||
"""
|
|
||||||
value = value.lower()
|
|
||||||
for member in filter(lambda m: m.value == value, cls): return member
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Region(enum.Enum):
|
|
||||||
"""
|
|
||||||
Enum for game region
|
|
||||||
"""
|
|
||||||
PAL = "PAL"
|
|
||||||
USA = "USA"
|
|
||||||
JAP = "JAP"
|
|
||||||
KOR = "KOR"
|
|
||||||
|
|
||||||
|
|
||||||
class WITPath:
|
class WITPath:
|
||||||
__slots__ = ("path", "_analyze")
|
__slots__ = ("path", "_analyze")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue