-
Notifications
You must be signed in to change notification settings - Fork 0
/
gui.py
124 lines (106 loc) · 3.73 KB
/
gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import tkinter as tk
from tkinter import filedialog, ttk
import subprocess
import json
import os
config_file = 'config.json'
def browse_file(entry):
filename = filedialog.askopenfilename()
if filename != '':
entry.delete(0, tk.END)
entry.insert(0, filename)
save_config()
def browse_folder(entry):
foldername = filedialog.askdirectory()
if foldername != '':
entry.delete(0, tk.END)
entry.insert(0, foldername)
save_config()
update_guid_dropdowns()
# Remove the '.sav' extension.
def update_guid_dropdowns():
folder_path = entry_save.get()
players_folder = os.path.join(folder_path, 'Players')
if os.path.exists(players_folder) and os.path.isdir(players_folder):
# List all files and remove the '.sav' extension.
file_names = [
os.path.splitext(f)[0]
for f in os.listdir(players_folder)
if os.path.isfile(os.path.join(players_folder, f)) and f.endswith('.sav')
]
if not combo_new_guid.get() in file_names:
combo_new_guid.set('')
if not combo_old_guid.get() in file_names:
combo_old_guid.set('')
combo_new_guid['values'] = file_names
combo_old_guid['values'] = file_names
def run_command():
uesave_path = entry_uesave.get()
save_path = entry_save.get()
new_guid = combo_new_guid.get()
old_guid = combo_old_guid.get()
guild_fix = guild_fix_var.get()
command = (
f'python fix-host-save.py "{uesave_path}" "{save_path}" {new_guid.replace(".sav", "")} {old_guid.replace(".sav", "")} {guild_fix}'
)
subprocess.run(command, shell=True)
update_guid_dropdowns()
def save_config():
config = {
'uesave_path': entry_uesave.get(),
'save_path': entry_save.get(),
'new_guid': combo_new_guid.get(),
'old_guid': combo_old_guid.get(),
'guild_fix': guild_fix_var.get(),
}
with open(config_file, 'w') as f:
json.dump(config, f)
def on_entry_change(event):
save_config()
def load_config():
if os.path.exists(config_file):
with open(config_file, 'r') as f:
config = json.load(f)
entry_uesave.insert(0, config.get('uesave_path', ''))
entry_save.insert(0, config.get('save_path', ''))
update_guid_dropdowns()
combo_new_guid.set(config.get('new_guid', ''))
combo_old_guid.set(config.get('old_guid', ''))
guild_fix_var.set(config.get('guild_fix', ''))
app = tk.Tk()
app.title('Fix Host Save Command GUI')
# Uesave.exe path.
tk.Label(app, text='Path to uesave.exe:').pack()
entry_uesave = tk.Entry(app, width=50)
entry_uesave.pack()
entry_uesave.bind('<KeyRelease>', on_entry_change)
button_browse_uesave = tk.Button(
app, text='Browse', command=lambda: browse_file(entry_uesave)
)
button_browse_uesave.pack()
# Save folder path.
tk.Label(app, text='Path to save folder:').pack()
entry_save = tk.Entry(app, width=50)
entry_save.pack()
entry_save.bind('<KeyRelease>', on_entry_change)
button_browse_save = tk.Button(
app, text='Browse', command=lambda: browse_folder(entry_save)
)
button_browse_save.pack()
# New GUID selection.
tk.Label(app, text='New GUID:').pack()
combo_new_guid = ttk.Combobox(app, postcommand=update_guid_dropdowns)
combo_new_guid.pack()
# Old GUID selection.
tk.Label(app, text='Old GUID:').pack()
combo_old_guid = ttk.Combobox(app, postcommand=update_guid_dropdowns)
combo_old_guid.pack()
# Guild fix selection.
guild_fix_var = tk.BooleanVar()
cb_guild_fix = tk.Checkbutton(app, text='Guild fix', variable=guild_fix_var, height=2)
cb_guild_fix.pack()
# Run command button.
run_button = tk.Button(app, text='Run Command', command=run_command)
run_button.pack()
load_config()
app.mainloop()