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