From f1bee4b103f0d212262f6d965ed8bcb9b0bf106d Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 24 Dec 2023 11:25:07 +0100 Subject: [PATCH 1/5] add special handling for default_styles and default_aspect_ratio --- modules/meta_parser.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/meta_parser.py b/modules/meta_parser.py index b9465c48..adf69da8 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -149,13 +149,27 @@ 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) + print(default_aspect_ratio) + width, height = default_aspect_ratio.split('×') + height = height[:height.index(" ")] + print(default_aspect_ratio) + 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 From 7ddd20e7f01d8729975f28bb629bce526ade1e4b Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 24 Dec 2023 11:28:10 +0100 Subject: [PATCH 2/5] sort styles after preset change --- webui.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/webui.py b/webui.py index c3c0a187..9681c043 100644 --- a/webui.py +++ b/webui.py @@ -491,7 +491,11 @@ with shared.gradio_root: image_seed, generate_button, load_parameter_button - ] + lora_ctrls, queue=False, show_progress=False) + ] + lora_ctrls, queue=False, show_progress=False) \ + .then(fn=refresh_seed, inputs=[seed_random, image_seed], outputs=image_seed) \ + .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, From 2e23e2b7b12d8b7268c7e2da9b45b83300dcd70b Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 24 Dec 2023 11:53:06 +0100 Subject: [PATCH 3/5] code cleanup --- modules/meta_parser.py | 2 -- webui.py | 1 - 2 files changed, 3 deletions(-) diff --git a/modules/meta_parser.py b/modules/meta_parser.py index adf69da8..c5ed176b 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -161,10 +161,8 @@ def parse_meta_from_preset(preset_content): width, height = default_aspect_ratio.split('*') else: default_aspect_ratio = getattr(modules.config, settings_key) - print(default_aspect_ratio) width, height = default_aspect_ratio.split('×') height = height[:height.index(" ")] - print(default_aspect_ratio) 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) diff --git a/webui.py b/webui.py index 9681c043..00396cbe 100644 --- a/webui.py +++ b/webui.py @@ -492,7 +492,6 @@ with shared.gradio_root: generate_button, load_parameter_button ] + lora_ctrls, queue=False, show_progress=False) \ - .then(fn=refresh_seed, inputs=[seed_random, image_seed], outputs=image_seed) \ .then(fn=style_sorter.sort_styles, inputs=style_selections, outputs=style_selections, queue=False, show_progress=False) \ .then(lambda: None, _js='()=>{refresh_style_localization();}') From e72850de70dadc0fe69c0771829c1e5f7f9a62a5 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 24 Dec 2023 13:09:20 +0100 Subject: [PATCH 4/5] download missing models from preset --- modules/config.py | 6 +++--- modules/meta_parser.py | 2 +- webui.py | 12 ++++++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/config.py b/modules/config.py index 336092fa..1b2fdba9 100644 --- a/modules/config.py +++ b/modules/config.py @@ -364,9 +364,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 c5ed176b..ebd72eb4 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -170,4 +170,4 @@ def parse_meta_from_preset(preset_content): 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/webui.py b/webui.py index 00396cbe..c849568f 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 @@ -465,7 +466,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, @@ -491,7 +499,7 @@ 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();}') From d79a849857393548ec3b8e6935f3dac7ed518ea8 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 24 Dec 2023 13:09:49 +0100 Subject: [PATCH 5/5] set default refiner to "None" in preset realistic --- presets/realistic.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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": [ [