diff options
author | Junpeng Qiu <naminoqiu@gmail.com> | 2022-10-16 04:42:52 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2022-10-16 07:51:06 +0000 |
commit | 36a0ba357ab0742c3c4a28437b68fb29a235afbe (patch) | |
tree | f8ecdb176df89a55d623521fc23fe0ff283f4ff7 /modules/ui.py | |
parent | bd4f0fb9d9df72899c2c3a1c2bc3580bf26bb685 (diff) | |
download | stable-diffusion-webui-gfx803-36a0ba357ab0742c3c4a28437b68fb29a235afbe.tar.gz stable-diffusion-webui-gfx803-36a0ba357ab0742c3c4a28437b68fb29a235afbe.tar.bz2 stable-diffusion-webui-gfx803-36a0ba357ab0742c3c4a28437b68fb29a235afbe.zip |
Added Refresh Button to embedding and hypernetwork names in Train Tab
Problem
everytime I modified pt files in embedding_dir or hypernetwork_dir, I
need to restart webui to have the new files shown in the dropdown of
Train Tab
Solution
refactored create_refresh_button out of create_setting_component so we
can use this method to create button next to gr.Dropdowns of embedding
name and hypernetworks
Extra Modification
hypernetwork pt are now sorted in alphabetic order
Diffstat (limited to 'modules/ui.py')
-rw-r--r-- | modules/ui.py | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/modules/ui.py b/modules/ui.py index 10bdf121..ee3d0248 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -568,6 +568,24 @@ def create_ui(wrap_gradio_gpu_call): import modules.img2img
import modules.txt2img
+ def create_refresh_button(refresh_component, refresh_method, refreshed_args, elem_id):
+ def refresh():
+ refresh_method()
+ args = refreshed_args() if callable(refreshed_args) else refreshed_args
+
+ for k, v in args.items():
+ setattr(refresh_component, k, v)
+
+ return gr.update(**(args or {}))
+
+ refresh_button = gr.Button(value=refresh_symbol, elem_id=elem_id)
+ refresh_button.click(
+ fn = refresh,
+ inputs = [],
+ outputs = [refresh_component]
+ )
+ return refresh_button
+
with gr.Blocks(analytics_enabled=False) as txt2img_interface:
txt2img_prompt, roll, txt2img_prompt_style, txt2img_negative_prompt, txt2img_prompt_style2, submit, _, _, txt2img_prompt_style_apply, txt2img_save_style, txt2img_paste, token_counter, token_button = create_toprow(is_img2img=False)
dummy_component = gr.Label(visible=False)
@@ -1205,8 +1223,12 @@ def create_ui(wrap_gradio_gpu_call): with gr.Tab(label="Train"):
gr.HTML(value="<p style='margin-bottom: 0.7em'>Train an embedding; must specify a directory with a set of 1:1 ratio images</p>")
- train_embedding_name = gr.Dropdown(label='Embedding', choices=sorted(sd_hijack.model_hijack.embedding_db.word_embeddings.keys()))
- train_hypernetwork_name = gr.Dropdown(label='Hypernetwork', choices=[x for x in shared.hypernetworks.keys()])
+ with gr.Row():
+ train_embedding_name = gr.Dropdown(label='Embedding', choices=sorted(sd_hijack.model_hijack.embedding_db.word_embeddings.keys()))
+ create_refresh_button(train_embedding_name, sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings, lambda: {"choices": sorted(sd_hijack.model_hijack.embedding_db.word_embeddings.keys())}, "refresh_train_embedding_name")
+ with gr.Row():
+ train_hypernetwork_name = gr.Dropdown(label='Hypernetwork', choices=[x for x in shared.hypernetworks.keys()])
+ create_refresh_button(train_hypernetwork_name, shared.reload_hypernetworks, lambda: {"choices": sorted([x for x in shared.hypernetworks.keys()])}, "refresh_train_hypernetwork_name")
learn_rate = gr.Textbox(label='Learning rate', placeholder="Learning rate", value="0.005")
batch_size = gr.Number(label='Batch size', value=1, precision=0)
dataset_directory = gr.Textbox(label='Dataset directory', placeholder="Path to directory with input images")
@@ -1357,26 +1379,11 @@ def create_ui(wrap_gradio_gpu_call): if info.refresh is not None:
if is_quicksettings:
res = comp(label=info.label, value=fun, **(args or {}))
- refresh_button = gr.Button(value=refresh_symbol, elem_id="refresh_"+key)
+ refresh_button = create_refresh_button(res, info.refresh, info.component_args, "refresh_" + key)
else:
with gr.Row(variant="compact"):
res = comp(label=info.label, value=fun, **(args or {}))
- refresh_button = gr.Button(value=refresh_symbol, elem_id="refresh_" + key)
-
- def refresh():
- info.refresh()
- refreshed_args = info.component_args() if callable(info.component_args) else info.component_args
-
- for k, v in refreshed_args.items():
- setattr(res, k, v)
-
- return gr.update(**(refreshed_args or {}))
-
- refresh_button.click(
- fn=refresh,
- inputs=[],
- outputs=[res],
- )
+ refresh_button = create_refresh_button(res, info.refresh, info.component_args, "refresh_" + key)
else:
res = comp(label=info.label, value=fun, **(args or {}))
|