Spaces:
Runtime error
Runtime error
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], | |
) | |