Dictify Dungeon Rando options

This commit is contained in:
Mike A. Trethewey
2020-02-15 06:55:10 -08:00
parent 20396e4798
commit bba2058a5b
2 changed files with 80 additions and 69 deletions

View File

@@ -14,76 +14,73 @@ def dungeon_page(parent):
mscbLabel = Label(mcsbshuffleFrame, text="Shuffle: ")
mscbLabel.pack(side=LEFT)
## Map Shuffle
key = "mapshuffle"
self.widgets[key] = widgets.make_widget(
self,
"checkbox",
mcsbshuffleFrame,
"Maps",
None
)
self.widgets[key].pack(side=LEFT)
## Compass Shuffle
key = "compassshuffle"
self.widgets[key] = widgets.make_widget(
self,
"checkbox",
mcsbshuffleFrame,
"Compasses",
None
)
self.widgets[key].pack(side=LEFT)
## Small Key Shuffle
key = "smallkeyshuffle"
self.widgets[key] = widgets.make_widget(
self,
"checkbox",
mcsbshuffleFrame,
"Small Keys",
None
)
self.widgets[key].pack(side=LEFT)
## Big Key Shuffle
key = "bigkeyshuffle"
self.widgets[key] = widgets.make_widget(
self,
"checkbox",
mcsbshuffleFrame,
"Big Keys",
None
)
self.widgets[key].pack(side=LEFT)
## Dungeon Door Shuffle
key = "dungeondoorshuffle"
self.widgets[key] = widgets.make_widget(
self,
"selectbox",
self,
"Dungeon Door Shuffle",
None,
{"label": {"side": LEFT}, "selectbox": {"side": RIGHT}, "default": "Basic"},
{
"Vanilla": "vanilla",
"Basic": "basic",
"Crossed": "crossed"
myDict = {
## Map Shuffle
"mapshuffle": {
"type": "checkbox",
"label": {
"text": "Maps"
}
},
## Compass Shuffle
"compassshuffle": {
"type": "checkbox",
"label": {
"text": "Compasses"
}
},
## Small Key Shuffle
"smallkeyshuffle": {
"type": "checkbox",
"label": {
"text": "Small Keys"
}
},
## Big Key Shuffle
"bigkeyshuffle": {
"type": "checkbox",
"label": {
"text": "Small Keys"
}
}
)
self.widgets[key].pack(anchor=W)
}
# Experimental features
key = "experimental"
self.widgets[key] = widgets.make_widget(
self,
"checkbox",
self,
"Enable Experimental Features",
None
)
self.widgets[key].pack(anchor=W)
dictWidgets = widgets.make_widgets_from_dict(self, myDict, mcsbshuffleFrame)
for key in dictWidgets:
self.widgets[key] = dictWidgets[key]
self.widgets[key].pack(side=LEFT)
myDict = {
"dungeondoorshuffle": {
"type": "selectbox",
"label": {
"text": "Dungeon Door Shuffle"
},
"packAttrs": {
"label": { "side": LEFT },
"selectbox": {"side": RIGHT},
"default": "Basic"
},
"options": {
"Vanilla": "vanilla",
"Basic": "basic",
"Crossed": "crossed"
}
},
## Experiemental features
"experimental": {
"type": "checkbox",
"label": {
"text": "Enable Experimental Features"
}
}
}
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self)
for key in dictWidgets:
self.widgets[key] = dictWidgets[key]
self.widgets[key].pack(anchor=W)
return self

View File

@@ -117,3 +117,17 @@ def make_widget(self, type, parent, label, storageVar=None, packAttrs=dict(), op
thisStorageVar = StringVar()
widget = make_textbox(self, parent, label, thisStorageVar, packAttrs)
return widget
def make_widget_from_dict(self, defn, parent):
type = defn["type"] if "type" in defn else None
label = defn["label"]["text"] if "label" in defn and "text" in defn["label"] else ""
packAttrs = defn["packAttrs"] if "packAttrs" in defn else None
options = defn["options"] if "options" in defn else None
widget = make_widget(self, type, parent, label, None, packAttrs, options)
return widget
def make_widgets_from_dict(self, defns, parent):
widgets = {}
for key,defn in defns.items():
widgets[key] = make_widget_from_dict(self, defn, parent)
return widgets