| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| from .args import DeforumOutputArgs, get_component_names, get_settings_component_names |
| from modules.shared import opts, state |
| from modules.ui import create_output_panel, wrap_gradio_call |
| from webui import wrap_gradio_gpu_call |
| from .run_deforum import run_deforum |
| from .settings import save_settings, load_all_settings, load_video_settings |
| from .general_utils import get_deforum_version |
| from .ui_left import setup_deforum_left_side_ui |
| from scripts.deforum_extend_paths import deforum_sys_extend |
| import gradio as gr |
|
|
| def on_ui_tabs(): |
| |
| deforum_sys_extend() |
| |
| i1_store_backup = f"<p style=\"text-align:center;font-weight:bold;margin-bottom:0em\">Deforum extension for auto1111 — version 3.0 | Git commit: {get_deforum_version()}</p>" |
| i1_store = i1_store_backup |
|
|
| with gr.Blocks(analytics_enabled=False) as deforum_interface: |
| components = {} |
| dummy_component = gr.Label(visible=False) |
| with gr.Row(elem_id='deforum_progress_row').style(equal_height=False, variant='compact'): |
| with gr.Column(scale=1, variant='panel'): |
| |
| components = setup_deforum_left_side_ui() |
| with gr.Column(scale=1, variant='compact'): |
| with gr.Row(variant='compact'): |
| btn = gr.Button("Click here after the generation to show the video") |
| components['btn'] = btn |
| close_btn = gr.Button("Close the video", visible=False) |
| with gr.Row(variant='compact'): |
| i1 = gr.HTML(i1_store, elem_id='deforum_header') |
| components['i1'] = i1 |
| def show_vid(): |
| from .run_deforum import last_vid_data |
| return { |
| i1: gr.update(value=last_vid_data, visible=True), |
| close_btn: gr.update(visible=True), |
| btn: gr.update(value="Update the video", visible=True), |
| } |
| btn.click( |
| fn=show_vid, |
| inputs=[], |
| outputs=[i1, close_btn, btn], |
| ) |
| def close_vid(): |
| return { |
| i1: gr.update(value=i1_store_backup, visible=True), |
| close_btn: gr.update(visible=False), |
| btn: gr.update(value="Click here after the generation to show the video", visible=True), |
| } |
| |
| close_btn.click( |
| fn=close_vid, |
| inputs=[], |
| outputs=[i1, close_btn, btn], |
| ) |
| id_part = 'deforum' |
| with gr.Row(elem_id=f"{id_part}_generate_box", variant='compact'): |
| skip = gr.Button('Pause/Resume', elem_id=f"{id_part}_skip", visible=False) |
| interrupt = gr.Button('Interrupt', elem_id=f"{id_part}_interrupt", visible=True) |
| submit = gr.Button('Generate', elem_id=f"{id_part}_generate", variant='primary') |
|
|
| skip.click( |
| fn=lambda: state.skip(), |
| inputs=[], |
| outputs=[], |
| ) |
|
|
| interrupt.click( |
| fn=lambda: state.interrupt(), |
| inputs=[], |
| outputs=[], |
| ) |
| |
| deforum_gallery, generation_info, html_info, _ = create_output_panel("deforum", opts.outdir_img2img_samples) |
|
|
| with gr.Row(variant='compact'): |
| settings_path = gr.Textbox("deforum_settings.txt", elem_id='deforum_settings_path', label="Settings File", info="settings file path can be relative to webui folder OR full - absolute") |
| with gr.Row(variant='compact'): |
| save_settings_btn = gr.Button('Save Settings', elem_id='deforum_save_settings_btn') |
| load_settings_btn = gr.Button('Load All Settings', elem_id='deforum_load_settings_btn') |
| load_video_settings_btn = gr.Button('Load Video Settings', elem_id='deforum_load_video_settings_btn') |
|
|
| component_list = [components[name] for name in get_component_names()] |
|
|
| submit.click( |
| fn=wrap_gradio_gpu_call(run_deforum), |
| _js="submit_deforum", |
| inputs=[dummy_component, dummy_component] + component_list, |
| outputs=[ |
| deforum_gallery, |
| components["resume_timestring"], |
| generation_info, |
| html_info |
| ], |
| ) |
| |
| settings_component_list = [components[name] for name in get_settings_component_names()] |
| video_settings_component_list = [components[name] for name in list(DeforumOutputArgs().keys())] |
|
|
| save_settings_btn.click( |
| fn=wrap_gradio_call(save_settings), |
| inputs=[settings_path] + settings_component_list + video_settings_component_list, |
| outputs=[], |
| ) |
| |
| load_settings_btn.click( |
| fn=wrap_gradio_call(lambda *args, **kwargs: load_all_settings(*args, ui_launch=False, **kwargs)), |
| inputs=[settings_path] + settings_component_list, |
| outputs=settings_component_list, |
| ) |
|
|
| load_video_settings_btn.click( |
| fn=wrap_gradio_call(load_video_settings), |
| inputs=[settings_path] + video_settings_component_list, |
| outputs=video_settings_component_list, |
| ) |
| |
| |
| def trigger_load_general_settings(): |
| print("Loading general settings...") |
| wrapped_fn = wrap_gradio_call(lambda *args, **kwargs: load_all_settings(*args, ui_launch=True, **kwargs)) |
| inputs = [settings_path.value] + [component.value for component in settings_component_list] |
| outputs = settings_component_list |
| updated_values = wrapped_fn(*inputs, *outputs)[0] |
| settings_component_name_to_obj = {name: component for name, component in zip(get_settings_component_names(), settings_component_list)} |
| for key, value in updated_values.items(): |
| settings_component_name_to_obj[key].value = value['value'] |
| |
| if opts.data.get("deforum_enable_persistent_settings", False): |
| trigger_load_general_settings() |
| |
| return [(deforum_interface, "Deforum", "deforum_interface")] |