RuinedFooocus / ui_onebutton.py
malizec's picture
Upload folder using huggingface_hub
2de3774 verified
import gradio as gr
import shared
from shared import add_ctrl
from random_prompt.build_dynamic_prompt import build_dynamic_prompt
from random_prompt.csv_reader import load_config_csv
from random_prompt.one_button_presets import OneButtonPresets
OBPresets = OneButtonPresets()
settings = shared.settings.default_settings
custom_obp_values = OBPresets.get_obp_preset(settings["OBP_preset"])
insanitylevel = 5
subjects = ["all"]
subjectsubtypesobject = ["all"]
subjectsubtypeshumanoid = ["all"]
subjectsubtypesconcept = ["all"]
modeltypelist = ["SDXL", "Anime Model"]
artists = [
"all",
"all (wild)",
"none",
"popular",
"greg mode",
"3D",
"abstract",
"angular",
"anime",
"architecture",
"art nouveau",
"art deco",
"baroque",
"bauhaus",
"cartoon",
"character",
"children's illustration",
"cityscape",
"clean",
"cloudscape",
"collage",
"colorful",
"comics",
"cubism",
"dark",
"detailed",
"digital",
"expressionism",
"fantasy",
"fashion",
"fauvism",
"figurativism",
"gore",
"graffiti",
"graphic design",
"high contrast",
"horror",
"impressionism",
"installation",
"landscape",
"light",
"line drawing",
"low contrast",
"luminism",
"magical realism",
"manga",
"melanin",
"messy",
"monochromatic",
"nature",
"nudity",
"photography",
"pop art",
"portrait",
"primitivism",
"psychedelic",
"realism",
"renaissance",
"romanticism",
"scene",
"sci-fi",
"sculpture",
"seascape",
"space",
"stained glass",
"still life",
"storybook realism",
"street art",
"streetscape",
"surrealism",
"symbolism",
"textile",
"ukiyo-e",
"vibrant",
"watercolor",
"whimsical",
]
imagetypes = [
"all",
"all - force multiple",
"all - anime",
"none",
"photograph",
"octane render",
"digital art",
"concept art",
"painting",
"portrait",
"anime",
"only other types",
"only templates mode",
"dynamic templates mode",
"art blaster mode",
"quality vomit mode",
"color cannon mode",
"unique art mode",
"massive madness mode",
"photo fantasy mode",
"subject only mode",
"fixed styles mode",
"the tokinator",
]
promptmode = ["at the back", "in the front"]
promptcompounder = ["1", "2", "3", "4", "5"]
ANDtogglemode = [
"none",
"automatic",
"prefix AND prompt + suffix",
"prefix + prefix + prompt + suffix",
]
seperatorlist = ["comma", "AND", "BREAK"]
genders = ["all", "male", "female"]
qualitymodelist = ["highest", "gated"]
qualitykeeplist = ["keep used", "keep all"]
promptenhancelist = ["none", "hyperprompt", "llama"]
generatevehicle = True
generateobject = True
generatefood = True
generatebuilding = True
generatespace = True
generateflora = True
generateanimal = True
generatebird = True
generatecat = True
generatedog = True
generateinsect = True
generatepokemon = True
generatemarinelife = True
generatemanwoman = True
generatemanwomanrelation = True
generatemanwomanmultiple = True
generatefictionalcharacter = True
generatenonfictionalcharacter = True
generatehumanoids = True
generatejob = True
generatefirstnames = True
generatelandscape = True
generatelocation = True
generatelocationfantasy = True
generatelocationscifi = True
generatelocationvideogame = True
generatelocationbiome = True
generatelocationcity = True
generateevent = True
generateconcepts = True
generatepoemline = True
generatesongline = True
generatecardname = True
generateepisodetitle = True
generateconceptmixer = True
config = load_config_csv()
for item in config:
# objects
if item[0] == "subject_vehicle" and item[1] != "on":
generatevehicle = False
if item[0] == "subject_object" and item[1] != "on":
generateobject = False
if item[0] == "subject_food" and item[1] != "on":
generatefood = False
if item[0] == "subject_building" and item[1] != "on":
generatebuilding = False
if item[0] == "subject_space" and item[1] != "on":
generatespace = False
if item[0] == "subject_flora" and item[1] != "on":
generateflora = False
# animals
if item[0] == 'subject_animal' and item[1] != 'on':
generateanimal = False
if item[0] == 'subject_bird' and item[1] != 'on':
generatebird = False
if item[0] == 'subject_cat' and item[1] != 'on':
generatecat = False
if item[0] == 'subject_dog' and item[1] != 'on':
generatedog = False
if item[0] == 'subject_insect' and item[1] != 'on':
generateinsect = False
if item[0] == 'subject_pokemon' and item[1] != 'on':
generatepokemon = False
if item[0] == 'subject_marinelife' and item[1] != 'on':
generatemarinelife = False
# humanoids
if item[0] == "subject_manwoman" and item[1] != "on":
generatemanwoman = False
if item[0] == "subject_manwomanrelation" and item[1] != "on":
generatemanwomanrelation = False
if item[0] == "subject_manwomanmultiple" and item[1] != "on":
generatemanwomanmultiple = False
if item[0] == "subject_fictional" and item[1] != "on":
generatefictionalcharacter = False
if item[0] == "subject_nonfictional" and item[1] != "on":
generatenonfictionalcharacter = False
if item[0] == "subject_humanoid" and item[1] != "on":
generatehumanoids = False
if item[0] == "subject_job" and item[1] != "on":
generatejob = False
if item[0] == "subject_firstnames" and item[1] != "on":
generatefirstnames = False
# landscape
if item[0] == 'subject_location' and item[1] != 'on':
generatelocation = False
if item[0] == 'subject_location_fantasy' and item[1] != 'on':
generatelocationfantasy = False
if item[0] == 'subject_location_scifi' and item[1] != 'on':
generatelocationscifi = False
if item[0] == 'subject_location_videogame' and item[1] != 'on':
generatelocationvideogame = False
if item[0] == 'subject_location_biome' and item[1] != 'on':
generatelocationbiome = False
if item[0] == 'subject_location_city' and item[1] != 'on':
generatelocationcity = False
# concept
if item[0] == "subject_event" and item[1] != "on":
generateevent = False
if item[0] == "subject_concept" and item[1] != "on":
generateconcepts = False
if item[0] == "poemline" and item[1] != "on":
generatepoemline = False
if item[0] == "songline" and item[1] != "on":
generatesongline = False
if item[0] == "subject_cardname" and item[1] != "on":
generatecardname = False
if item[0] == "subject_episodetitle" and item[1] != "on":
generateepisodetitle = False
if item[0] == "subject_conceptmixer" and item[1] != "on":
generateconceptmixer = False
# build up all subjects we can choose based on the loaded config file
if(generatevehicle or generateobject or generatefood or generatebuilding or generatespace or generateflora):
subjects.append("--- object - all")
if(generateobject):
subjects.append("object - generic")
if(generatevehicle):
subjects.append("object - vehicle")
if(generatefood):
subjects.append("object - food")
if(generatebuilding):
subjects.append("object - building")
if(generatespace):
subjects.append("object - space")
if(generateflora):
subjects.append("object - flora")
if(generateanimal or generatebird or generatecat or generatedog or generateinsect or generatepokemon or generatemarinelife):
subjects.append("--- animal - all")
if(generateanimal):
subjects.append("animal - generic")
if(generatebird):
subjects.append("animal - bird")
if(generatecat):
subjects.append("animal - cat")
if(generatedog):
subjects.append("animal - dog")
if(generateinsect):
subjects.append("animal - insect")
if(generatemarinelife):
subjects.append("animal - marine life")
if(generatepokemon):
subjects.append("animal - pokémon")
if(generatemanwoman or generatemanwomanrelation or generatefictionalcharacter or generatenonfictionalcharacter or generatehumanoids or generatejob or generatemanwomanmultiple):
subjects.append("--- human - all")
if(generatemanwoman):
subjects.append("human - generic")
if(generatemanwomanrelation):
subjects.append("human - relations")
if(generatenonfictionalcharacter):
subjects.append("human - celebrity")
if(generatefictionalcharacter):
subjects.append("human - fictional")
if(generatehumanoids):
subjects.append("human - humanoids")
if(generatejob):
subjects.append("human - job/title")
if(generatefirstnames):
subjects.append("human - first name")
if(generatemanwomanmultiple):
subjects.append("human - multiple")
if(generatelandscape or generatelocation or generatelocationfantasy or generatelocationscifi or generatelocationvideogame or generatelocationbiome or generatelocationcity):
subjects.append("--- landscape - all")
if(generatelocation):
subjects.append("landscape - generic")
if(generatelocationfantasy):
subjects.append("landscape - fantasy")
if(generatelocationscifi):
subjects.append("landscape - sci-fi")
if(generatelocationvideogame):
subjects.append("landscape - videogame")
if(generatelocationbiome):
subjects.append("landscape - biome")
if(generatelocationcity):
subjects.append("landscape - city")
if(generateevent or generateconcepts or generatepoemline or generatesongline or generatecardname or generateepisodetitle or generateconceptmixer):
subjects.append("--- concept - all")
if(generateevent):
subjects.append("concept - event")
if(generateconcepts):
subjects.append("concept - the x of y")
if(generatepoemline):
subjects.append("concept - poem lines")
if(generatesongline):
subjects.append("concept - song lines")
if(generatecardname):
subjects.append("concept - card names")
if(generateepisodetitle):
subjects.append("concept - episode titles")
if(generateconceptmixer):
subjects.append("concept - mixer")
# do the same for the subtype subjects
# subjectsubtypesobject = ["all"]
# subjectsubtypeshumanoid = ["all"]
# subjectsubtypesconcept = ["all"]
# objects first
if generateobject:
subjectsubtypesobject.append("generic objects")
if generatevehicle:
subjectsubtypesobject.append("vehicles")
if generatefood:
subjectsubtypesobject.append("food")
if generatebuilding:
subjectsubtypesobject.append("buildings")
if generatespace:
subjectsubtypesobject.append("space")
if generateflora:
subjectsubtypesobject.append("flora")
# humanoids (should I review descriptions??)
if generatemanwoman:
subjectsubtypeshumanoid.append("generic humans")
if generatemanwomanrelation:
subjectsubtypeshumanoid.append("generic human relations")
if generatenonfictionalcharacter:
subjectsubtypeshumanoid.append("celebrities e.a.")
if generatefictionalcharacter:
subjectsubtypeshumanoid.append("fictional characters")
if generatehumanoids:
subjectsubtypeshumanoid.append("humanoids")
if generatejob:
subjectsubtypeshumanoid.append("based on job or title")
if generatefirstnames:
subjectsubtypeshumanoid.append("based on first name")
if generatemanwomanmultiple:
subjectsubtypeshumanoid.append("multiple humans")
# concepts
if generateevent:
subjectsubtypesconcept.append("event")
if generateconcepts:
subjectsubtypesconcept.append("the X of Y concepts")
if generatepoemline:
subjectsubtypesconcept.append("lines from poems")
if generatesongline:
subjectsubtypesconcept.append("lines from songs")
if generatecardname:
subjectsubtypesconcept.append("names from card based games")
if generateepisodetitle:
subjectsubtypesconcept.append("episode titles from tv shows")
if generateconceptmixer:
subjectsubtypesconcept.append("concept mixer")
def ui_onebutton(prompt, run_event):
def gen_prompt(
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
):
prompt = build_dynamic_prompt(
insanitylevel,
subject,
artist,
imagetype,
False,
antistring,
prefixprompt,
suffixprompt,
1,
"comma",
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
False,
False,
0,
givenoutfit,
False,
modeltype,
OBP_preset,
promptenhance,
)
return prompt
def instant_gen_prompt(
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
run_event,
):
prompt = build_dynamic_prompt(
insanitylevel,
subject,
artist,
imagetype,
False,
antistring,
prefixprompt,
suffixprompt,
1,
"comma",
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
False,
False,
0,
givenoutfit,
False,
modeltype,
OBP_preset,
promptenhance,
)
return prompt, run_event+1
def add_prompt(
prompt,
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
):
prompt = (
prompt
+ "---"
+ build_dynamic_prompt(
insanitylevel,
subject,
artist,
imagetype,
False,
antistring,
prefixprompt,
suffixprompt,
1,
"comma",
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
False,
False,
0,
givenoutfit,
False,
modeltype,
OBP_preset,
promptenhance,
)
)
return prompt
with gr.Tab(label="One Button"):
with gr.Row():
instant_obp = gr.Button(value="Instant OBP", size="sm", min_width = 1)
random_button = gr.Button(value="Random Prompt", size="sm", min_width = 1)
add_random_button = gr.Button(value="+", size="sm", min_width=1)
with gr.Row():
assumedirectcontrol = gr.Checkbox(
label="BYPASS SAFETY PROTOCOLS", value=False
)
add_ctrl("obp_assume_direct_control", assumedirectcontrol)
# Part of presets
with gr.Row():
OBP_preset = gr.Dropdown(
label="One Button Preset",
choices=[OBPresets.RANDOM_PRESET_OBP] + list(OBPresets.opb_presets.keys())
+ [OBPresets.CUSTOM_OBP],
value=settings["OBP_preset"],
)
add_ctrl("OBP_preset", OBP_preset)
with gr.Group(visible=False) as maingroup:
with gr.Row():
obp_preset_name = gr.Textbox(
show_label=False,
placeholder="Name of new preset",
interactive=True,
visible=True,
)
obp_preset_save = gr.Button(
value="Save as preset",
visible=True,
)
# End of this part of presets
with gr.Row():
insanitylevel = gr.Slider(
1,
10,
value=custom_obp_values["insanitylevel"],
step=1,
label="Higher levels increases complexity and randomness of generated prompt",
)
add_ctrl("obp_insanitylevel", insanitylevel)
with gr.Row():
with gr.Column(scale=1, variant="compact"):
subject = gr.Dropdown(subjects, label="Subject Types", value=custom_obp_values["subject"])
add_ctrl("obp_subject", subject)
with gr.Column(scale=1, variant="compact"):
artist = gr.Dropdown(artists, label="Artists", value=custom_obp_values["artist"])
add_ctrl("obp_artist", artist)
with gr.Row():
chosensubjectsubtypeobject = gr.Dropdown(
subjectsubtypesobject,
label="Type of object",
value=custom_obp_values["chosensubjectsubtypeobject"],
visible=False,
)
add_ctrl("obp_chosensubjectsubtypeobject", chosensubjectsubtypeobject)
chosensubjectsubtypehumanoid = gr.Dropdown(
subjectsubtypeshumanoid,
label="Type of humanoids",
value=custom_obp_values["chosensubjectsubtypehumanoid"],
visible=False,
)
add_ctrl("obp_chosensubjectsubtypehumanoid", chosensubjectsubtypehumanoid)
chosensubjectsubtypeconcept = gr.Dropdown(
subjectsubtypesconcept,
label="Type of concept",
value=custom_obp_values["chosensubjectsubtypeconcept"],
visible=False,
)
add_ctrl("obp_chosensubjectsubtypeconcept", chosensubjectsubtypeconcept)
chosengender = gr.Dropdown(
genders, label="gender", value=custom_obp_values["chosengender"], visible=False
)
add_ctrl("obp_chosengender", chosengender)
with gr.Row():
with gr.Column(scale=2, variant="compact"):
imagetype = gr.Dropdown(imagetypes, label="type of image", value=custom_obp_values["imagetype"])
add_ctrl("obp_imagetype", imagetype)
with gr.Column(scale=2, variant="compact"):
imagemodechance = gr.Slider(
1,
100,
value=custom_obp_values["imagemodechance"],
step=1,
label="One in X chance to use special image type mode",
)
add_ctrl("obp_imagemodechance", imagemodechance)
with gr.Row():
gr.Markdown(
"""
<font size="2">
Override options (choose the related subject type first for better results)
</font>
"""
)
with gr.Row():
givensubject = gr.Textbox(label="Overwrite subject: ", value=custom_obp_values["givensubject"])
add_ctrl("obp_givensubject", givensubject)
smartsubject = gr.Checkbox(label="Smart subject", value=custom_obp_values["smartsubject"])
add_ctrl("obp_smartsubject", smartsubject)
givenoutfit = gr.Textbox(label="Overwrite outfit: ", value=custom_obp_values["givenoutfit"])
add_ctrl("obp_givenoutfit", givenoutfit)
with gr.Row():
gr.Markdown(
"""
<font size="2">
Prompt fields
</font>
"""
)
with gr.Row():
with gr.Column():
prefixprompt = gr.Textbox(
label="Place this in front of generated prompt (prefix)", value=custom_obp_values["prefixprompt"]
)
add_ctrl("obp_prefixprompt", prefixprompt)
suffixprompt = gr.Textbox(
label="Place this at back of generated prompt (suffix)", value=custom_obp_values["suffixprompt"]
)
add_ctrl("obp_suffixprompt", suffixprompt)
with gr.Row():
gr.Markdown(
"""
<font size="2">
Additional options
</font>
"""
)
with gr.Row():
giventypeofimage = gr.Textbox(label="Overwrite type of image: ", value=custom_obp_values["giventypeofimage"])
add_ctrl("obp_giventypeofimage", giventypeofimage)
with gr.Row():
with gr.Column():
antistring = gr.Textbox(
label="Filter out following properties (comma seperated). Example "
"film grain, purple, cat"
" ", value=custom_obp_values["antistring"]
)
add_ctrl("obp_antistring", antistring)
with gr.Row():
promptenhance = gr.Dropdown(
choices=promptenhancelist, label="HYPERPROMPTING", value="none"
)
add_ctrl("OBP_promptenhance", promptenhance)
modeltype = gr.Dropdown(
choices=modeltypelist, label="Model type", value="SDXL"
)
add_ctrl("OBP_modeltype", modeltype)
with gr.Row():
gr.Markdown(
"""
Proud to be powered by [One Button Prompt](https://github.com/AIrjen/OneButtonPrompt)
"""
)
obp_outputs = [
obp_preset_name,
obp_preset_save,
insanitylevel,
subject,
artist,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
chosengender,
imagetype,
imagemodechance,
givensubject,
smartsubject,
givenoutfit,
prefixprompt,
suffixprompt,
giventypeofimage,
antistring,
]
def act_obp_preset_save(
obp_preset_name,
obp_preset_save,
insanitylevel,
subject,
artist,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
chosengender,
imagetype,
imagemodechance,
givensubject,
smartsubject,
givenoutfit,
prefixprompt,
suffixprompt,
giventypeofimage,
antistring,
):
if obp_preset_name != "":
obp_options = OBPresets.load_obp_presets()
opts = {
"insanitylevel": insanitylevel,
"subject": subject,
"artist": artist,
"chosensubjectsubtypeobject": chosensubjectsubtypeobject,
"chosensubjectsubtypehumanoid": chosensubjectsubtypehumanoid,
"chosensubjectsubtypeconcept": chosensubjectsubtypeconcept,
"chosengender": chosengender,
"imagetype": imagetype,
"imagemodechance": imagemodechance,
"givensubject": givensubject,
"smartsubject": smartsubject,
"givenoutfit": givenoutfit,
"prefixprompt": prefixprompt,
"suffixprompt": suffixprompt,
"giventypeofimage": giventypeofimage,
"antistring": antistring
}
obp_options[obp_preset_name] = opts
OBPresets.save_obp_preset(obp_options)
choices = [OBPresets.RANDOM_PRESET_OBP] + list(obp_options.keys()) + [
OBPresets.CUSTOM_OBP
]
return gr.update(choices=choices, value=obp_preset_name)
else:
return gr.update()
obp_preset_save.click(act_obp_preset_save,
inputs=obp_outputs,
outputs=[OBP_preset],
)
def obppreset_changed(selection):
if selection == OBPresets.CUSTOM_OBP:
return {
obp_preset_name: gr.update(value="", visible=True),
maingroup: gr.update(visible=True),
}
else:
return {
obp_preset_name: gr.update(visible=False),
maingroup: gr.update(visible=False),
}
OBP_preset.change(obppreset_changed,
inputs=[OBP_preset],
outputs=[obp_preset_name] + [maingroup]
)
def OBPPreset_changed_update_custom(selection):
# Skip if Custom was selected
if selection == OBPresets.CUSTOM_OBP:
return [gr.update()] * 16
# Update Custom values based on selected One Button preset
if selection == OBPresets.RANDOM_PRESET_OBP:
selected_opb_preset = OBPresets.get_obp_preset("Standard")
else:
selected_opb_preset = OBPresets.get_obp_preset(selection)
return {
insanitylevel: gr.update(value=selected_opb_preset["insanitylevel"]),
subject: gr.update(value=selected_opb_preset["subject"]),
artist: gr.update(value=selected_opb_preset["artist"]),
chosensubjectsubtypeobject: gr.update(value=selected_opb_preset["chosensubjectsubtypeobject"]),
chosensubjectsubtypehumanoid: gr.update(value=selected_opb_preset["chosensubjectsubtypehumanoid"]),
chosensubjectsubtypeconcept: gr.update(value=selected_opb_preset["chosensubjectsubtypeconcept"]),
chosengender: gr.update(value=selected_opb_preset["chosengender"]),
imagetype: gr.update(value=selected_opb_preset["imagetype"]),
imagemodechance: gr.update(value=selected_opb_preset["imagemodechance"]),
givensubject: gr.update(value=selected_opb_preset["givensubject"]),
smartsubject: gr.update(value=selected_opb_preset["smartsubject"]),
givenoutfit: gr.update(value=selected_opb_preset["givenoutfit"]),
prefixprompt: gr.update(value=selected_opb_preset["prefixprompt"]),
suffixprompt: gr.update(value=selected_opb_preset["suffixprompt"]),
giventypeofimage: gr.update(value=selected_opb_preset["giventypeofimage"]),
antistring: gr.update(value=selected_opb_preset["antistring"]),
}
OBP_preset.change(OBPPreset_changed_update_custom,
inputs=[OBP_preset],
outputs=[insanitylevel] +
[subject] +
[artist] +
[chosensubjectsubtypeobject] +
[chosensubjectsubtypehumanoid] +
[chosensubjectsubtypeconcept] +
[chosengender] +
[imagetype] +
[imagemodechance] +
[givensubject] +
[smartsubject] +
[givenoutfit] +
[prefixprompt] +
[suffixprompt] +
[giventypeofimage] +
[antistring],
)
# turn things on and off for gender
def subjectsvalue(subject):
enable = "human" in subject
return {
chosengender: gr.update(visible=enable),
}
subject.change(subjectsvalue, [subject], [chosengender])
# turn things on and off for subject subtype object
def subjectsvalueforsubtypeobject(subject):
enable = subject == "object"
return {
chosensubjectsubtypeobject: gr.update(visible=enable),
}
subject.change(
subjectsvalueforsubtypeobject, [subject], [chosensubjectsubtypeobject]
)
# turn things on and off for subject subtype humanoid
def subjectsvalueforsubtypeobject(subject):
enable = subject == "humanoid"
return {
chosensubjectsubtypehumanoid: gr.update(visible=enable),
}
subject.change(
subjectsvalueforsubtypeobject, [subject], [chosensubjectsubtypehumanoid]
)
# turn things on and off for subject subtype concept
def subjectsvalueforsubtypeconcept(subject):
enable = subject == "concept"
return {
chosensubjectsubtypeconcept: gr.update(visible=enable),
}
subject.change(
subjectsvalueforsubtypeconcept, [subject], [chosensubjectsubtypeconcept]
)
# turn things on and off for ASSUME DIRECT CONTROL
def assumedirectcontrolflip(assumedirectcontrol):
enable = not assumedirectcontrol
return {
instant_obp: gr.update(visible=enable),
random_button: gr.update(visible=enable),
add_random_button: gr.update(visible=enable),
}
assumedirectcontrol.change(
assumedirectcontrolflip,
[assumedirectcontrol],
[instant_obp, random_button, add_random_button],
)
instant_obp.click(
instant_gen_prompt,
inputs=[
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
run_event,
],
outputs=[prompt, run_event],
)
random_button.click(
gen_prompt,
inputs=[
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
],
outputs=[prompt],
)
add_random_button.click(
add_prompt,
inputs=[
prompt,
insanitylevel,
subject,
artist,
imagetype,
antistring,
prefixprompt,
suffixprompt,
givensubject,
smartsubject,
giventypeofimage,
imagemodechance,
chosengender,
chosensubjectsubtypeobject,
chosensubjectsubtypehumanoid,
chosensubjectsubtypeconcept,
givenoutfit,
OBP_preset,
promptenhance,
modeltype,
],
outputs=[prompt],
)