Added delete button and warnings to GUI. Also some stability fixes.

This commit is contained in:
Patrick Marsee 2023-02-02 22:44:08 -05:00
parent 1dfe472a57
commit 86f6cc2659
2 changed files with 74 additions and 23 deletions

View file

@ -69,6 +69,10 @@ class AppFrame(ttk.Frame):
text = "Save",
command = self.command_save_button)
self.profile_save_btn.grid(column = 3, row = 0)
self.profile_delete_btn = ttk.Button(self,
text = "Delete",
command = self.command_delete_button)
self.profile_delete_btn.grid(column = 4, row = 0)
self.mod_list = ttk.Treeview(self,
columns = ("name", "version", "author", "enabled"),
height = 20,
@ -81,7 +85,7 @@ class AppFrame(ttk.Frame):
self.mod_list.tag_configure("ENABLED", foreground = "green")
self.mod_list.tag_bind("DISABLED", '<<TreeviewSelect>>', lambda e: self.command_enable(self.mod_list.selection()[0]))
self.mod_list.tag_bind("ENABLED", '<<TreeviewSelect>>', lambda e: self.command_disable(self.mod_list.selection()[0]))
self.mod_list.grid(column = 0, row = 1, columnspan = 4, sticky = (N, E, S, W))
self.mod_list.grid(column = 0, row = 1, columnspan = 5, sticky = (N, E, S, W))
def prompt_configuration_window(self):
SEVEN_DIR = ""
@ -157,7 +161,7 @@ class AppFrame(ttk.Frame):
enabled_text = "DISABLED"
if mod in loaded_mods:
enabled_text = "ENABLED"
values = *self.get_mod_data(mod), enabled_text
values = *seven_mods.get_mod_data(mod, self.cfg), enabled_text
self.mod_list.insert("", "end", mod, text = mod, values = values, tags = (enabled_text))
def refresh_profile_list(self):
@ -184,9 +188,10 @@ class AppFrame(ttk.Frame):
prof = self.profile_var.get()
if prof in self.profiles.profiles:
try:
seven_mods.command_disable(["", "", "*"], self.cfg, self.profiles)
seven_mods.command_enable(["", ""] + self.profiles.profiles[prof], self.cfg, self.profiles)
self.refresh_mod_list()
if not self.cfg.warn_load or messagebox.askokcancel(message = f'Are you sure you want to load profile"{prof}"?'):
seven_mods.command_disable(["", "", "*"], self.cfg, self.profiles)
seven_mods.command_enable(["", ""] + self.profiles.profiles[prof], self.cfg, self.profiles)
self.refresh_mod_list()
except seven_mods.SevenModsError as e:
messagebox.showerror(message = str(e))
else:
@ -194,11 +199,25 @@ class AppFrame(ttk.Frame):
def command_save_button(self):
prof = self.profile_var.get()
print(f"prof={prof}")
try:
self.profiles.profiles[prof] = seven_mods.get_loaded_mods(self.cfg)
self.profiles.save_mod_profiles()
self.refresh_profile_list()
if len(prof) == 0 or prof.isspace():
raise seven_mods.SevenModsError("Profile must have a name.")
if not self.cfg.warn_save or prof not in self.profiles.profiles or messagebox.askokcancel(message = f'Are you sure you want to overwrite profile"{prof}"?'):
self.profiles.profiles[prof] = seven_mods.get_loaded_mods(self.cfg)
self.profiles.save_mod_profiles()
self.refresh_profile_list()
except seven_mods.SevenModsError as e:
messagebox.showerror(message = str(e))
def command_delete_button(self):
prof = self.profile_var.get()
try:
if prof in self.profiles.profiles:
if not self.cfg.warn_delete or messagebox.askokcancel(message = f'Are you sure you want to delete profile"{prof}"?'):
del self.profiles.profiles[prof]
self.profiles.save_mod_profiles()
else:
raise seven_mods.SevenModsError(f"Cannot delete non-existant profile: {prof}")
except seven_mods.SevenModsError as e:
messagebox.showerror(message = str(e))