Fix Selectors

This commit is contained in:
Mike A. Trethewey
2021-02-23 01:38:10 -08:00
parent 37b778c71e
commit 33d05c1b1f
3 changed files with 142 additions and 55 deletions

View File

@@ -1,6 +1,7 @@
from tkinter import ttk, filedialog, messagebox, StringVar, Button, Entry, Frame, Label, E, W, LEFT, RIGHT, X, BOTTOM
from AdjusterMain import adjust
from argparse import Namespace
from source.classes.Empty import Empty
from source.classes.SpriteSelector import SpriteSelector
import source.gui.widgets as widgets
import json
@@ -44,49 +45,101 @@ def adjust_page(top, parent, settings):
# Sprite Selection
# This one's more-complicated, build it and stuff it
self.spriteNameVar2 = StringVar()
spriteDialogFrame2 = Frame(self.frames["leftAdjustFrame"])
baseSpriteLabel2 = Label(spriteDialogFrame2, text='Sprite:')
spriteEntry2 = Label(spriteDialogFrame2, textvariable=self.spriteNameVar2)
# widget ID
widget = "sprite"
# Empty object
self.widgets[widget] = Empty()
# pieces
self.widgets[widget].pieces = {}
# frame
self.widgets[widget].pieces["frame"] = Frame(self.frames["leftAdjustFrame"])
# frame: label
self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Sprite: ')
# spritename: label
self.widgets[widget].pieces["frame"].spritename = Label(self.widgets[widget].pieces["frame"], text='(unchanged)')
# storage var
self.widgets[widget].storageVar = StringVar()
self.widgets[widget].storageVar.set(settings["sprite"])
# store sprite
self.sprite = None
def set_sprite(sprite_param, random_sprite=False):
top.randomSprite.set(random_sprite)
widget = "sprite"
sprite = {}
sprite["object"] = sprite_param
sprite["label"] = {
"show": "(unchanged)",
"store": "(unchanged)"
}
if sprite_param is None or not sprite_param.valid:
self.sprite = None
self.spriteNameVar2.set('(unchanged)')
else:
self.sprite = sprite_param
self.spriteNameVar2.set(self.sprite.name)
top.randomSprite.set(random_sprite)
sprite["label"]["store"] = sprite_param.name
sprite["label"]["show"] = sprite_param.name if not random_sprite else "(random)"
self.widgets[widget].storageVar.set(sprite["label"]["store"])
self.widgets[widget].pieces["frame"].spritename.config(text=sprite["label"]["show"])
print(top.randomSprite.get(),sprite["label"])
def SpriteSelectAdjuster():
SpriteSelector(parent, set_sprite, adjuster=True)
spriteSelectButton2 = Button(spriteDialogFrame2, text='...', command=SpriteSelectAdjuster)
# dialog button
self.widgets[widget].pieces["button"] = Button(self.widgets[widget].pieces["frame"], text='...', command=SpriteSelectAdjuster)
baseSpriteLabel2.pack(side=LEFT)
spriteEntry2.pack(side=LEFT)
spriteSelectButton2.pack(side=LEFT)
spriteDialogFrame2.pack(anchor=E)
# frame label: pack
self.widgets[widget].pieces["frame"].label.pack(side=LEFT)
# spritename: pack
self.widgets[widget].pieces["frame"].spritename.pack(side=LEFT)
# button: pack
self.widgets[widget].pieces["button"].pack(side=LEFT)
# frame: pack
self.widgets[widget].pieces["frame"].pack(anchor=E)
self.frames["adjustrom"] = Frame(self.frames["bottomAdjustFrame"])
self.frames["adjustrom"].pack(anchor=W, fill=X)
# Path to game file to Adjust
# This one's more-complicated, build it and stuff it
adjustRomFrame = Frame(self.frames["bottomAdjustFrame"])
adjustRomLabel = Label(adjustRomFrame, text='Rom to adjust: ')
self.romVar2 = StringVar(value=settings["rom"])
romEntry2 = Entry(adjustRomFrame, textvariable=self.romVar2)
# widget ID
widget = "adjustrom"
def RomSelect2():
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")])
if rom:
settings["rom"] = rom
self.romVar2.set(rom)
romSelectButton2 = Button(adjustRomFrame, text='Select Rom', command=RomSelect2)
# Empty object
self.widgets[widget] = Empty()
# pieces
self.widgets[widget].pieces = {}
adjustRomLabel.pack(side=LEFT)
romEntry2.pack(side=LEFT, fill=X, expand=True)
romSelectButton2.pack(side=LEFT)
adjustRomFrame.pack(fill=X)
# frame
self.widgets[widget].pieces["frame"] = Frame(self.frames["adjustrom"])
# frame: label
self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Rom to Adjust: ')
# 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"])
# FIXME: Translate these
def RomSelect():
widget = "adjustrom"
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)
# These are the options to Adjust
def adjustRom():

View File

@@ -1,6 +1,7 @@
from tkinter import ttk, StringVar, Button, Entry, Frame, Label, E, W, LEFT, RIGHT
from functools import partial
import source.classes.SpriteSelector as spriteSelector
from source.classes.Empty import Empty
from source.classes.SpriteSelector import SpriteSelector
import source.gui.widgets as widgets
import json
import os
@@ -39,46 +40,79 @@ def gameoptions_page(top, parent):
packAttrs["anchor"] = W
self.widgets[key].pack(packAttrs)
## Sprite selection
# Sprite Selection
# This one's more-complicated, build it and stuff it
spriteDialogFrame = Frame(self.frames["leftRomOptionsFrame"])
baseSpriteLabel = Label(spriteDialogFrame, text='Sprite:')
# widget ID
widget = "sprite"
self.widgets["sprite"] = {}
self.widgets["sprite"]["spriteObject"] = None
self.widgets["sprite"]["spriteNameVar"] = StringVar()
# Empty object
self.widgets[widget] = Empty()
# pieces
self.widgets[widget].pieces = {}
self.widgets["sprite"]["spriteNameVar"].set('(unchanged)')
spriteEntry = Label(spriteDialogFrame, textvariable=self.widgets["sprite"]["spriteNameVar"])
# frame
self.widgets[widget].pieces["frame"] = Frame(self.frames["leftRomOptionsFrame"])
# frame: label
self.widgets[widget].pieces["frame"].label = Label(self.widgets[widget].pieces["frame"], text='Sprite: ')
# spritename: label
self.widgets[widget].pieces["frame"].spritename = Label(self.widgets[widget].pieces["frame"], text='(unchanged)')
# storage var
self.widgets[widget].storageVar = StringVar()
def sprite_setter(spriteObject):
self.widgets["sprite"]["spriteObject"] = spriteObject
# store sprite
self.sprite = None
def sprite_select():
spriteSelector.SpriteSelector(parent, partial(set_sprite, spriteSetter=sprite_setter,
spriteNameVar=self.widgets["sprite"]["spriteNameVar"],
randomSpriteVar=top.randomSprite))
def SpriteSetter(spriteObject):
sprite = {}
sprite["object"] = spriteObject
sprite["label"] = {
"show": "(unchanged)",
"store": "(unchanged)"
}
sprite["label"]["store"] = sprite["object"].name
sprite["label"]["show"] = sprite["object"].name if not top.randomSprite.get() else "(random)"
spriteSelectButton = Button(spriteDialogFrame, text='...', command=sprite_select)
print(top.randomSprite.get(),sprite["label"])
baseSpriteLabel.pack(side=LEFT)
spriteEntry.pack(side=LEFT)
spriteSelectButton.pack(side=LEFT)
spriteDialogFrame.pack(anchor=E)
self.sprite = sprite["object"]
self.widgets[widget].pieces["frame"].spritename.config(text=sprite["label"]["show"])
def SpriteSelect():
SpriteSelector(parent, partial(set_sprite, spriteSetter=SpriteSetter,spriteNameVar=self.widgets[widget].storageVar,randomSpriteVar=top.randomSprite))
# dialog button
self.widgets[widget].pieces["button"] = Button(self.widgets[widget].pieces["frame"], text='...', command=SpriteSelect)
# frame label: pack
self.widgets[widget].pieces["frame"].label.pack(side=LEFT)
# spritename: pack
self.widgets[widget].pieces["frame"].spritename.pack(side=LEFT)
# button: pack
self.widgets[widget].pieces["button"].pack(side=LEFT)
# frame: pack
self.widgets[widget].pieces["frame"].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 randomSpriteVar:
randomSpriteVar.set(random_sprite)
widget = "sprite"
sprite = {}
sprite["object"] = sprite_param
sprite["label"] = {
"show": "(unchanged)",
"store": "(unchanged)"
}
if sprite["object"] is None or not sprite["object"].valid:
if spriteSetter:
spriteSetter(None)
if spriteNameVar is not None:
spriteNameVar.set('(unchanged)')
spriteNameVar.set(sprite["store"])
else:
if spriteSetter:
spriteSetter(sprite_param)
spriteSetter(sprite["object"])
if spriteNameVar is not None:
spriteNameVar.set(sprite_param.name)
if randomSpriteVar:
randomSpriteVar.set(random_sprite)
spriteNameVar.set(sprite["label"]["store"])
sprite["label"]["store"] = sprite["object"].name
sprite["label"]["show"] = sprite["object"].name if not random_sprite else "(random)"

View File

@@ -65,6 +65,7 @@ def generation_page(parent,settings):
# FIXME: Translate these
def RomSelect():
widget = "rom"
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")], initialdir=os.path.join("."))
self.widgets[widget].storageVar.set(rom)
# dialog button
@@ -94,7 +95,6 @@ def generation_page(parent,settings):
self.frames["diags"].pack()
self.widgets[widget].pieces["frame"] = Frame(self.frames["diags"])
def diags():
# Debugging purposes
dims = {
@@ -106,7 +106,7 @@ def generation_page(parent,settings):
"width": 120,
"height": 50
}
}
}
diag = Tk()
diag.title("Door Shuffle " + __version__)
diag.geometry(str(dims["window"]["width"]) + 'x' + str(dims["window"]["height"]))