diff --git a/modules/config.py b/modules/config.py index 3e3cd6d9..9f4b7aba 100644 --- a/modules/config.py +++ b/modules/config.py @@ -376,9 +376,9 @@ possible_preset_keys = { "default_prompt_negative": "Negative Prompt", "default_styles": "Styles", "default_aspect_ratio": "Resolution", - "checkpoint_downloads": None, - "embeddings_downloads": None, - "lora_downloads": None, + "checkpoint_downloads": "checkpoint_downloads", + "embeddings_downloads": "embeddings_downloads", + "lora_downloads": "lora_downloads", } diff --git a/modules/meta_parser.py b/modules/meta_parser.py index b9465c48..ebd72eb4 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -149,13 +149,25 @@ def parse_meta_from_preset(preset_content): items = preset_content for settings_key, meta_key in modules.config.possible_preset_keys.items(): - if settings_key != "default_loras": - preset_prepared[meta_key] = items[settings_key] if settings_key in items and items[settings_key] is not None else getattr(modules.config, settings_key) - else: + if settings_key == "default_loras": loras = getattr(modules.config, settings_key) if settings_key in items: loras = items[settings_key] for index, lora in enumerate(loras[:5]): preset_prepared[f'LoRA {index + 1}'] = ' : '.join(map(str, lora)) + elif settings_key == "default_aspect_ratio": + if settings_key in items and items[settings_key] is not None: + default_aspect_ratio = items[settings_key] + width, height = default_aspect_ratio.split('*') + else: + default_aspect_ratio = getattr(modules.config, settings_key) + width, height = default_aspect_ratio.split('×') + height = height[:height.index(" ")] + preset_prepared[meta_key] = (width, height) + else: + preset_prepared[meta_key] = items[settings_key] if settings_key in items and items[settings_key] is not None else getattr(modules.config, settings_key) + + if settings_key == "default_styles" or settings_key == "default_aspect_ratio": + preset_prepared[meta_key] = str(preset_prepared[meta_key]) - return load_parameter_button_click(json.dumps(preset_prepared)) \ No newline at end of file + return preset_prepared \ No newline at end of file diff --git a/presets/realistic.json b/presets/realistic.json index ed625d45..e546c059 100644 --- a/presets/realistic.json +++ b/presets/realistic.json @@ -1,6 +1,6 @@ { "default_model": "realisticStockPhoto_v10.safetensors", - "default_refiner": "", + "default_refiner": "None", "default_refiner_switch": 0.5, "default_loras": [ [ diff --git a/webui.py b/webui.py index 63aec585..4af3036f 100644 --- a/webui.py +++ b/webui.py @@ -16,6 +16,7 @@ import modules.style_sorter as style_sorter import modules.meta_parser import args_manager import copy +import launch from modules.sdxl_styles import legal_style_names from modules.private_logger import get_current_html_path @@ -506,7 +507,14 @@ with shared.gradio_root: def preset_selection_change(preset): preset_content = modules.config.try_get_preset_content(preset) if preset != 'initial' else {} - return modules.meta_parser.parse_meta_from_preset(preset_content) + preset_prepared = modules.meta_parser.parse_meta_from_preset(preset_content) + + launch.checkpoint_downloads = preset_prepared['checkpoint_downloads'] + launch.embeddings_downloads = preset_prepared['embeddings_downloads'] + launch.lora_downloads = preset_prepared['lora_downloads'] + launch.download_models() + + return modules.meta_parser.load_parameter_button_click(json.dumps(preset_prepared)) preset_selection.change(preset_selection_change, inputs=preset_selection, outputs=[ advanced_checkbox, @@ -532,7 +540,10 @@ with shared.gradio_root: image_seed, generate_button, load_parameter_button - ] + lora_ctrls, queue=False, show_progress=False) + ] + lora_ctrls, queue=False, show_progress=True) \ + .then(fn=style_sorter.sort_styles, inputs=style_selections, outputs=style_selections, queue=False, show_progress=False) \ + .then(lambda: None, _js='()=>{refresh_style_localization();}') + performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11 + [gr.update(visible=x != 'Extreme Speed')] * 1 +