Move GUI to Source folder to avoid conflicts
This commit is contained in:
1
source/gui/randomize/__init__.py
Normal file
1
source/gui/randomize/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# do nothing, just exist to make "source.gui.randomize" package
|
||||
38
source/gui/randomize/dungeon.py
Normal file
38
source/gui/randomize/dungeon.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from tkinter import ttk, IntVar, StringVar, Checkbutton, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def dungeon_page(parent):
|
||||
# Dungeon Shuffle
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Dungeon Shuffle options
|
||||
self.widgets = {}
|
||||
|
||||
# Dungeon Shuffle option sections
|
||||
self.frames = {}
|
||||
self.frames["keysanity"] = Frame(self)
|
||||
self.frames["keysanity"].pack(anchor=W)
|
||||
|
||||
## Dungeon Item Shuffle
|
||||
mscbLabel = Label(self.frames["keysanity"], text="Shuffle: ")
|
||||
mscbLabel.pack(side=LEFT)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","dungeon","keysanity.json")) as keysanityItems:
|
||||
myDict = json.load(keysanityItems)
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self.frames["keysanity"])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
self.widgets[key].pack(side=LEFT)
|
||||
|
||||
self.frames["widgets"] = Frame(self)
|
||||
self.frames["widgets"].pack(anchor=W)
|
||||
with open(os.path.join("resources","app","gui","randomize","dungeon","widgets.json")) as dungeonWidgets:
|
||||
myDict = json.load(dungeonWidgets)
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self.frames["widgets"])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
self.widgets[key].pack(anchor=W)
|
||||
|
||||
return self
|
||||
63
source/gui/randomize/enemizer.py
Normal file
63
source/gui/randomize/enemizer.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import os
|
||||
from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, LabelFrame, OptionMenu, N, E, W, LEFT, RIGHT, BOTTOM, X
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
import webbrowser
|
||||
|
||||
def enemizer_page(parent,settings):
|
||||
def open_enemizer_download(_evt):
|
||||
webbrowser.open("https://github.com/Bonta0/Enemizer/releases")
|
||||
|
||||
# Enemizer
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Enemizer options
|
||||
self.widgets = {}
|
||||
|
||||
# Enemizer option sections
|
||||
self.frames = {}
|
||||
|
||||
self.frames["checkboxes"] = Frame(self)
|
||||
self.frames["checkboxes"].pack(anchor=W)
|
||||
|
||||
self.frames["selectOptionsFrame"] = Frame(self)
|
||||
self.frames["leftEnemizerFrame"] = Frame(self.frames["selectOptionsFrame"])
|
||||
self.frames["rightEnemizerFrame"] = Frame(self.frames["selectOptionsFrame"])
|
||||
self.frames["bottomEnemizerFrame"] = Frame(self)
|
||||
self.frames["selectOptionsFrame"].pack(fill=X)
|
||||
self.frames["leftEnemizerFrame"].pack(side=LEFT)
|
||||
self.frames["rightEnemizerFrame"].pack(side=RIGHT)
|
||||
self.frames["bottomEnemizerFrame"].pack(fill=X)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","enemizer","widgets.json")) as widgetDefns:
|
||||
myDict = json.load(widgetDefns)
|
||||
for framename,theseWidgets in myDict.items():
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, theseWidgets, self.frames[framename])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
packAttrs = {"anchor":E}
|
||||
if self.widgets[key].type == "checkbox":
|
||||
packAttrs["anchor"] = W
|
||||
self.widgets[key].pack(packAttrs)
|
||||
|
||||
## Enemizer CLI Path
|
||||
enemizerPathFrame = Frame(self.frames["bottomEnemizerFrame"])
|
||||
enemizerCLIlabel = Label(enemizerPathFrame, text="EnemizerCLI path: ")
|
||||
enemizerCLIlabel.pack(side=LEFT)
|
||||
enemizerURL = Label(enemizerPathFrame, text="(get online)", fg="blue", cursor="hand2")
|
||||
enemizerURL.pack(side=LEFT)
|
||||
enemizerURL.bind("<Button-1>", open_enemizer_download)
|
||||
self.enemizerCLIpathVar = StringVar(value=settings["enemizercli"])
|
||||
enemizerCLIpathEntry = Entry(enemizerPathFrame, textvariable=self.enemizerCLIpathVar)
|
||||
enemizerCLIpathEntry.pack(side=LEFT, fill=X, expand=True)
|
||||
def EnemizerSelectPath():
|
||||
path = filedialog.askopenfilename(filetypes=[("EnemizerCLI executable", "*EnemizerCLI*")], initialdir=os.path.join("."))
|
||||
if path:
|
||||
self.enemizerCLIpathVar.set(path)
|
||||
settings["enemizercli"] = path
|
||||
enemizerCLIbrowseButton = Button(enemizerPathFrame, text='...', command=EnemizerSelectPath)
|
||||
enemizerCLIbrowseButton.pack(side=LEFT)
|
||||
enemizerPathFrame.pack(fill=X)
|
||||
|
||||
return self,settings
|
||||
29
source/gui/randomize/entrando.py
Normal file
29
source/gui/randomize/entrando.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from tkinter import ttk, IntVar, StringVar, Checkbutton, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def entrando_page(parent):
|
||||
# Entrance Randomizer
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Entrance Randomizer options
|
||||
self.widgets = {}
|
||||
|
||||
# Entrance Randomizer option sections
|
||||
self.frames = {}
|
||||
self.frames["widgets"] = Frame(self)
|
||||
self.frames["widgets"].pack(anchor=W)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","entrando","widgets.json")) as widgetDefns:
|
||||
myDict = json.load(widgetDefns)
|
||||
for framename,theseWidgets in myDict.items():
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, theseWidgets, self.frames[framename])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
packAttrs = {"anchor":E}
|
||||
if self.widgets[key].type == "checkbox":
|
||||
packAttrs["anchor"] = W
|
||||
self.widgets[key].pack(packAttrs)
|
||||
|
||||
return self
|
||||
78
source/gui/randomize/gameoptions.py
Normal file
78
source/gui/randomize/gameoptions.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from tkinter import ttk, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
||||
from functools import partial
|
||||
import source.classes.SpriteSelector as spriteSelector
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def gameoptions_page(top, parent):
|
||||
# Game Options
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Game Options options
|
||||
self.widgets = {}
|
||||
|
||||
# Game Options option sections
|
||||
self.frames = {}
|
||||
self.frames["checkboxes"] = Frame(self)
|
||||
self.frames["checkboxes"].pack(anchor=W)
|
||||
|
||||
self.frames["leftRomOptionsFrame"] = Frame(self)
|
||||
self.frames["rightRomOptionsFrame"] = Frame(self)
|
||||
self.frames["leftRomOptionsFrame"].pack(side=LEFT)
|
||||
self.frames["rightRomOptionsFrame"].pack(side=RIGHT)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","gameoptions","widgets.json")) as widgetDefns:
|
||||
myDict = json.load(widgetDefns)
|
||||
for framename,theseWidgets in myDict.items():
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, theseWidgets, self.frames[framename])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
packAttrs = {"anchor":E}
|
||||
if self.widgets[key].type == "checkbox":
|
||||
packAttrs["anchor"] = W
|
||||
self.widgets[key].pack(packAttrs)
|
||||
|
||||
## Sprite selection
|
||||
spriteDialogFrame = Frame(self.frames["leftRomOptionsFrame"])
|
||||
baseSpriteLabel = Label(spriteDialogFrame, text='Sprite:')
|
||||
|
||||
self.widgets["sprite"] = {}
|
||||
self.widgets["sprite"]["spriteObject"] = None
|
||||
self.widgets["sprite"]["spriteNameVar"] = StringVar()
|
||||
|
||||
self.widgets["sprite"]["spriteNameVar"].set('(unchanged)')
|
||||
spriteEntry = Label(spriteDialogFrame, textvariable=self.widgets["sprite"]["spriteNameVar"])
|
||||
|
||||
def sprite_setter(spriteObject):
|
||||
self.widgets["sprite"]["spriteObject"] = spriteObject
|
||||
|
||||
def sprite_select():
|
||||
spriteSelector.SpriteSelector(parent, partial(set_sprite, spriteSetter=sprite_setter,
|
||||
spriteNameVar=self.widgets["sprite"]["spriteNameVar"],
|
||||
randomSpriteVar=top.randomSprite))
|
||||
|
||||
spriteSelectButton = Button(spriteDialogFrame, text='...', command=sprite_select)
|
||||
|
||||
baseSpriteLabel.pack(side=LEFT)
|
||||
spriteEntry.pack(side=LEFT)
|
||||
spriteSelectButton.pack(side=LEFT)
|
||||
spriteDialogFrame.pack(anchor=E)
|
||||
|
||||
return self
|
||||
|
||||
|
||||
def set_sprite(sprite_param, random_sprite=False, spriteSetter=None, spriteNameVar=None, randomSpriteVar=None):
|
||||
if sprite_param is None or not sprite_param.valid:
|
||||
if spriteSetter:
|
||||
spriteSetter(None)
|
||||
if spriteNameVar is not None:
|
||||
spriteNameVar.set('(unchanged)')
|
||||
else:
|
||||
if spriteSetter:
|
||||
spriteSetter(sprite_param)
|
||||
if spriteNameVar is not None:
|
||||
spriteNameVar.set(sprite_param.name)
|
||||
if randomSpriteVar:
|
||||
randomSpriteVar.set(random_sprite)
|
||||
|
||||
45
source/gui/randomize/generation.py
Normal file
45
source/gui/randomize/generation.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
from tkinter import ttk, filedialog, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, E, W, LEFT, RIGHT, X
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def generation_page(parent,settings):
|
||||
# Generation Setup
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Generation Setup options
|
||||
self.widgets = {}
|
||||
|
||||
# Generation Setup option sections
|
||||
self.frames = {}
|
||||
self.frames["checkboxes"] = Frame(self)
|
||||
self.frames["checkboxes"].pack(anchor=W)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","generation","checkboxes.json")) as checkboxes:
|
||||
myDict = json.load(checkboxes)
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self.frames["checkboxes"])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
self.widgets[key].pack(anchor=W)
|
||||
|
||||
self.frames["baserom"] = Frame(self)
|
||||
self.frames["baserom"].pack(anchor=W, fill=X)
|
||||
## Locate base ROM
|
||||
baseRomFrame = Frame(self.frames["baserom"])
|
||||
baseRomLabel = Label(baseRomFrame, text='Base Rom: ')
|
||||
self.romVar = StringVar()
|
||||
romEntry = Entry(baseRomFrame, textvariable=self.romVar)
|
||||
self.romVar.set(settings["rom"])
|
||||
|
||||
def RomSelect():
|
||||
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")], initialdir=os.path.join("."))
|
||||
self.romVar.set(rom)
|
||||
romSelectButton = Button(baseRomFrame, text='Select Rom', command=RomSelect)
|
||||
|
||||
baseRomLabel.pack(side=LEFT)
|
||||
romEntry.pack(side=LEFT, fill=X, expand=True)
|
||||
romSelectButton.pack(side=LEFT)
|
||||
baseRomFrame.pack(fill=X)
|
||||
|
||||
return self,settings
|
||||
35
source/gui/randomize/item.py
Normal file
35
source/gui/randomize/item.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from tkinter import ttk, IntVar, StringVar, Checkbutton, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def item_page(parent):
|
||||
# Item Randomizer
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Item Randomizer options
|
||||
self.widgets = {}
|
||||
|
||||
# Item Randomizer option sections
|
||||
self.frames = {}
|
||||
|
||||
self.frames["checkboxes"] = Frame(self)
|
||||
self.frames["checkboxes"].pack(anchor=W)
|
||||
|
||||
self.frames["leftItemFrame"] = Frame(self)
|
||||
self.frames["rightItemFrame"] = Frame(self)
|
||||
self.frames["leftItemFrame"].pack(side=LEFT)
|
||||
self.frames["rightItemFrame"].pack(side=RIGHT)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","item","widgets.json")) as widgetDefns:
|
||||
myDict = json.load(widgetDefns)
|
||||
for framename,theseWidgets in myDict.items():
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, theseWidgets, self.frames[framename])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
packAttrs = {"anchor":E}
|
||||
if self.widgets[key].type == "checkbox":
|
||||
packAttrs["anchor"] = W
|
||||
self.widgets[key].pack(packAttrs)
|
||||
|
||||
return self
|
||||
38
source/gui/randomize/multiworld.py
Normal file
38
source/gui/randomize/multiworld.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from tkinter import ttk, StringVar, Entry, Frame, Label, Spinbox, N, E, W, X, LEFT, RIGHT
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def multiworld_page(parent,settings):
|
||||
# Multiworld
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Multiworld options
|
||||
self.widgets = {}
|
||||
|
||||
# Multiworld option sections
|
||||
self.frames = {}
|
||||
self.frames["widgets"] = Frame(self)
|
||||
self.frames["widgets"].pack(anchor=W, fill=X)
|
||||
|
||||
with open(os.path.join("resources","app","gui","randomize","multiworld","widgets.json")) as multiworldItems:
|
||||
myDict = json.load(multiworldItems)
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self.frames["widgets"])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
self.widgets[key].pack(side=LEFT, anchor=N)
|
||||
|
||||
## List of Player Names
|
||||
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"])
|
||||
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)
|
||||
|
||||
return self,settings
|
||||
Reference in New Issue
Block a user