diff options
author | AUTOMATIC <16777216c@gmail.com> | 2022-09-03 14:21:15 +0000 |
---|---|---|
committer | AUTOMATIC <16777216c@gmail.com> | 2022-09-03 14:21:15 +0000 |
commit | f40617d6c4e366773677baa8d7f4114ba2893282 (patch) | |
tree | 7e5e1810017d11133c4294190124ad74e1b2d961 /modules/ui.py | |
parent | 345028099d893f8a66726cfd13627d8cc1bcc724 (diff) | |
download | stable-diffusion-webui-gfx803-f40617d6c4e366773677baa8d7f4114ba2893282.tar.gz stable-diffusion-webui-gfx803-f40617d6c4e366773677baa8d7f4114ba2893282.tar.bz2 stable-diffusion-webui-gfx803-f40617d6c4e366773677baa8d7f4114ba2893282.zip |
support for scripts
Diffstat (limited to 'modules/ui.py')
-rw-r--r-- | modules/ui.py | 60 |
1 files changed, 25 insertions, 35 deletions
diff --git a/modules/ui.py b/modules/ui.py index 5223179f..c6ded678 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -12,6 +12,7 @@ from PIL import Image import gradio as gr
import gradio.utils
+import gradio.routes
from modules.paths import script_path
from modules.shared import opts, cmd_opts
@@ -19,6 +20,7 @@ import modules.shared as shared from modules.sd_samplers import samplers, samplers_for_img2img
import modules.gfpgan_model as gfpgan
import modules.realesrgan_model as realesrgan
+import modules.scripts
# this is a fix for Windows users. Without it, javascript files will be served with text/html content-type and the bowser will not show any UI
mimetypes.init()
@@ -131,7 +133,7 @@ def wrap_gradio_call(func): return f
-def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo):
+def create_ui(txt2img, img2img, run_extras, run_pnginfo):
with gr.Blocks(analytics_enabled=False) as txt2img_interface:
with gr.Row():
@@ -145,8 +147,7 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): sampler_index = gr.Radio(label='Sampling method', elem_id="txt2img_sampling", choices=[x.name for x in samplers], value=samplers[0].name, type="index")
with gr.Row():
- use_GFPGAN = gr.Checkbox(label='GFPGAN', value=False, visible=gfpgan.have_gfpgan)
- prompt_matrix = gr.Checkbox(label='Prompt matrix', value=False)
+ use_gfpgan = gr.Checkbox(label='GFPGAN', value=False, visible=gfpgan.have_gfpgan)
with gr.Row():
batch_count = gr.Slider(minimum=1, maximum=cmd_opts.max_batch_count, step=1, label='Batch count', value=1)
@@ -160,7 +161,8 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): seed = gr.Number(label='Seed', value=-1)
- code = gr.Textbox(label="Python script", visible=cmd_opts.allow_code, lines=1)
+ with gr.Group():
+ custom_inputs = modules.scripts.setup_ui(is_img2img=False)
with gr.Column(variant='panel'):
with gr.Group():
@@ -185,16 +187,14 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): negative_prompt,
steps,
sampler_index,
- use_GFPGAN,
- prompt_matrix,
+ use_gfpgan,
batch_count,
batch_size,
cfg_scale,
seed,
height,
width,
- code
- ],
+ ] + custom_inputs,
outputs=[
txt2img_gallery,
generation_info,
@@ -244,8 +244,7 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): inpainting_fill = gr.Radio(label='Msked content', choices=['fill', 'original', 'latent noise', 'latent nothing'], value='fill', type="index", visible=False)
with gr.Row():
- use_GFPGAN = gr.Checkbox(label='GFPGAN', value=False, visible=gfpgan.have_gfpgan)
- prompt_matrix = gr.Checkbox(label='Prompt matrix', value=False)
+ use_gfpgan = gr.Checkbox(label='GFPGAN', value=False, visible=gfpgan.have_gfpgan)
inpaint_full_res = gr.Checkbox(label='Inpaint at full resolution', value=True, visible=False)
with gr.Row():
@@ -266,6 +265,10 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): seed = gr.Number(label='Seed', value=-1)
+ with gr.Group():
+ custom_inputs = modules.scripts.setup_ui(is_img2img=False)
+
+
with gr.Column(variant='panel'):
with gr.Group():
img2img_gallery = gr.Gallery(label='Output', elem_id='img2img_gallery')
@@ -291,11 +294,10 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): init_img_with_mask: gr_show(is_inpaint),
mask_blur: gr_show(is_inpaint),
inpainting_fill: gr_show(is_inpaint),
- prompt_matrix: gr_show(is_classic),
batch_count: gr_show(not is_upscale),
batch_size: gr_show(not is_loopback),
sd_upscale_upscaler_name: gr_show(is_upscale),
- sd_upscale_overlap:gr_show(is_upscale),
+ sd_upscale_overlap: gr_show(is_upscale),
inpaint_full_res: gr_show(is_inpaint),
}
@@ -307,7 +309,6 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): init_img_with_mask,
mask_blur,
inpainting_fill,
- prompt_matrix,
batch_count,
batch_size,
sd_upscale_upscaler_name,
@@ -326,8 +327,7 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): sampler_index,
mask_blur,
inpainting_fill,
- use_GFPGAN,
- prompt_matrix,
+ use_gfpgan,
switch_mode,
batch_count,
batch_size,
@@ -340,7 +340,7 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): sd_upscale_upscaler_name,
sd_upscale_overlap,
inpaint_full_res,
- ],
+ ] + custom_inputs,
outputs=[
img2img_gallery,
generation_info,
@@ -384,9 +384,6 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): outputs=[init_img_with_mask],
)
-
-
-
with gr.Blocks(analytics_enabled=False) as extras_interface:
with gr.Row().style(equal_height=False):
with gr.Column(variant='panel'):
@@ -420,7 +417,6 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): submit.click(**extras_args)
-
send_to_extras.click(
fn=lambda x: image_from_url_text(x),
_js="extract_image_from_gallery",
@@ -435,7 +431,6 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): outputs=[image],
)
-
pnginfo_interface = gr.Interface(
wrap_gradio_call(run_pnginfo),
inputs=[
@@ -450,7 +445,6 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): analytics_enabled=False,
)
-
def create_setting_component(key):
def fun():
return opts.data[key] if key in opts.data else opts.data_labels[key].default
@@ -520,20 +514,16 @@ def create_ui(opts, cmd_opts, txt2img, img2img, run_extras, run_pnginfo): return demo
-with open(os.path.join(script_path, "script.js"), "r", encoding="utf8") as file:
- javascript = file.read()
-
-def inject_gradio_html(javascript):
- import gradio.routes
+with open(os.path.join(script_path, "script.js"), "r", encoding="utf8") as jsfile:
+ javascript = jsfile.read()
- def template_response(*args, **kwargs):
- res = gradio_routes_templates_response(*args, **kwargs)
- res.body = res.body.replace(b'</head>', f'<script>{javascript}</script></head>'.encode("utf8"))
- res.init_headers()
- return res
- gradio_routes_templates_response = gradio.routes.templates.TemplateResponse
- gradio.routes.templates.TemplateResponse = template_response
+def template_response(*args, **kwargs):
+ res = gradio_routes_templates_response(*args, **kwargs)
+ res.body = res.body.replace(b'</head>', f'<script>{javascript}</script></head>'.encode("utf8"))
+ res.init_headers()
+ return res
-inject_gradio_html(javascript)
+gradio_routes_templates_response = gradio.routes.templates.TemplateResponse
+gradio.routes.templates.TemplateResponse = template_response
|