Arrayify more stuff

Ignore settings file
Rip out working_dirs in favor of settings
Set main pages to array
Set bottom frame to array
This commit is contained in:
Mike A. Trethewey
2020-02-15 01:41:21 -08:00
parent 62efaebb4d
commit 3fe2c02824
9 changed files with 187 additions and 90 deletions

1
.gitignore vendored
View File

@@ -18,6 +18,7 @@ EnemizerCLI/
RaceRom.py RaceRom.py
weights/ weights/
settings.json
working_dirs.json working_dirs.json
venv venv

170
CLI.py
View File

@@ -23,8 +23,8 @@ def parse_arguments(argv, no_defaults=False):
def defval(value): def defval(value):
return value if not no_defaults else None return value if not no_defaults else None
# get working dirs # get settings
working_dirs = get_working_dirs() settings = get_settings()
# we need to know how many players we have first # we need to know how many players we have first
parser = argparse.ArgumentParser(add_help=False) parser = argparse.ArgumentParser(add_help=False)
@@ -206,10 +206,10 @@ def parse_arguments(argv, no_defaults=False):
parser.add_argument('--openpyramid', default=defval(False), help='''\ parser.add_argument('--openpyramid', default=defval(False), help='''\
Pre-opens the pyramid hole, this removes the Agahnim 2 requirement for it Pre-opens the pyramid hole, this removes the Agahnim 2 requirement for it
''', action='store_true') ''', action='store_true')
parser.add_argument('--rom', default=defval(working_dirs["rom.base"]), help='Path to an ALttP JAP(1.0) rom to use as a base.') parser.add_argument('--rom', default=defval(settings["rom"]), help='Path to an ALttP JAP(1.0) rom to use as a base.')
parser.add_argument('--loglevel', default=defval('info'), const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.') parser.add_argument('--loglevel', default=defval('info'), const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.')
parser.add_argument('--seed', default=defval(int(working_dirs["gen.seed"]) if working_dirs["gen.seed"] is not "" and working_dirs["gen.seed"] is not None else None), help='Define seed number to generate.', type=int) parser.add_argument('--seed', default=defval(int(settings["seed"]) if settings["seed"] is not "" and settings["seed"] is not None else None), help='Define seed number to generate.', type=int)
parser.add_argument('--count', default=defval(int(working_dirs["gen.count"])), help='''\ parser.add_argument('--count', default=defval(int(settings["count"])), help='''\
Use to batch generate multiple seeds with same settings. Use to batch generate multiple seeds with same settings.
If --seed is provided, it will be used for the first seed, then If --seed is provided, it will be used for the first seed, then
used to derive the next seed (i.e. generating 10 seeds with used to derive the next seed (i.e. generating 10 seeds with
@@ -274,7 +274,7 @@ def parse_arguments(argv, no_defaults=False):
for VT site integration, do not use otherwise. for VT site integration, do not use otherwise.
''') ''')
parser.add_argument('--skip_playthrough', action='store_true', default=defval(False)) parser.add_argument('--skip_playthrough', action='store_true', default=defval(False))
parser.add_argument('--enemizercli', default=defval(working_dirs["enemizer.cli"])) parser.add_argument('--enemizercli', default=defval(settings["enemizercli"]))
parser.add_argument('--shufflebosses', default=defval('none'), choices=['none', 'basic', 'normal', 'chaos']) parser.add_argument('--shufflebosses', default=defval('none'), choices=['none', 'basic', 'normal', 'chaos'])
parser.add_argument('--shuffleenemies', default=defval('none'), choices=['none', 'shuffled', 'chaos']) parser.add_argument('--shuffleenemies', default=defval('none'), choices=['none', 'shuffled', 'chaos'])
parser.add_argument('--enemy_health', default=defval('default'), choices=['default', 'easy', 'normal', 'hard', 'expert']) parser.add_argument('--enemy_health', default=defval('default'), choices=['default', 'easy', 'normal', 'hard', 'expert'])
@@ -282,10 +282,10 @@ def parse_arguments(argv, no_defaults=False):
parser.add_argument('--shufflepots', default=defval(False), action='store_true') parser.add_argument('--shufflepots', default=defval(False), action='store_true')
parser.add_argument('--beemizer', default=defval(0), type=lambda value: min(max(int(value), 0), 4)) parser.add_argument('--beemizer', default=defval(0), type=lambda value: min(max(int(value), 0), 4))
parser.add_argument('--remote_items', default=defval(False), action='store_true') parser.add_argument('--remote_items', default=defval(False), action='store_true')
parser.add_argument('--multi', default=defval(working_dirs["multi.worlds"]), type=lambda value: min(max(int(value), 1), 255)) parser.add_argument('--multi', default=defval(settings["multi"]), type=lambda value: min(max(int(value), 1), 255))
parser.add_argument('--names', default=defval(working_dirs["multi.names"])) parser.add_argument('--names', default=defval(settings["names"]))
parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1)) parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1))
parser.add_argument('--outputpath', default=defval(working_dirs["outputpath"])) parser.add_argument('--outputpath', default=defval(settings["outputpath"]))
parser.add_argument('--race', default=defval(False), action='store_true') parser.add_argument('--race', default=defval(False), action='store_true')
parser.add_argument('--outputname') parser.add_argument('--outputname')
@@ -294,6 +294,7 @@ def parse_arguments(argv, no_defaults=False):
parser.add_argument(f'--p{player}', default=defval(''), help=argparse.SUPPRESS) parser.add_argument(f'--p{player}', default=defval(''), help=argparse.SUPPRESS)
ret = parser.parse_args(argv) ret = parser.parse_args(argv)
print(ret)
if ret.keysanity: if ret.keysanity:
ret.mapshuffle, ret.compassshuffle, ret.keyshuffle, ret.bigkeyshuffle = [True] * 4 ret.mapshuffle, ret.compassshuffle, ret.keyshuffle, ret.bigkeyshuffle = [True] * 4
@@ -317,26 +318,141 @@ def parse_arguments(argv, no_defaults=False):
return ret return ret
def get_working_dirs(): def get_settings():
# set default working dirs to same dir as script # set default settings
working_dirs = { settings = {
"adjust.rom": os.path.join("."), "multi": 1,
"enemizer.cli": os.path.join(".","EnemizerCLI","EnemizerCLI.Core"), "names": "",
"multi.worlds": 1, "seed": null,
"multi.names": "", "count": null,
"rom.base": os.path.join(".","Zelda no Densetsu - Kamigami no Triforce (Japan).sfc"), "mode": "open",
"gen.seed": "", "logic": "noglitches",
"gen.count": 1, "goal": "ganon",
"outputpath": os.path.join("."), "crystals_gt": "7",
"crystals_ganon": "7",
"swords": "random",
"difficulty": "normal",
"item_functionality": "normal",
"timer": "none",
"progressive": "on",
"accessibility": "items",
"algorithm": "balanced",
"shuffle": "vanilla",
"door_shuffle": "basic",
"experimental": 0,
"heartbeep": "normal",
"heartcolor": "red",
"fastmenu": "normal",
"create_spoiler": false,
"skip_playthrough": true,
"suppress_rom": false,
"openpyramid": false,
"mapshuffle": false,
"compassshuffle": false,
"keyshuffle": false,
"bigkeyshuffle": false,
"retro": false,
"quickswap": false,
"disablemusic": false,
"ow_palettes": "default",
"uw_palettes": "default",
"shuffleganon": true,
"hints": false,
"enemizercli": os.path.join(".","EnemizerCLI","EnemizerCLI.Core"),
"shufflebosses": "none",
"shuffleenemies": "none",
"enemy_health": "default",
"enemy_damage": "default",
"shufflepots": false,
"custom": false,
"customitemarray": [
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
4,
1,
1,
1,
1,
1,
0,
1,
2,
1,
1,
24,
10,
1,
0,
0,
0,
0,
4,
0,
0,
0,
3,
0,
0,
2,
1,
0,
0,
0,
0,
0,
1,
12,
0,
13,
2,
4,
28,
7,
1,
5,
0,
0,
0,
0,
2,
1,
0,
0,
0,
10,
0
],
"rom": os.path.join(".","Zelda no Densetsu - Kamigami no Triforce (Japan).sfc"),
"sprite": null,
"randomSprite": false,
"outputpath": os.path.join(".")
} }
if sys.platform.lower().find("windows"): if sys.platform.lower().find("windows"):
working_dirs["enemizer.cli"] += ".exe" settings["enemizercli"] += ".exe"
# read saved working dirs file if it exists and set these # read saved settings file if it exists and set these
working_dirs_path = os.path.join(".","resources","user","working_dirs.json") settings_path = os.path.join(".", "resources", "user", "settings.json")
if os.path.exists(working_dirs_path): if os.path.exists(settings_path):
with(open(working_dirs_path)) as json_file: with(open(settings_path)) as json_file:
data = json.load(json_file) data = json.load(json_file)
if 'sprite' in data.keys() and data['sprite']:
data['sprite'] = get_sprite_from_name(data['sprite'])
for k,v in data.items(): for k,v in data.items():
working_dirs[k] = v settings[k] = v
return working_dirs return settings_args

56
Gui.py
View File

@@ -5,7 +5,7 @@ import sys
from tkinter import Tk, BOTTOM, TOP, StringVar, BooleanVar, X, BOTH, ttk from tkinter import Tk, BOTTOM, TOP, StringVar, BooleanVar, X, BOTH, ttk
from argparse import Namespace from argparse import Namespace
from CLI import get_working_dirs from CLI import get_settings
from DungeonRandomizer import parse_arguments from DungeonRandomizer import parse_arguments
from gui.adjust.overview import adjust_page from gui.adjust.overview import adjust_page
from gui.custom.overview import custom_page from gui.custom.overview import custom_page
@@ -24,16 +24,6 @@ from Rom import get_sprite_from_name
def guiMain(args=None): def guiMain(args=None):
# save working dirs
def save_working_dirs():
user_resources_path = os.path.join(".","resources","user")
working_dirs_path = os.path.join(user_resources_path)
if not os.path.exists(working_dirs_path):
os.makedirs(working_dirs_path)
with open(os.path.join(working_dirs_path, "working_dirs.json"),"w+") as f:
f.write(json.dumps(self.working_dirs, indent=2))
os.chmod(os.path.join(working_dirs_path, "working_dirs.json"),0o755)
def save_settings(args): def save_settings(args):
user_resources_path = os.path.join(".", "resources", "user") user_resources_path = os.path.join(".", "resources", "user")
settings_path = os.path.join(user_resources_path) settings_path = os.path.join(user_resources_path)
@@ -41,10 +31,10 @@ def guiMain(args=None):
os.makedirs(settings_path) os.makedirs(settings_path)
with open(os.path.join(settings_path, "settings.json"), "w+") as f: with open(os.path.join(settings_path, "settings.json"), "w+") as f:
f.write(json.dumps(args, indent=2)) f.write(json.dumps(args, indent=2))
os.chmod(os.path.join(settings_path, "settings.json"),0o755)
# routine for exiting the app # routine for exiting the app
def guiExit(): def guiExit():
save_working_dirs()
gui_args = vars(create_guiargs(self)) gui_args = vars(create_guiargs(self))
if self.randomSprite.get(): if self.randomSprite.get():
gui_args['sprite'] = 'random' gui_args['sprite'] = 'random'
@@ -63,16 +53,16 @@ def guiMain(args=None):
# set program icon # set program icon
set_icon(mainWindow) set_icon(mainWindow)
# get working dirs # get saved settings
self.working_dirs = get_working_dirs() self.settings = get_settings()
notebook = ttk.Notebook(self) notebook = ttk.Notebook(self)
self.randomizerWindow = ttk.Frame(notebook) self.pages["randomizer"] = ttk.Frame(notebook)
self.adjustWindow = ttk.Frame(notebook) self.pages["adjust"] = ttk.Frame(notebook)
self.customWindow = ttk.Frame(notebook) self.pages["custom"] = ttk.Frame(notebook)
notebook.add(self.randomizerWindow, text='Randomize') notebook.add(self.pages["randomizer"], text='Randomize')
notebook.add(self.adjustWindow, text='Adjust') notebook.add(self.pages["adjust"], text='Adjust')
notebook.add(self.customWindow, text='Custom') notebook.add(self.pages["custom"], text='Custom')
notebook.pack() notebook.pack()
# randomizer controls # randomizer controls
@@ -86,7 +76,7 @@ def guiMain(args=None):
# Multiworld: Multiworld settings # Multiworld: Multiworld settings
# Game Options: Cosmetic settings that don't affect logic/placement # Game Options: Cosmetic settings that don't affect logic/placement
# Generation Setup: Primarily one&done settings # Generation Setup: Primarily one&done settings
self.randomizerNotebook = ttk.Notebook(self.randomizerWindow) self.randomizerNotebook = ttk.Notebook(self.pages["randomizer"])
# Item Randomizer # Item Randomizer
self.itemWindow = item_page(self.randomizerNotebook) self.itemWindow = item_page(self.randomizerNotebook)
@@ -97,7 +87,7 @@ def guiMain(args=None):
self.randomizerNotebook.add(self.entrandoWindow, text="Entrances") self.randomizerNotebook.add(self.entrandoWindow, text="Entrances")
# Enemizer # Enemizer
self.enemizerWindow,self.working_dirs = enemizer_page(self.randomizerNotebook,self.working_dirs) self.enemizerWindow,self.settings = enemizer_page(self.randomizerNotebook,self.settings)
self.randomizerNotebook.add(self.enemizerWindow, text="Enemizer") self.randomizerNotebook.add(self.enemizerWindow, text="Enemizer")
# Dungeon Shuffle # Dungeon Shuffle
@@ -105,7 +95,7 @@ def guiMain(args=None):
self.randomizerNotebook.add(self.dungeonRandoWindow, text="Dungeon Shuffle") self.randomizerNotebook.add(self.dungeonRandoWindow, text="Dungeon Shuffle")
# Multiworld # Multiworld
self.multiworldWindow,self.working_dirs = multiworld_page(self.randomizerNotebook,self.working_dirs) self.multiworldWindow,self.settings = multiworld_page(self.randomizerNotebook,self.settings)
self.randomizerNotebook.add(self.multiworldWindow, text="Multiworld") self.randomizerNotebook.add(self.multiworldWindow, text="Multiworld")
# Game Options # Game Options
@@ -113,26 +103,26 @@ def guiMain(args=None):
self.randomizerNotebook.add(self.gameOptionsWindow, text="Game Options") self.randomizerNotebook.add(self.gameOptionsWindow, text="Game Options")
# Generation Setup # Generation Setup
self.generationSetupWindow,self.working_dirs = generation_page(self.randomizerNotebook,self.working_dirs) self.generationSetupWindow,self.settings = generation_page(self.randomizerNotebook,self.settings)
self.randomizerNotebook.add(self.generationSetupWindow, text="Generation Setup") self.randomizerNotebook.add(self.generationSetupWindow, text="Generation Setup")
# add randomizer notebook to main window # add randomizer notebook to main window
self.randomizerNotebook.pack() self.randomizerNotebook.pack()
# bottom of window: Open Output Directory, Open Documentation (if exists) # bottom of window: Open Output Directory, Open Documentation (if exists)
self.farBottomFrame = bottom_frame(self, self, None) self.frames["bottom"] = bottom_frame(self, self, None)
# set bottom frame to main window # set bottom frame to main window
self.farBottomFrame.pack(side=BOTTOM, fill=X, padx=5, pady=5) self.frames["bottom"].pack(side=BOTTOM, fill=X, padx=5, pady=5)
self.outputPath = StringVar() self.outputPath = StringVar()
self.randomSprite = BooleanVar() self.randomSprite = BooleanVar()
# Adjuster Controls # Adjuster Controls
self.adjustContent,self.working_dirs = adjust_page(self, self.adjustWindow, self.working_dirs) self.adjustContent,self.settings = adjust_page(self, self.pages["adjust"], self.settings)
self.adjustContent.pack(side=TOP, fill=BOTH, expand=True) self.adjustContent.pack(side=TOP, fill=BOTH, expand=True)
# Custom Controls # Custom Controls
self.customContent = custom_page(self,self.customWindow) self.customContent = custom_page(self,self.pages["custom"])
self.customContent.pack(side=TOP, pady=(17,0)) self.customContent.pack(side=TOP, pady=(17,0))
def validation(P): def validation(P):
@@ -145,16 +135,6 @@ def guiMain(args=None):
# load args from CLI into options # load args from CLI into options
loadcliargs(self, args) loadcliargs(self, args)
# load settings second
settings_path = os.path.join(".", "resources", "user", "settings.json")
if os.path.exists(settings_path):
with(open(settings_path)) as json_file:
data = json.load(json_file)
if 'sprite' in data.keys() and data['sprite']:
data['sprite'] = get_sprite_from_name(data['sprite'])
settings_args = Namespace(**data)
loadcliargs(self, settings_args)
mainWindow.mainloop() mainWindow.mainloop()

View File

@@ -6,7 +6,7 @@ import gui.widgets as widgets
import logging import logging
def adjust_page(top, parent, working_dirs): def adjust_page(top, parent, settings):
# Adjust page # Adjust page
self = ttk.Frame(parent) self = ttk.Frame(parent)
@@ -164,13 +164,13 @@ def adjust_page(top, parent, working_dirs):
adjustRomFrame = Frame(bottomAdjustFrame) adjustRomFrame = Frame(bottomAdjustFrame)
adjustRomLabel = Label(adjustRomFrame, text='Rom to adjust: ') adjustRomLabel = Label(adjustRomFrame, text='Rom to adjust: ')
self.romVar2 = StringVar(value=working_dirs["adjust.rom"]) self.romVar2 = StringVar(value=settings["rom"])
romEntry2 = Entry(adjustRomFrame, textvariable=self.romVar2) romEntry2 = Entry(adjustRomFrame, textvariable=self.romVar2)
def RomSelect2(): def RomSelect2():
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")]) rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")])
if rom: if rom:
working_dirs["adjust.rom"] = rom settings["rom"] = rom
self.romVar2.set(rom) self.romVar2.set(rom)
romSelectButton2 = Button(adjustRomFrame, text='Select Rom', command=RomSelect2) romSelectButton2 = Button(adjustRomFrame, text='Select Rom', command=RomSelect2)
@@ -202,4 +202,4 @@ def adjust_page(top, parent, working_dirs):
adjustButton = Button(bottomAdjustFrame, text='Adjust Rom', command=adjustRom) adjustButton = Button(bottomAdjustFrame, text='Adjust Rom', command=adjustRom)
adjustButton.pack(side=BOTTOM, padx=(5, 0)) adjustButton.pack(side=BOTTOM, padx=(5, 0))
return self,working_dirs return self,settings

View File

@@ -3,7 +3,7 @@ from argparse import Namespace
import logging import logging
import os import os
import random import random
from CLI import parse_arguments, get_working_dirs from CLI import parse_arguments, get_settings
from Main import main from Main import main
from Utils import local_path, output_path, open_file from Utils import local_path, output_path, open_file
import gui.widgets as widgets import gui.widgets as widgets
@@ -20,11 +20,11 @@ def bottom_frame(self, parent, args=None):
seedCountFrame.pack() seedCountFrame.pack()
## Seed # ## Seed #
seedLabel = Label(self, text='Seed #') seedLabel = Label(self, text='Seed #')
savedSeed = parent.working_dirs["gen.seed"] savedSeed = parent.settings["seed"]
self.seedVar = StringVar(value=savedSeed) self.seedVar = StringVar(value=savedSeed)
def saveSeed(caller,_,mode): def saveSeed(caller,_,mode):
savedSeed = self.seedVar.get() savedSeed = self.seedVar.get()
parent.working_dirs["gen.seed"] = int(savedSeed) if savedSeed.isdigit() else None parent.settings["seed"] = int(savedSeed) if savedSeed.isdigit() else None
self.seedVar.trace_add("write",saveSeed) self.seedVar.trace_add("write",saveSeed)
seedEntry = Entry(self, width=15, textvariable=self.seedVar) seedEntry = Entry(self, width=15, textvariable=self.seedVar)
seedLabel.pack(side=LEFT) seedLabel.pack(side=LEFT)
@@ -72,7 +72,7 @@ def bottom_frame(self, parent, args=None):
if args and args.outputpath: if args and args.outputpath:
open_file(output_path(args.outputpath)) open_file(output_path(args.outputpath))
else: else:
open_file(output_path(parent.working_dirs["outputpath"])) open_file(output_path(parent.settings["outputpath"]))
openOutputButton = Button(self, text='Open Output Directory', command=open_output) openOutputButton = Button(self, text='Open Output Directory', command=open_output)
openOutputButton.pack(side=RIGHT) openOutputButton.pack(side=RIGHT)
@@ -90,8 +90,8 @@ def create_guiargs(parent):
guiargs = Namespace() guiargs = Namespace()
guiargs.multi = int(parent.multiworldWindow.multiworldWidgets["worlds"].storageVar.get()) guiargs.multi = int(parent.multiworldWindow.multiworldWidgets["worlds"].storageVar.get())
guiargs.names = parent.multiworldWindow.namesVar.get() guiargs.names = parent.multiworldWindow.namesVar.get()
guiargs.seed = int(parent.farBottomFrame.seedVar.get()) if parent.farBottomFrame.seedVar.get() else None guiargs.seed = int(parent.frames["bottom"].seedVar.get()) if parent.frames["bottom"].seedVar.get() else None
guiargs.count = int(parent.farBottomFrame.bottomWidgets["generationcount"].storageVar.get()) if parent.farBottomFrame.bottomWidgets["generationcount"].storageVar.get() != '1' else None guiargs.count = int(parent.frames["bottom"].bottomWidgets["generationcount"].storageVar.get()) if parent.frames["bottom"].bottomWidgets["generationcount"].storageVar.get() != '1' else None
guiargs.mode = parent.itemWindow.itemWidgets["worldstate"].storageVar.get() guiargs.mode = parent.itemWindow.itemWidgets["worldstate"].storageVar.get()
guiargs.logic = parent.itemWindow.itemWidgets["logiclevel"].storageVar.get() guiargs.logic = parent.itemWindow.itemWidgets["logiclevel"].storageVar.get()

View File

@@ -22,9 +22,9 @@ def loadcliargs(gui, args):
if args.multi: if args.multi:
gui.multiworldWindow.multiworldWidgets["worlds"].storageVar.set(str(args.multi)) gui.multiworldWindow.multiworldWidgets["worlds"].storageVar.set(str(args.multi))
if args.count: if args.count:
gui.farBottomFrame.bottomWidgets["generationcount"].storageVar.set(str(args.count)) gui.frames["bottom"].bottomWidgets["generationcount"].storageVar.set(str(args.count))
if args.seed: if args.seed:
gui.farBottomFrame.seedVar.set(str(args.seed)) gui.frames["bottom"].seedVar.set(str(args.seed))
gui.itemWindow.itemWidgets["worldstate"].storageVar.set(args.mode) gui.itemWindow.itemWidgets["worldstate"].storageVar.set(args.mode)
gui.itemWindow.itemWidgets["weapons"].storageVar.set(args.swords) gui.itemWindow.itemWidgets["weapons"].storageVar.set(args.swords)
gui.itemWindow.itemWidgets["itempool"].storageVar.set(args.difficulty) gui.itemWindow.itemWidgets["itempool"].storageVar.set(args.difficulty)

View File

@@ -2,7 +2,7 @@ import os
from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, LabelFrame, OptionMenu, N, E, W, LEFT, RIGHT, X from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, LabelFrame, OptionMenu, N, E, W, LEFT, RIGHT, X
import gui.widgets as widgets import gui.widgets as widgets
def enemizer_page(parent,working_dirs): def enemizer_page(parent,settings):
# Enemizer # Enemizer
self = ttk.Frame(parent) self = ttk.Frame(parent)
@@ -24,9 +24,9 @@ def enemizer_page(parent,working_dirs):
enemizerPathFrame = Frame(self) enemizerPathFrame = Frame(self)
enemizerCLIlabel = Label(enemizerPathFrame, text="EnemizerCLI path: ") enemizerCLIlabel = Label(enemizerPathFrame, text="EnemizerCLI path: ")
enemizerCLIlabel.pack(side=LEFT) enemizerCLIlabel.pack(side=LEFT)
self.enemizerCLIpathVar = StringVar(value=working_dirs["enemizer.cli"]) self.enemizerCLIpathVar = StringVar(value=settings["enemizercli"])
def saveEnemizerPath(caller,_,mode): def saveEnemizerPath(caller,_,mode):
working_dirs["enemizer.cli"] = self.enemizerCLIpathVar.get() settings["enemizercli"] = self.enemizerCLIpathVar.get()
self.enemizerCLIpathVar.trace_add("write",saveEnemizerPath) self.enemizerCLIpathVar.trace_add("write",saveEnemizerPath)
enemizerCLIpathEntry = Entry(enemizerPathFrame, textvariable=self.enemizerCLIpathVar) enemizerCLIpathEntry = Entry(enemizerPathFrame, textvariable=self.enemizerCLIpathVar)
enemizerCLIpathEntry.pack(side=LEFT, fill=X, expand=True) enemizerCLIpathEntry.pack(side=LEFT, fill=X, expand=True)
@@ -34,7 +34,7 @@ def enemizer_page(parent,working_dirs):
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.enemizerCLIpathVar.set(path) self.enemizerCLIpathVar.set(path)
working_dirs["enemizer.cli"] = path settings["enemizercli"] = path
enemizerCLIbrowseButton = Button(enemizerPathFrame, text='...', command=EnemizerSelectPath) enemizerCLIbrowseButton = Button(enemizerPathFrame, text='...', command=EnemizerSelectPath)
enemizerCLIbrowseButton.pack(side=LEFT) enemizerCLIbrowseButton.pack(side=LEFT)
enemizerPathFrame.pack(fill=X, expand=True) enemizerPathFrame.pack(fill=X, expand=True)
@@ -115,4 +115,4 @@ def enemizer_page(parent,working_dirs):
) )
self.enemizerWidgets[key].pack(anchor=E) self.enemizerWidgets[key].pack(anchor=E)
return self,working_dirs return self,settings

View File

@@ -2,7 +2,7 @@ import os
from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, E, W, LEFT, RIGHT, X from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, E, W, LEFT, RIGHT, X
import gui.widgets as widgets import gui.widgets as widgets
def generation_page(parent,working_dirs): def generation_page(parent,settings):
# Generation Setup # Generation Setup
self = ttk.Frame(parent) self = ttk.Frame(parent)
@@ -47,10 +47,10 @@ def generation_page(parent,working_dirs):
baseRomLabel = Label(baseRomFrame, text='Base Rom: ') baseRomLabel = Label(baseRomFrame, text='Base Rom: ')
self.romVar = StringVar() self.romVar = StringVar()
def saveBaseRom(caller,_,mode): def saveBaseRom(caller,_,mode):
working_dirs["rom.base"] = self.romVar.get() settings["rom"] = self.romVar.get()
self.romVar.trace_add("write",saveBaseRom) self.romVar.trace_add("write",saveBaseRom)
romEntry = Entry(baseRomFrame, textvariable=self.romVar) romEntry = Entry(baseRomFrame, textvariable=self.romVar)
self.romVar.set(working_dirs["rom.base"]) self.romVar.set(settings["rom"])
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("."))
@@ -62,4 +62,4 @@ def generation_page(parent,working_dirs):
romSelectButton.pack(side=LEFT) romSelectButton.pack(side=LEFT)
baseRomFrame.pack(fill=X, expand=True) baseRomFrame.pack(fill=X, expand=True)
return self,working_dirs return self,settings

View File

@@ -1,7 +1,7 @@
from tkinter import ttk, StringVar, Entry, Frame, Label, Spinbox, N, E, W, X, LEFT, RIGHT from tkinter import ttk, StringVar, Entry, Frame, Label, Spinbox, N, E, W, X, LEFT, RIGHT
import gui.widgets as widgets import gui.widgets as widgets
def multiworld_page(parent,working_dirs): def multiworld_page(parent,settings):
# Multiworld # Multiworld
self = ttk.Frame(parent) self = ttk.Frame(parent)
@@ -23,13 +23,13 @@ def multiworld_page(parent,working_dirs):
## List of Player Names ## List of Player Names
namesFrame = Frame(self) namesFrame = Frame(self)
namesLabel = Label(namesFrame, text='Player names') namesLabel = Label(namesFrame, text='Player names')
self.namesVar = StringVar(value=working_dirs["multi.names"]) self.namesVar = StringVar(value=settings["names"])
def saveMultiNames(caller,_,mode): def saveMultiNames(caller,_,mode):
working_dirs["multi.names"] = self.namesVar.get() settings["names"] = self.namesVar.get()
self.namesVar.trace_add("write",saveMultiNames) self.namesVar.trace_add("write",saveMultiNames)
namesEntry = Entry(namesFrame, textvariable=self.namesVar) namesEntry = Entry(namesFrame, textvariable=self.namesVar)
namesLabel.pack(side=LEFT) namesLabel.pack(side=LEFT)
namesEntry.pack(side=LEFT, fill=X, expand=True) namesEntry.pack(side=LEFT, fill=X, expand=True)
namesFrame.pack(anchor=N, fill=X, expand=True) namesFrame.pack(anchor=N, fill=X, expand=True)
return self,working_dirs return self,settings