diff --git a/icon.ico b/assets/icon.ico similarity index 100% rename from icon.ico rename to assets/icon.ico diff --git a/assets/language/en.json b/assets/language/en.json new file mode 100644 index 0000000..f97aa8f --- /dev/null +++ b/assets/language/en.json @@ -0,0 +1,6 @@ +{ + "name": "English", + "translation": { + "INSTALLER_TITLE": "MKWF-Install" + } +} \ No newline at end of file diff --git a/assets/language/fr.json b/assets/language/fr.json new file mode 100644 index 0000000..f60b8c6 --- /dev/null +++ b/assets/language/fr.json @@ -0,0 +1,6 @@ +{ + "name": "Français", + "translation": { + + } +} \ No newline at end of file diff --git a/main.pyw b/main.pyw index e69de29..3c69467 100644 --- a/main.pyw +++ b/main.pyw @@ -0,0 +1,3 @@ +from source.gui import install + +install.Window().mainloop() diff --git a/requirements.txt b/requirements.txt index 15f562a..037103e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -pillow -cx_Freeze \ No newline at end of file +pillow \ No newline at end of file diff --git a/setup.py b/setup.py index a2e5630..dcf8460 100644 --- a/setup.py +++ b/setup.py @@ -3,11 +3,8 @@ import sys import json include_files = [ - "./icon.ico", "./LICENSE", "./README.md", - "./version", - "./translation.json", "./assets", "./tools", @@ -19,9 +16,9 @@ include_files = [ options = { "build_exe": { "include_files": include_files, - "includes": ["tkinter", "requests", "PIL", "distutils"], + "includes": ["tkinter", "PIL"], "include_msvcr": True, - "packages": ["tkinter", "distutils"], + "packages": ["tkinter"], } } @@ -37,7 +34,7 @@ setup( executables=[ Executable( "./main.pyw", - icon="./icon.ico", + icon="./assets/icon.ico", base="win32gui", target_name="MKWF-Install.exe", shortcut_name="MKWF-Install", diff --git a/source/__init__.py b/source/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/gui/__init__.py b/source/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/gui/install.py b/source/gui/install.py new file mode 100644 index 0000000..35e514d --- /dev/null +++ b/source/gui/install.py @@ -0,0 +1,122 @@ +import tkinter +from pathlib import Path +import json +from tkinter import ttk + + +from source.translation import translate as _ + + +class Window(tkinter.Tk): + def __init__(self): + super().__init__() + + self.title(_("INSTALLER_TITLE")) + self.resizable(False, False) + self.iconbitmap("./assets/icon.ico") + + self.menu = Menu(self) + self.config(menu=self.menu) + + self.select_pack = SelectPack(self) + self.select_pack.grid(row=1, column=1, sticky="w") + + self.source_game = SourceGame(self) + self.source_game.grid(row=2, column=1, sticky="nsew") + + self.destination_game = DestinationGame(self) + self.destination_game.grid(row=3, column=1, sticky="nsew") + + self.button_install = ButtonInstall(self) + self.button_install.grid(row=4, column=1, sticky="nsew") + + self.progress_bar = ProgressBar(self) + self.progress_bar.grid(row=5, column=1, sticky="nsew") + + +class Menu(tkinter.Menu): + def __init__(self, master): + super().__init__(master) + + self.language = self.Language(self) + self.track_configuration = self.TrackConfiguration(self) + self.advanced = self.Advanced(self) + self.help = self.Help(self) + + class Language(tkinter.Menu): + def __init__(self, master: tkinter.Menu): + super().__init__(master, tearoff=False) + + master.add_cascade(label="Language", menu=self) + + for file in Path("./assets/language/").iterdir(): + self.add_command(label=json.loads(file.read_text(encoding="utf8"))["name"]) + + class TrackConfiguration(tkinter.Menu): + def __init__(self, master: tkinter.Menu): + super().__init__(master, tearoff=False) + + master.add_cascade(label="Track Configuration", menu=self) + self.add_command(label="Change configuration") + + class Advanced(tkinter.Menu): + def __init__(self, master: tkinter.Menu): + super().__init__(master, tearoff=False) + + master.add_cascade(label="Advanced", menu=self) + self.add_command(label="Debug mode") + + class Help(tkinter.Menu): + def __init__(self, master: tkinter.Menu): + super().__init__(master, tearoff=False) + + master.add_cascade(label="Help", menu=self) + self.add_command(label="Discord") + self.add_command(label="Github Wiki") + + +class SourceGame(ttk.LabelFrame): + def __init__(self, master: tkinter.Tk): + super().__init__(master, text="Original Game") + + self.entry = ttk.Entry(self, width=50) + self.entry.grid(row=1, column=1, sticky="nsew") + + ttk.Button(self, text="...", width=2).grid(row=1, column=2, sticky="nsew") + + +class DestinationGame(ttk.LabelFrame): + def __init__(self, master: tkinter.Tk): + super().__init__(master, text="Game Destination") + + self.entry = ttk.Entry(self, width=50) + self.entry.grid(row=1, column=1, sticky="nsew") + + ttk.Button(self, text="...", width=2).grid(row=1, column=2, sticky="nsew") + + +class ButtonInstall(ttk.Button): + def __init__(self, master: tkinter.Tk): + super().__init__(master, text="Install", command=self.install) + + def install(self): + ... + + +class ProgressBar(ttk.Frame): + def __init__(self, master: tkinter.Tk): + super().__init__() + + self.progress_bar = ttk.Progressbar(self) + self.progress_bar.grid(row=1, column=1, sticky="nsew") + + self.description = tkinter.Label(self, text="test") + self.description.grid(row=2, column=1, sticky="nsew") + + +class SelectPack(ttk.Combobox): + def __init__(self, master: tkinter.Tk): + super().__init__() + + for pack in Path("./Pack/").iterdir(): + self.insert(tkinter.END, pack.name) diff --git a/source/translation.py b/source/translation.py new file mode 100644 index 0000000..1fa54f2 --- /dev/null +++ b/source/translation.py @@ -0,0 +1,9 @@ +import json +from pathlib import Path + + +language_data = json.loads(Path("./assets/language/en.json").read_text(encoding="utf8")) + + +def translate(*text): + return "".join([language_data["translation"].get(word, word) for word in text])