RuinedFooocus / ui_settings.py
malizec's picture
Upload folder using huggingface_hub
2de3774 verified
import gradio as gr
from pathlib import Path
from modules.interrogate import looks
from shared import state, add_setting, performance_settings, resolution_settings, path_manager, settings, models
def save_clicked(*args):
ui_data = {}
# Overwrite current settings
for key, val in zip(state["setting_name"], args):
settings.default_settings[key] = val
# Remove empty keys
if settings.default_settings[key] == None or settings.default_settings[key] == "":
settings.default_settings.pop(key)
continue
# Massage some of the data. Settings that are lists should be split
if key in [
"archive_folders",
"style",
"path_checkpoints",
"path_loras"
]:
settings.default_settings[key] = settings.default_settings[key].splitlines()
# Move ui_* and path_*
if key.startswith("ui_"):
ui_data[key] = settings.default_settings.get(key)
settings.default_settings.pop(key)
if key.startswith("path_"):
path_manager.paths[key] = settings.default_settings.get(key)
settings.default_settings.pop(key)
settings.set_settings_path(ui_data.get("ui_settings_name", None))
settings.save_settings()
path_manager.set_settings_path(ui_data.get("ui_settings_name", None))
path_manager.save_paths()
print(f"Saved new settings to {settings.settings_path}. Please restart.")
gr.Info("Saved! Please restart RuinedFoocus.")
def create_settings():
with gr.Blocks() as app_settings:
with gr.Row():
with gr.Column():
gr.Markdown("# UI settings")
image_number = gr.Number(label="Image Number", interactive=True, value=settings.default_settings.get("image_number", 1))
add_setting("image_number", image_number)
image_number_max = gr.Number(label="Image Number Max", interactive=True, value=settings.default_settings.get("image_number_max", 50))
add_setting("image_number_max", image_number_max)
seed_random = gr.Checkbox(label="Seed Random", interactive=True, value=settings.default_settings.get("seed_random", True))
add_setting("seed_random", seed_random)
seed = gr.Number(label="Seed", interactive=True, value=settings.default_settings.get("seed", -1))
add_setting("seed", seed)
style = gr.Code(
label="Style",
interactive=True,
value="\n".join(settings.default_settings.get("style", [])),
lines=5,
max_lines=5
)
add_setting("style", style)
prompt = gr.Textbox(label="Prompt", interactive=True, value=settings.default_settings.get("prompt", ""))
add_setting("prompt", prompt)
negative_prompt = gr.Textbox(label="Negative Prompt", interactive=True, value=settings.default_settings.get("negative_prompt", ""))
add_setting("negative_prompt", negative_prompt)
performance = gr.Dropdown(
label="Performance",
interactive=True,
choices=list(performance_settings.performance_options.keys()),
value=settings.default_settings.get("performance", "Speed"),
)
add_setting("performance", performance)
resolution = gr.Dropdown(
label="Resolution",
interactive=True,
choices=list(resolution_settings.aspect_ratios.keys()),
value=settings.default_settings.get("resolution", "1344x768 (16:9)"),
)
add_setting("resolution", resolution)
base_model = gr.Dropdown(
label="Base Model",
interactive=True,
choices=models.names['checkpoints'],
value=settings.default_settings.get("base_model", "sd_xl_base_1.0_0.9vae.safetensors"),
)
add_setting("base_model", base_model)
with gr.Row():
lora_1_model = gr.Dropdown(
label="LoRA 1 Model",
interactive=True,
choices=["None"] + models.names['loras'],
value=settings.default_settings.get("lora_1_model", "None"),
)
lora_1_weight = gr.Number(label="Lora 1 Weight", value=settings.default_settings.get("lora_1_weight", 1.0), step=0.05)
with gr.Row():
lora_2_model = gr.Dropdown(
label="LoRA 2 Model",
interactive=True,
choices=["None"] + models.names['loras'],
value=settings.default_settings.get("lora_2_model", "None"),
)
lora_2_weight = gr.Number(label="Lora 2 Weight", value=settings.default_settings.get("lora_2_weight", 1.0), step=0.05)
with gr.Row():
lora_3_model = gr.Dropdown(
label="LoRA 3 Model",
interactive=True,
choices=["None"] + models.names['loras'],
value=settings.default_settings.get("lora_3_model", "None"),
)
lora_3_weight = gr.Number(label="Lora 3 Weight", value=settings.default_settings.get("lora_3_weight", 1.0), step=0.05)
with gr.Row():
lora_4_model = gr.Dropdown(
label="LoRA 4 Model",
interactive=True,
choices=["None"] + models.names['loras'],
value=settings.default_settings.get("lora_4_model", "None"),
)
lora_4_weight = gr.Number(label="Lora 4 Weight", value=settings.default_settings.get("lora_4_weight", 1.0), step=0.05)
with gr.Row():
lora_5_model = gr.Dropdown(
label="LoRA 5 Model",
interactive=True,
choices=["None"] + models.names['loras'],
value=settings.default_settings.get("lora_5_model", "None"),
)
lora_5_weight = gr.Number(label="Lora 5 Weight", value=settings.default_settings.get("lora_5_weight", 1.0), step=0.05)
add_setting("lora_1_model", lora_1_model)
add_setting("lora_2_model", lora_2_model)
add_setting("lora_3_model", lora_3_model)
add_setting("lora_4_model", lora_4_model)
add_setting("lora_5_model", lora_5_model)
add_setting("lora_1_weight", lora_1_weight)
add_setting("lora_2_weight", lora_2_weight)
add_setting("lora_3_weight", lora_3_weight)
add_setting("lora_4_weight", lora_4_weight)
add_setting("lora_5_weight", lora_5_weight)
auto_negative_prompt = gr.Checkbox(label="Auto Negative Prompt", interactive=True, value=settings.default_settings.get("auto_negative_prompt", False))
add_setting("auto_negative_prompt", auto_negative_prompt)
with gr.Column():
gr.Markdown("# One Button Prompt")
OBP_preset = gr.Textbox(label="OBP Preset", value=settings.default_settings.get("OBP_preset", "Standard"))
add_setting("OBP_preset", OBP_preset)
hint_chance = gr.Number(label="Hint Chance", value=settings.default_settings.get("hint_chance", 25))
add_setting("hint_chance", hint_chance)
gr.Markdown("# Image Browser")
images_per_page = gr.Number(label="Images per page", value=settings.default_settings.get("images_per_page", 100), minimum=1, maximum=1000, step=1)
add_setting("images_per_page", images_per_page)
archive_folders = gr.Code(
label="Archive folders",
interactive=True,
value="\n".join(settings.default_settings.get("archive_folders", [])),
lines=5,
max_lines=5
)
add_setting("archive_folders", archive_folders)
gr.Markdown("# Paths")
path_checkpoints = gr.Code(
label="Checkpoint folders",
interactive=True,
value="\n".join(path_manager.paths.get("path_checkpoints", [])),
lines=5,
max_lines=5
)
add_setting("path_checkpoints", path_checkpoints)
path_loras = gr.Code(
label="LoRA folders",
interactive=True,
value="\n".join(path_manager.paths.get("path_loras", [])),
lines=5,
max_lines=5
)
add_setting("path_loras", path_loras)
path_inbox = gr.Textbox(label="Inbox folder", interactive=True, placeholder="", value=settings.default_settings.get("path_inbox", "../models/inbox/"))
add_setting("path_inbox", path_inbox)
path_outputs = gr.Textbox(label="Output folder", interactive=True, placeholder="", value=settings.default_settings.get("path_outputs", "../outputs/"))
add_setting("path_outputs", path_outputs)
with gr.Column():
gr.Markdown("# Other")
interrogator = gr.Dropdown(label="Default interrogator", interactive=True, choices=list(looks.keys()), value=settings.default_settings.get("interrogator", None),)
add_setting("interrogator", interrogator)
save_metadata = gr.Checkbox(label="Save Metadata", value=settings.default_settings.get("save_metadata", True))
add_setting("save_metadata", save_metadata)
theme = gr.Textbox(label="Theme", interactive=True, value=settings.default_settings.get("theme", None))
add_setting("theme", theme)
clip_g = gr.Dropdown(label="clip_g", interactive=True, choices=[None]+path_manager.get_folder_list("clip"), value=settings.default_settings.get("clip_g", None),)
add_setting("clip_g", clip_g)
clip_t = gr.Dropdown(label="clip_t", interactive=True, choices=[None]+path_manager.get_folder_list("clip"), value=settings.default_settings.get("clip_t", None),)
add_setting("clip_t", clip_t)
clip_t5 = gr.Dropdown(label="clip_t5", interactive=True, choices=[None]+path_manager.get_folder_list("clip"), value=settings.default_settings.get("clip_t5", None),)
add_setting("clip_t5", clip_t5)
clip_umt5 = gr.Dropdown(label="clip_umt5", interactive=True, choices=[None]+path_manager.get_folder_list("clip"), value=settings.default_settings.get("clip_umt5", None),)
add_setting("clip_umt5", clip_umt5)
clip_llava = gr.Dropdown(label="clip_llava", interactive=True, choices=[None]+path_manager.get_folder_list("clip"), value=settings.default_settings.get("clip_llava", None),)
add_setting("clip_llava", clip_llava)
clip_vision = gr.Dropdown(label="clip_vision", interactive=True, choices=[None]+path_manager.get_folder_list("clip_vision"), value=settings.default_settings.get("clip_vision", None),)
add_setting("clip_vision", clip_vision)
lumina2_shift = gr.Textbox(label="Lumina2 shift", interactive=True, placeholder=3.0, value=settings.default_settings.get("lumina2_shift", None))
add_setting("lumina2_shift", lumina2_shift)
vae_flux = gr.Dropdown(label="Flux VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_flux", None),)
add_setting("vae_flux", vae_flux)
vae_hunyuan_video = gr.Dropdown(label="Hunyuan Video VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_hunyuan_video", None),)
add_setting("vae_hunyuan_video", vae_hunyuan_video)
vae_lumina2 = gr.Dropdown(label="Lumina2 VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_lumina2", None),)
add_setting("vae_lumina2", vae_lumina2)
vae_sd3 = gr.Dropdown(label="SD3 VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_sd3", None),)
add_setting("vae_sd3", vae_sd3)
vae_sdxl = gr.Dropdown(label="SDXL/Pony/Illustrious VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_sdxl", None),)
add_setting("vae_sdxl", vae_sdxl)
vae_wan = gr.Dropdown(label="WAN 2.1 VAE", interactive=True, choices=[None]+path_manager.get_folder_list("vae"), value=settings.default_settings.get("vae_wan", None),)
add_setting("vae_wan", vae_wan)
llama_localfile = gr.Dropdown(label="Local Llama file", interactive=True, choices=[None]+path_manager.get_folder_list("llm"), value=settings.default_settings.get("llama_localfile", None),)
add_setting("llama_localfile", llama_localfile)
with gr.Row(), gr.Group():
ui_settings_name = gr.Text(
label="Settings name",
interactive=True,
placeholder="Optional",
value=settings.name,
)
add_setting("ui_settings_name", ui_settings_name)
save_btn = gr.Button("Save Settings")
# Deal with this later
# output = gr.Textbox(label="Status")
# download_file = gr.File(label="Download File")
# with gr.Row():
# upload = gr.File(label="Load settings file (optional)", file_count="single", type="filepath")
# download_btn = gr.Button("Download current settings")
save_btn.click(
fn=save_clicked,
inputs=state["setting_obj"],
outputs=[
]
)
return app_settings