diff --git a/Gui.py b/Gui.py index 3218c9aa..42dfbfd0 100755 --- a/Gui.py +++ b/Gui.py @@ -106,13 +106,13 @@ def guiMain(args=None): nonlocal sprite if sprite_param is None or not sprite_param.valid: sprite = None - spriteNameVar.set('(default)') + spriteNameVar.set('(unchanged)') else: sprite = sprite_param spriteNameVar.set(sprite.name) set_sprite(None) - spriteNameVar.set('(default)') + spriteNameVar.set('(unchanged)') spriteEntry = Label(spriteDialogFrame, textvariable=spriteNameVar) def SpriteSelect(): @@ -310,7 +310,10 @@ def guiMain(args=None): baseSpriteLabel2 = Label(spriteDialogFrame2, text='Link Sprite') spriteEntry2 = Label(spriteDialogFrame2, textvariable=spriteNameVar) - spriteSelectButton2 = Button(spriteDialogFrame2, text='Select Sprite', command=SpriteSelect) + def SpriteSelectAdjuster(): + SpriteSelector(mainWindow, set_sprite, adjuster=True) + + spriteSelectButton2 = Button(spriteDialogFrame2, text='Select Sprite', command=SpriteSelectAdjuster) baseSpriteLabel2.pack(side=LEFT) spriteEntry2.pack(side=LEFT) @@ -389,12 +392,13 @@ def guiMain(args=None): mainWindow.mainloop() class SpriteSelector(object): - def __init__(self, parent, callback): + def __init__(self, parent, callback, adjuster=False): if is_bundled(): self.deploy_icons() self.parent = parent self.window = Toplevel(parent) self.callback = callback + self.adjuster = adjuster self.window.wm_title("TAKE ANY ONE YOU WANT") self.window['padx'] = 5 @@ -412,7 +416,7 @@ class SpriteSelector(object): title_link.pack(side=LEFT) title_link.bind("", open_unofficial_sprite_dir) - self.icon_section(official_frametitle, self.official_sprite_dir+'/*', 'Official Sprites not found. Click "Update Official Sprites" to download them.') + self.icon_section(official_frametitle, self.official_sprite_dir+'/*', 'Official sprites not found. Click "Update official sprites" to download them.') self.icon_section(unofficial_frametitle, self.unofficial_sprite_dir+'/*', 'Put sprites in the unofficial sprites folder (see open link above) to have them appear here.') frame = Frame(self.window) @@ -421,11 +425,15 @@ class SpriteSelector(object): button = Button(frame, text="Browse for file...", command=self.browse_for_sprite) button.pack(side=RIGHT, padx=(5, 0)) - button = Button(frame, text="Update Official Sprites", command=self.update_official_sprites) + button = Button(frame, text="Update official sprites", command=self.update_official_sprites) button.pack(side=RIGHT, padx=(5, 0)) - button = Button(frame, text="Use Default Sprite", command=self.use_default_sprite) - button.pack(side=LEFT) + button = Button(frame, text="Use default Link sprite", command=self.use_default_link_sprite) + button.pack(side=LEFT, padx=(0, 5)) + + if adjuster: + button = Button(frame, text="Use current sprite from rom", command=self.use_default_sprite) + button.pack(side=LEFT, padx=(0, 5)) set_icon(self.window) self.window.focus() @@ -465,7 +473,7 @@ class SpriteSelector(object): messagebox.showinfo("Sprite Updater", resultmessage) else: messagebox.showerror("Sprite Updater", resultmessage) - SpriteSelector(self.parent, self.callback) + SpriteSelector(self.parent, self.callback, self.adjuster) try: task.update_status("Downloading official sprites list") @@ -536,6 +544,10 @@ class SpriteSelector(object): self.callback(None) self.window.destroy() + def use_default_link_sprite(self): + self.callback(Sprite.default_link_sprite()) + self.window.destroy() + def select_sprite(self, spritename): self.callback(spritename) self.window.destroy() diff --git a/Rom.py b/Rom.py index 13616bc8..c682f06e 100644 --- a/Rom.py +++ b/Rom.py @@ -156,6 +156,10 @@ class Sprite(object): else: self.valid = False + @staticmethod + def default_link_sprite(): + return Sprite(local_path('data/default.zspr')) + def decode8(self, pos): arr = [[0 for _ in range(8)] for _ in range(8)] for y in range(8): diff --git a/data/default.zspr b/data/default.zspr new file mode 100644 index 00000000..fa0c9836 Binary files /dev/null and b/data/default.zspr differ