diff --git a/source/gui/loadcliargs.py b/source/gui/loadcliargs.py index c8ac481f..f8a52483 100644 --- a/source/gui/loadcliargs.py +++ b/source/gui/loadcliargs.py @@ -33,6 +33,8 @@ def loadcliargs(gui, args, settings=None): gui.pages[mainpage].pages[subpage].widgets[widget].checkbox.configure(text=label) elif type == "selectbox": gui.pages[mainpage].pages[subpage].widgets[widget].label.configure(text=label) + elif type == "spinbox": + gui.pages[mainpage].pages[subpage].widgets[widget].label.configure(text=label) gui.pages[mainpage].pages[subpage].widgets[widget].storageVar.set(args[arg]) # If we're on the Game Options page and it's not about Hints if subpage == "gameoptions" and not widget == "hints": @@ -86,9 +88,21 @@ def loadcliargs(gui, args, settings=None): subpage = "multiworld" widget = "worlds" setting = "multi" + # set textbox/frame label + label = fish.translate("gui","gui",mainpage + '.' + subpage + '.' + widget) + gui.pages[mainpage].pages[subpage].widgets[widget].label.configure(text=label) if args[setting]: + # set storagevar gui.pages[mainpage].pages[subpage].widgets[widget].storageVar.set(str(args[setting])) + # Set Multiworld Names + mainpage = "randomizer" + subpage = "multiworld" + widget = "names" + # set textbox/frame label + label = fish.translate("gui","gui",mainpage + '.' + subpage + '.' + widget) + gui.pages[mainpage].pages[subpage].widgets[widget].pieces["frame"].label.configure(text=label) + # Get Seed ID mainpage = "bottom" setting = "seed" diff --git a/source/gui/randomize/enemizer.py b/source/gui/randomize/enemizer.py index dd16bbaa..f6ba1846 100644 --- a/source/gui/randomize/enemizer.py +++ b/source/gui/randomize/enemizer.py @@ -47,26 +47,43 @@ def enemizer_page(parent,settings): ## Enemizer CLI Path # This one's more-complicated, build it and stuff it + # widget ID widget = "enemizercli" + + # Empty object self.widgets[widget] = Empty() + # pieces self.widgets[widget].pieces = {} + + # frame self.widgets[widget].pieces["frame"] = Frame(self.frames["bottomEnemizerFrame"]) + # frame: label self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text="EnemizerCLI path: ") self.widgets[widget].pieces["frame"].label.pack(side=LEFT) + + # get app online self.widgets[widget].pieces["online"] = Empty() + # get app online: label self.widgets[widget].pieces["online"].label = Label(self.widgets[widget].pieces["frame"], text="(get online)", fg="blue", cursor="hand2") self.widgets[widget].pieces["online"].label.pack(side=LEFT) + # get app online: open browser self.widgets[widget].pieces["online"].label.bind("", open_enemizer_download) + # storage var self.widgets[widget].storageVar = StringVar(value=settings["enemizercli"]) + # textbox self.widgets[widget].pieces["textbox"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[widget].storageVar) self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True) + def EnemizerSelectPath(): path = filedialog.askopenfilename(filetypes=[("EnemizerCLI executable", "*EnemizerCLI*")], initialdir=os.path.join(".")) if path: self.widgets[widget].storageVar.set(path) settings["enemizercli"] = path + # dialog button self.widgets[widget].pieces["opendialog"] = Button(self.widgets[widget].pieces["frame"], text='...', command=EnemizerSelectPath) self.widgets[widget].pieces["opendialog"].pack(side=LEFT) + + # frame: pack self.widgets[widget].pieces["frame"].pack(fill=X) return self,settings diff --git a/source/gui/randomize/generation.py b/source/gui/randomize/generation.py index 47c221d0..58eb9b29 100644 --- a/source/gui/randomize/generation.py +++ b/source/gui/randomize/generation.py @@ -29,12 +29,21 @@ def generation_page(parent,settings): self.frames["baserom"].pack(anchor=W, fill=X) ## Locate base ROM # This one's more-complicated, build it and stuff it + # widget ID widget = "rom" + + # Empty object self.widgets[widget] = Empty() + # pieces self.widgets[widget].pieces = {} + + # frame self.widgets[widget].pieces["frame"] = Frame(self.frames["baserom"]) + # frame: label self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Base Rom: ') + # storage var self.widgets[widget].storageVar = StringVar() + # textbox self.widgets[widget].pieces["textbox"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[widget].storageVar) self.widgets[widget].storageVar.set(settings["rom"]) @@ -42,11 +51,16 @@ def generation_page(parent,settings): def RomSelect(): rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")], initialdir=os.path.join(".")) self.widgets[widget].storageVar.set(rom) + # dialog button self.widgets[widget].pieces["button"] = Button(self.widgets[widget].pieces["frame"], text='Select Rom', command=RomSelect) + # frame label: pack self.widgets[widget].pieces["frame"].label.pack(side=LEFT) + # textbox: pack self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True) + # button: pack self.widgets[widget].pieces["button"].pack(side=LEFT) + # frame: pack self.widgets[widget].pieces["frame"].pack(fill=X) return self,settings diff --git a/source/gui/randomize/multiworld.py b/source/gui/randomize/multiworld.py index c36854ed..d1b69380 100644 --- a/source/gui/randomize/multiworld.py +++ b/source/gui/randomize/multiworld.py @@ -2,6 +2,7 @@ from tkinter import ttk, StringVar, Entry, Frame, Label, N, E, W, X, LEFT import source.gui.widgets as widgets import json import os +from source.classes.Empty import Empty def multiworld_page(parent,settings): # Multiworld @@ -26,16 +27,33 @@ def multiworld_page(parent,settings): ## List of Player Names # This one's more-complicated, build it and stuff it - key = "names" - self.widgets[key] = Frame(self.frames["widgets"]) - self.widgets[key].label = Label(self.widgets[key], text='Player names') - self.widgets[key].storageVar = StringVar(value=settings["names"]) + # widget ID + widget = "names" + + # Empty object + self.widgets[widget] = Empty() + # pieces + self.widgets[widget].pieces = {} + + # frame + self.widgets[widget].pieces["frame"] = Frame(self.frames["widgets"]) + # frame: label + self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Player names') + # storage var + self.widgets[widget].storageVar = StringVar(value=settings["names"]) + + # FIXME: Got some strange behavior here; both Entry-like objects react to mousewheel on Spinbox def saveMultiNames(caller,_,mode): - settings["names"] = self.widgets[key].storageVar.get() - self.widgets[key].storageVar.trace_add("write",saveMultiNames) - self.widgets[key].textbox = Entry(self.widgets[key], textvariable=self.widgets[key].storageVar) - self.widgets[key].label.pack(side=LEFT) - self.widgets[key].textbox.pack(side=LEFT, fill=X, expand=True) - self.widgets[key].pack(anchor=N, fill=X, expand=True) + settings["names"] = self.widgets[widget].storageVar.get() + self.widgets[widget].storageVar.trace_add("write",saveMultiNames) + # textbox + self.widgets[widget].pieces["textbox"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[key].storageVar) + + # frame label: pack + self.widgets[widget].pieces["frame"].label.pack(side=LEFT, anchor=N) + # textbox: pack + self.widgets[widget].pieces["textbox"].pack(side=LEFT, anchor=N, fill=X, expand=True) + # frame: pack + self.widgets[widget].pieces["frame"].pack(side=LEFT, anchor=N, fill=X, expand=True) return self,settings