Rework how the main form handles sprites
makes the presence of a Sprite Picker screen more obvious
This commit is contained in:
parent
911737b84f
commit
073ab728c1
37
Gui.py
37
Gui.py
|
@ -70,14 +70,27 @@ def guiMain(args=None):
|
||||||
romSelectButton.pack(side=LEFT)
|
romSelectButton.pack(side=LEFT)
|
||||||
|
|
||||||
spriteDialogFrame = Frame(fileDialogFrame)
|
spriteDialogFrame = Frame(fileDialogFrame)
|
||||||
baseSpriteLabel = Label(spriteDialogFrame, text='Link Sprite')
|
baseSpriteLabel = Label(spriteDialogFrame, text='Link Sprite:')
|
||||||
spriteVar = StringVar()
|
|
||||||
spriteEntry = Entry(spriteDialogFrame, textvariable=spriteVar)
|
spriteNameVar = StringVar()
|
||||||
|
sprite=None
|
||||||
|
def set_sprite(sprite_param):
|
||||||
|
nonlocal sprite
|
||||||
|
if sprite_param is None or not sprite_param.valid:
|
||||||
|
sprite = None
|
||||||
|
spriteNameVar.set('(default Link)')
|
||||||
|
else:
|
||||||
|
sprite = sprite_param
|
||||||
|
spriteNameVar.set(sprite.name)
|
||||||
|
|
||||||
|
set_sprite(None)
|
||||||
|
spriteNameVar.set('(default Link)')
|
||||||
|
spriteEntry = Label(spriteDialogFrame, textvariable=spriteNameVar)
|
||||||
|
|
||||||
def SpriteSelect():
|
def SpriteSelect():
|
||||||
SpriteSelector(mainWindow, spriteVar.set)
|
SpriteSelector(mainWindow, set_sprite)
|
||||||
|
|
||||||
spriteSelectButton = Button(spriteDialogFrame, text='Select Sprite', command=SpriteSelect)
|
spriteSelectButton = Button(spriteDialogFrame, text='Open Sprite Picker', command=SpriteSelect)
|
||||||
|
|
||||||
baseSpriteLabel.pack(side=LEFT)
|
baseSpriteLabel.pack(side=LEFT)
|
||||||
spriteEntry.pack(side=LEFT)
|
spriteEntry.pack(side=LEFT)
|
||||||
|
@ -207,7 +220,7 @@ def guiMain(args=None):
|
||||||
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
||||||
guiargs.rom = romVar.get()
|
guiargs.rom = romVar.get()
|
||||||
guiargs.jsonout = None
|
guiargs.jsonout = None
|
||||||
guiargs.sprite = spriteVar.get() if spriteVar.get() else None
|
guiargs.sprite = sprite
|
||||||
try:
|
try:
|
||||||
if guiargs.count is not None:
|
if guiargs.count is not None:
|
||||||
seed = guiargs.seed
|
seed = guiargs.seed
|
||||||
|
@ -275,7 +288,7 @@ def guiMain(args=None):
|
||||||
romVar.set(args.rom)
|
romVar.set(args.rom)
|
||||||
shuffleGanonVar.set(args.shuffleganon)
|
shuffleGanonVar.set(args.shuffleganon)
|
||||||
if args.sprite is not None:
|
if args.sprite is not None:
|
||||||
spriteVar.set(args.sprite)
|
set_sprite(Sprite(args.sprite))
|
||||||
|
|
||||||
mainWindow.mainloop()
|
mainWindow.mainloop()
|
||||||
|
|
||||||
|
@ -323,7 +336,7 @@ class SpriteSelector(object):
|
||||||
sprite = Sprite(file)
|
sprite = Sprite(file)
|
||||||
image = get_image_for_sprite(sprite)
|
image = get_image_for_sprite(sprite)
|
||||||
if image is None: continue
|
if image is None: continue
|
||||||
button = Button(frame, image=image, command=lambda file=file: self.select_sprite(file))
|
button = Button(frame, image=image, command=lambda sprite=sprite: self.select_sprite(sprite))
|
||||||
ToolTips.register(button, sprite.name + ("\nBy: %s" % sprite.author_name if sprite.author_name is not None else ""))
|
ToolTips.register(button, sprite.name + ("\nBy: %s" % sprite.author_name if sprite.author_name is not None else ""))
|
||||||
button.image = image
|
button.image = image
|
||||||
button.grid(row=i // 16, column=i % 16)
|
button.grid(row=i // 16, column=i % 16)
|
||||||
|
@ -357,11 +370,15 @@ class SpriteSelector(object):
|
||||||
|
|
||||||
def browse_for_sprite(self):
|
def browse_for_sprite(self):
|
||||||
sprite = filedialog.askopenfilename()
|
sprite = filedialog.askopenfilename()
|
||||||
self.callback(sprite)
|
try:
|
||||||
|
self.callback(Sprite(sprite))
|
||||||
|
except:
|
||||||
|
self.callback(None)
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
|
|
||||||
def use_default_sprite(self):
|
def use_default_sprite(self):
|
||||||
self.callback("")
|
self.callback(None)
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def select_sprite(self, spritename):
|
def select_sprite(self, spritename):
|
||||||
|
|
3
Main.py
3
Main.py
|
@ -91,6 +91,9 @@ def main(args, seed=None):
|
||||||
logger.info('Patching ROM.')
|
logger.info('Patching ROM.')
|
||||||
|
|
||||||
if args.sprite is not None:
|
if args.sprite is not None:
|
||||||
|
if isinstance(args.sprite,Sprite):
|
||||||
|
sprite = args.sprite
|
||||||
|
else:
|
||||||
sprite = Sprite(args.sprite)
|
sprite = Sprite(args.sprite)
|
||||||
else:
|
else:
|
||||||
sprite = None
|
sprite = None
|
||||||
|
|
Loading…
Reference in New Issue