Improved Retro button in GUI

This commit is contained in:
codemann8
2025-04-16 01:24:59 -05:00
parent 63f39c5c05
commit 267552bfee
4 changed files with 47 additions and 14 deletions

View File

@@ -294,7 +294,7 @@
"randomizer.item.worldstate.open": "Open", "randomizer.item.worldstate.open": "Open",
"randomizer.item.worldstate.inverted": "Inverted", "randomizer.item.worldstate.inverted": "Inverted",
"randomizer.item.worldstate.retro": "Retro", "randomizer.item.worldstate.retro": "Retro",
"randomizer.item.retro": "Enable Retro", "randomizer.item.retro": "Retro",
"randomizer.item.logiclevel": "Logic Level", "randomizer.item.logiclevel": "Logic Level",
"randomizer.item.logiclevel.noglitches": "No Glitches", "randomizer.item.logiclevel.noglitches": "No Glitches",

View File

@@ -6,7 +6,7 @@
"collection_rate": {"type": "checkbox"}, "collection_rate": {"type": "checkbox"},
"race": { "type": "checkbox" } "race": { "type": "checkbox" }
}, },
"leftItemFrame": { "worldstateFrame": {
"worldstate": { "worldstate": {
"type": "selectbox", "type": "selectbox",
"default": "open", "default": "open",
@@ -14,8 +14,13 @@
"standard", "standard",
"open", "open",
"inverted" "inverted"
] ],
"config": {
"width": 13
}
}
}, },
"leftItemFrame": {
"logiclevel": { "logiclevel": {
"type": "selectbox", "type": "selectbox",
"options": [ "options": [
@@ -64,12 +69,6 @@
} }
}, },
"rightItemFrame": { "rightItemFrame": {
"retro": {
"type": "button",
"config": {
"command": "retro"
}
},
"sortingalgo": { "sortingalgo": {
"type": "selectbox", "type": "selectbox",
"default": "balanced", "default": "balanced",

View File

@@ -272,7 +272,7 @@ def create_guiargs(parent):
arg = options[mainpage][subpage][widget] if subpage != "" else options[mainpage][widget] arg = options[mainpage][subpage][widget] if subpage != "" else options[mainpage][widget]
page = parent.pages[mainpage].pages[subpage] if subpage != "" else parent.pages[mainpage] page = parent.pages[mainpage].pages[subpage] if subpage != "" else parent.pages[mainpage]
pagewidgets = page.content.customWidgets if mainpage == "custom" else page.content.startingWidgets if mainpage == "startinventory" else page.widgets pagewidgets = page.content.customWidgets if mainpage == "custom" else page.content.startingWidgets if mainpage == "startinventory" else page.widgets
if hasattr(pagewidgets[widget], 'storageVar'): if widget in pagewidgets and hasattr(pagewidgets[widget], 'storageVar'):
setattr(guiargs, arg, pagewidgets[widget].storageVar.get()) setattr(guiargs, arg, pagewidgets[widget].storageVar.get())
# Get Multiworld Worlds count # Get Multiworld Worlds count

View File

@@ -1,5 +1,6 @@
from tkinter import ttk, font, Frame, E, W, NW, TOP, LEFT, RIGHT, Y, Label from tkinter import messagebox, ttk, font, Button, Frame, E, W, TOP, LEFT, RIGHT, X, Y, Label
import source.gui.widgets as widgets import source.gui.widgets as widgets
from source.classes.Empty import Empty
import json import json
import os import os
@@ -28,6 +29,16 @@ def item_page(parent):
self.frames["leftItemFrame"] = Frame(self.frames["mainFrame"]) self.frames["leftItemFrame"] = Frame(self.frames["mainFrame"])
self.frames["leftItemFrame"].pack(side=LEFT) self.frames["leftItemFrame"].pack(side=LEFT)
self.frames["worldstateFrame"] = Frame(self.frames["leftItemFrame"])
self.frames["worldstateFrame"].pack(side=TOP, fill=X)
## Retro Button
widget = Empty()
widget.pieces = {}
widget.type = "button"
widget.pieces["button"] = Button(self.frames["worldstateFrame"], text="Retro", command=lambda: retro(widget))
widget.pieces["button"].pack(side=RIGHT, padx=(1, 2))
self.frames["rightItemFrame"] = Frame(self.frames["mainFrame"]) self.frames["rightItemFrame"] = Frame(self.frames["mainFrame"])
self.frames["rightItemFrame"].pack(side=RIGHT) self.frames["rightItemFrame"].pack(side=RIGHT)
@@ -65,8 +76,6 @@ def item_page(parent):
for key in dictWidgets: for key in dictWidgets:
self.widgets[key] = dictWidgets[key] self.widgets[key] = dictWidgets[key]
packAttrs = {"anchor":E} packAttrs = {"anchor":E}
if key == "retro":
packAttrs["side"] = RIGHT
if self.widgets[key].type == "checkbox" or framename.startswith("leftPoolFrame"): if self.widgets[key].type == "checkbox" or framename.startswith("leftPoolFrame"):
packAttrs["anchor"] = W packAttrs["anchor"] = W
if framename == "checkboxes": if framename == "checkboxes":
@@ -75,7 +84,32 @@ def item_page(parent):
elif framename == "leftPoolHeader": elif framename == "leftPoolHeader":
packAttrs["side"] = LEFT packAttrs["side"] = LEFT
packAttrs["padx"] = (0, 20) packAttrs["padx"] = (0, 20)
elif framename == "rightItemFrame" and self.widgets[key].type == "checkbox":
packAttrs["side"] = LEFT
packAttrs["padx"] = (118, 0)
packAttrs = widgets.add_padding_from_config(packAttrs, theseWidgets[key]) packAttrs = widgets.add_padding_from_config(packAttrs, theseWidgets[key])
self.widgets[key].pack(packAttrs) self.widgets[key].pack(packAttrs)
return self return self
def retro(baseWidget):
widget = baseWidget.pieces['button']
root = widget.winfo_toplevel()
text_output = ""
temp_widget = root.pages["randomizer"].pages["dungeon"].widgets["smallkeyshuffle"]
text_output += f'\n {temp_widget.label.cget("text")}'
temp_widget.storageVar.set('universal')
temp_widget = root.pages["randomizer"].pages["item"].widgets["bow_mode"]
text_output += f'\n {temp_widget.label.cget("text")}'
if temp_widget.storageVar.get() == 'progressive':
temp_widget.storageVar.set('retro')
elif temp_widget.storageVar.get() == 'silvers':
temp_widget.storageVar.set('retro_silvers')
temp_widget = root.pages["randomizer"].pages["item"].widgets["take_any"]
text_output += f'\n {temp_widget.label.cget("text")}'
if temp_widget.storageVar.get() == 'none':
temp_widget.storageVar.set('random')
messagebox.showinfo('', f'The following settings were changed:{text_output}')