Pretty Multiworld options

This commit is contained in:
Mike A. Trethewey
2020-02-11 01:59:41 -08:00
parent 3065d17d63
commit 64e0d8ebcf
4 changed files with 45 additions and 15 deletions

View File

@@ -31,7 +31,7 @@ def bottom_frame(self,parent,args=None):
def generateRom():
guiargs = Namespace()
guiargs.multi = int(parent.multiworldWindow.worldVar.get())
guiargs.multi = int(parent.multiworldWindow.multiworldWidgets["worlds"].storageVar.get())
guiargs.names = parent.multiworldWindow.namesVar.get()
guiargs.seed = int(parent.farBottomFrame.seedVar.get()) if parent.farBottomFrame.seedVar.get() else None
guiargs.count = int(parent.farBottomFrame.countVar.get()) if parent.farBottomFrame.countVar.get() != '1' else None

View File

@@ -15,7 +15,7 @@ def loadcliargs(gui,args):
gui.gameOptionsWindow.quickSwapVar.set(int(args.quickswap))
gui.gameOptionsWindow.disableMusicVar.set(int(args.disablemusic))
if args.multi:
gui.multiworldWindow.worldVar.set(str(args.multi))
gui.multiworldWindow.multiworldWidgets["worlds"].storageVar.set(str(args.multi))
if args.count:
gui.farBottomFrame.countVar.set(str(args.count))
if args.seed:

View File

@@ -1,25 +1,35 @@
from tkinter import ttk, StringVar, Entry, Frame, Label, Spinbox, E, W, LEFT, RIGHT
from tkinter import ttk, StringVar, Entry, Frame, Label, Spinbox, N, E, W, X, LEFT, RIGHT
import gui.widgets as widgets
def multiworld_page(parent,working_dirs):
# Multiworld
self = ttk.Frame(parent)
# Multiworld
multiFrame = Frame(self)
# Multiworld options
self.multiworldWidgets = {}
## Number of Worlds
worldLabel = Label(multiFrame, text='Worlds')
self.worldVar = StringVar(value=working_dirs["multi.worlds"])
worldSpinbox = Spinbox(multiFrame, from_=1, to=100, width=5, textvariable=self.worldVar)
worldLabel.pack(side=LEFT)
worldSpinbox.pack(side=LEFT)
key = "worlds"
self.multiworldWidgets[key] = widgets.make_widget(
self,
"spinbox",
self,
"Worlds",
None,
{"label": {"side": LEFT}, "spinbox": {"side": RIGHT}}
)
self.multiworldWidgets[key].pack(side=LEFT, anchor=N)
## List of Player Names
namesLabel = Label(multiFrame, text='Player names')
namesFrame = Frame(self)
namesLabel = Label(namesFrame, text='Player names')
self.namesVar = StringVar(value=working_dirs["multi.names"])
def saveMultiNames(caller,_,mode):
working_dirs["multi.names"] = self.namesVar.get()
self.namesVar.trace_add("write",saveMultiNames)
namesEntry = Entry(multiFrame, textvariable=self.namesVar)
namesEntry = Entry(namesFrame, textvariable=self.namesVar)
namesLabel.pack(side=LEFT)
namesEntry.pack(side=LEFT)
multiFrame.pack(anchor=W)
namesEntry.pack(side=LEFT, fill=X, expand=True)
namesFrame.pack(anchor=N, fill=X, expand=True)
return self,working_dirs

View File

@@ -1,4 +1,4 @@
from tkinter import Checkbutton, Entry, Frame, IntVar, Label, OptionMenu, StringVar
from tkinter import Checkbutton, Entry, Frame, IntVar, Label, OptionMenu, Spinbox, StringVar
def make_checkbox(self, parent, label, storageVar, packAttrs):
self = Frame(parent)
@@ -28,6 +28,22 @@ def make_selectbox(self, parent, label, options, storageVar, packAttrs):
self.selectbox.pack(packAttrs["selectbox"])
return self
def make_spinbox(self, parent, label, storageVar, packAttrs):
self = Frame(parent)
self.storageVar = storageVar
self.label = Label(self, text=label)
self.label.pack(packAttrs["label"])
fromNum = 1
toNum = 100
if "spinbox" in packAttrs:
if "from" in packAttrs:
fromNum = packAttrs["spinbox"]["from"]
if "to" in packAttrs:
toNum = packAttrs["spinbox"]["to"]
self.spinbox = Spinbox(self, from_=fromNum, to=toNum, width=5, textvariable=self.storageVar)
self.spinbox.pack(packAttrs["spinbox"])
return self
def make_textbox(self, parent, label, storageVar, packAttrs):
self = Frame(parent)
self.storageVar = storageVar
@@ -54,6 +70,10 @@ def make_widget(self, type, parent, label, storageVar=None, packAttrs=dict(), op
if thisStorageVar is None:
thisStorageVar = StringVar()
widget = make_selectbox(self, parent, label, options, thisStorageVar, packAttrs)
elif type == "spinbox":
if thisStorageVar is None:
thisStorageVar = StringVar()
widget = make_spinbox(self, parent, label, thisStorageVar, packAttrs)
elif type == "textbox":
if thisStorageVar is None:
thisStorageVar = StringVar()