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)
|
||||
|
||||
spriteDialogFrame = Frame(fileDialogFrame)
|
||||
baseSpriteLabel = Label(spriteDialogFrame, text='Link Sprite')
|
||||
spriteVar = StringVar()
|
||||
spriteEntry = Entry(spriteDialogFrame, textvariable=spriteVar)
|
||||
baseSpriteLabel = Label(spriteDialogFrame, text='Link Sprite:')
|
||||
|
||||
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():
|
||||
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)
|
||||
spriteEntry.pack(side=LEFT)
|
||||
|
@ -207,7 +220,7 @@ def guiMain(args=None):
|
|||
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
||||
guiargs.rom = romVar.get()
|
||||
guiargs.jsonout = None
|
||||
guiargs.sprite = spriteVar.get() if spriteVar.get() else None
|
||||
guiargs.sprite = sprite
|
||||
try:
|
||||
if guiargs.count is not None:
|
||||
seed = guiargs.seed
|
||||
|
@ -275,7 +288,7 @@ def guiMain(args=None):
|
|||
romVar.set(args.rom)
|
||||
shuffleGanonVar.set(args.shuffleganon)
|
||||
if args.sprite is not None:
|
||||
spriteVar.set(args.sprite)
|
||||
set_sprite(Sprite(args.sprite))
|
||||
|
||||
mainWindow.mainloop()
|
||||
|
||||
|
@ -323,7 +336,7 @@ class SpriteSelector(object):
|
|||
sprite = Sprite(file)
|
||||
image = get_image_for_sprite(sprite)
|
||||
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 ""))
|
||||
button.image = image
|
||||
button.grid(row=i // 16, column=i % 16)
|
||||
|
@ -357,11 +370,15 @@ class SpriteSelector(object):
|
|||
|
||||
def browse_for_sprite(self):
|
||||
sprite = filedialog.askopenfilename()
|
||||
self.callback(sprite)
|
||||
try:
|
||||
self.callback(Sprite(sprite))
|
||||
except:
|
||||
self.callback(None)
|
||||
self.window.destroy()
|
||||
|
||||
|
||||
def use_default_sprite(self):
|
||||
self.callback("")
|
||||
self.callback(None)
|
||||
self.window.destroy()
|
||||
|
||||
def select_sprite(self, spritename):
|
||||
|
|
Loading…
Reference in New Issue