Strip Multiworld

This commit is contained in:
Mike A. Trethewey
2020-03-10 01:44:48 -07:00
parent 3f282fe15c
commit 014aa3519c
4 changed files with 73 additions and 10 deletions

View File

@@ -33,6 +33,8 @@ def loadcliargs(gui, args, settings=None):
gui.pages[mainpage].pages[subpage].widgets[widget].checkbox.configure(text=label) gui.pages[mainpage].pages[subpage].widgets[widget].checkbox.configure(text=label)
elif type == "selectbox": elif type == "selectbox":
gui.pages[mainpage].pages[subpage].widgets[widget].label.configure(text=label) 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]) 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 we're on the Game Options page and it's not about Hints
if subpage == "gameoptions" and not widget == "hints": if subpage == "gameoptions" and not widget == "hints":
@@ -86,9 +88,21 @@ def loadcliargs(gui, args, settings=None):
subpage = "multiworld" subpage = "multiworld"
widget = "worlds" widget = "worlds"
setting = "multi" 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]: if args[setting]:
# set storagevar
gui.pages[mainpage].pages[subpage].widgets[widget].storageVar.set(str(args[setting])) 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 # Get Seed ID
mainpage = "bottom" mainpage = "bottom"
setting = "seed" setting = "seed"

View File

@@ -47,26 +47,43 @@ def enemizer_page(parent,settings):
## Enemizer CLI Path ## Enemizer CLI Path
# This one's more-complicated, build it and stuff it # This one's more-complicated, build it and stuff it
# widget ID
widget = "enemizercli" widget = "enemizercli"
# Empty object
self.widgets[widget] = Empty() self.widgets[widget] = Empty()
# pieces
self.widgets[widget].pieces = {} self.widgets[widget].pieces = {}
# frame
self.widgets[widget].pieces["frame"] = Frame(self.frames["bottomEnemizerFrame"]) 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 = Label(self.widgets[widget].pieces["frame"], text="EnemizerCLI path: ")
self.widgets[widget].pieces["frame"].label.pack(side=LEFT) self.widgets[widget].pieces["frame"].label.pack(side=LEFT)
# get app online
self.widgets[widget].pieces["online"] = Empty() 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 = Label(self.widgets[widget].pieces["frame"], text="(get online)", fg="blue", cursor="hand2")
self.widgets[widget].pieces["online"].label.pack(side=LEFT) self.widgets[widget].pieces["online"].label.pack(side=LEFT)
# get app online: open browser
self.widgets[widget].pieces["online"].label.bind("<Button-1>", open_enemizer_download) self.widgets[widget].pieces["online"].label.bind("<Button-1>", open_enemizer_download)
# storage var
self.widgets[widget].storageVar = StringVar(value=settings["enemizercli"]) 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"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[widget].storageVar)
self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True) self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True)
def EnemizerSelectPath(): def EnemizerSelectPath():
path = filedialog.askopenfilename(filetypes=[("EnemizerCLI executable", "*EnemizerCLI*")], initialdir=os.path.join(".")) path = filedialog.askopenfilename(filetypes=[("EnemizerCLI executable", "*EnemizerCLI*")], initialdir=os.path.join("."))
if path: if path:
self.widgets[widget].storageVar.set(path) self.widgets[widget].storageVar.set(path)
settings["enemizercli"] = 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"] = Button(self.widgets[widget].pieces["frame"], text='...', command=EnemizerSelectPath)
self.widgets[widget].pieces["opendialog"].pack(side=LEFT) self.widgets[widget].pieces["opendialog"].pack(side=LEFT)
# frame: pack
self.widgets[widget].pieces["frame"].pack(fill=X) self.widgets[widget].pieces["frame"].pack(fill=X)
return self,settings return self,settings

View File

@@ -29,12 +29,21 @@ def generation_page(parent,settings):
self.frames["baserom"].pack(anchor=W, fill=X) self.frames["baserom"].pack(anchor=W, fill=X)
## Locate base ROM ## Locate base ROM
# This one's more-complicated, build it and stuff it # This one's more-complicated, build it and stuff it
# widget ID
widget = "rom" widget = "rom"
# Empty object
self.widgets[widget] = Empty() self.widgets[widget] = Empty()
# pieces
self.widgets[widget].pieces = {} self.widgets[widget].pieces = {}
# frame
self.widgets[widget].pieces["frame"] = Frame(self.frames["baserom"]) 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: ') self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Base Rom: ')
# storage var
self.widgets[widget].storageVar = StringVar() 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].pieces["textbox"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[widget].storageVar)
self.widgets[widget].storageVar.set(settings["rom"]) self.widgets[widget].storageVar.set(settings["rom"])
@@ -42,11 +51,16 @@ def generation_page(parent,settings):
def RomSelect(): def RomSelect():
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")], initialdir=os.path.join(".")) rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")], initialdir=os.path.join("."))
self.widgets[widget].storageVar.set(rom) self.widgets[widget].storageVar.set(rom)
# dialog button
self.widgets[widget].pieces["button"] = Button(self.widgets[widget].pieces["frame"], text='Select Rom', command=RomSelect) 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) self.widgets[widget].pieces["frame"].label.pack(side=LEFT)
# textbox: pack
self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True) self.widgets[widget].pieces["textbox"].pack(side=LEFT, fill=X, expand=True)
# button: pack
self.widgets[widget].pieces["button"].pack(side=LEFT) self.widgets[widget].pieces["button"].pack(side=LEFT)
# frame: pack
self.widgets[widget].pieces["frame"].pack(fill=X) self.widgets[widget].pieces["frame"].pack(fill=X)
return self,settings return self,settings

View File

@@ -2,6 +2,7 @@ from tkinter import ttk, StringVar, Entry, Frame, Label, N, E, W, X, LEFT
import source.gui.widgets as widgets import source.gui.widgets as widgets
import json import json
import os import os
from source.classes.Empty import Empty
def multiworld_page(parent,settings): def multiworld_page(parent,settings):
# Multiworld # Multiworld
@@ -26,16 +27,33 @@ def multiworld_page(parent,settings):
## List of Player Names ## List of Player Names
# This one's more-complicated, build it and stuff it # This one's more-complicated, build it and stuff it
key = "names" # widget ID
self.widgets[key] = Frame(self.frames["widgets"]) widget = "names"
self.widgets[key].label = Label(self.widgets[key], text='Player names')
self.widgets[key].storageVar = StringVar(value=settings["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): def saveMultiNames(caller,_,mode):
settings["names"] = self.widgets[key].storageVar.get() settings["names"] = self.widgets[widget].storageVar.get()
self.widgets[key].storageVar.trace_add("write",saveMultiNames) self.widgets[widget].storageVar.trace_add("write",saveMultiNames)
self.widgets[key].textbox = Entry(self.widgets[key], textvariable=self.widgets[key].storageVar) # textbox
self.widgets[key].label.pack(side=LEFT) self.widgets[widget].pieces["textbox"] = Entry(self.widgets[widget].pieces["frame"], textvariable=self.widgets[key].storageVar)
self.widgets[key].textbox.pack(side=LEFT, fill=X, expand=True)
self.widgets[key].pack(anchor=N, fill=X, expand=True) # 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 return self,settings