move load/save/clear buttons to accordion

This commit is contained in:
Chris Malone 2025-04-10 04:22:35 +10:00
parent 016e57c253
commit 452d246c88

49
wgp.py
View File

@ -3479,7 +3479,7 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
with gr.Row(): with gr.Row():
onemore_btn = gr.Button("One More Sample Please !") onemore_btn = gr.Button("One More Sample Please !")
abort_btn = gr.Button("Abort") abort_btn = gr.Button("Abort")
with gr.Accordion("Queue Management", open=False) as queue_accordion:
queue_df = gr.DataFrame( queue_df = gr.DataFrame(
headers=["Qty","Prompt", "Length","Steps","", "", "", "", ""], headers=["Qty","Prompt", "Length","Steps","", "", "", "", ""],
datatype=[ "str","markdown","str", "markdown", "markdown", "markdown", "str", "str", "str"], datatype=[ "str","markdown","str", "markdown", "markdown", "markdown", "str", "str", "str"],
@ -3489,14 +3489,14 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
wrap=True, wrap=True,
value=[], value=[],
line_breaks= True, line_breaks= True,
visible= False, visible= True,
elem_id="queue_df" elem_id="queue_df"
) )
with gr.Row(): with gr.Row():
queue_zip_base64_output = gr.Text(visible=False) queue_zip_base64_output = gr.Text(visible=False)
save_queue_btn = gr.DownloadButton("Save Queue", size="sm") save_queue_btn = gr.DownloadButton("Save Queue", size="sm")
load_queue_btn = gr.UploadButton("Load Queue", file_types=[".zip"], size="sm") load_queue_btn = gr.UploadButton("Load Queue", file_types=[".zip"], size="sm")
clear_queue_btn = gr.Button("Clear Queue", size="sm", variant="stop") clear_queue_btn = gr.Button("Clear Queue", size="sm", variant="stop")
trigger_zip_download_js = """ trigger_zip_download_js = """
(base64String) => { (base64String) => {
if (!base64String) { if (!base64String) {
@ -3544,9 +3544,9 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
inputs=[load_queue_btn, state], inputs=[load_queue_btn, state],
outputs=[queue_df] outputs=[queue_df]
).then( ).then(
fn=lambda s: gr.update(visible=bool(get_gen_info(s).get("queue",[]))), fn=lambda s: (gr.update(visible=bool(get_gen_info(s).get("queue",[]))), gr.Accordion(open=True)) if bool(get_gen_info(s).get("queue",[])) else (gr.update(visible=False), gr.update()),
inputs=[state], inputs=[state],
outputs=[current_gen_column] outputs=[current_gen_column, queue_accordion]
) )
clear_queue_btn.click( clear_queue_btn.click(
@ -3554,9 +3554,9 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
inputs=[state], inputs=[state],
outputs=[queue_df] outputs=[queue_df]
).then( ).then(
fn=lambda: gr.update(visible=False), fn=lambda: (gr.update(visible=False), gr.Accordion(open=False)),
inputs=None, inputs=None,
outputs=[current_gen_column] outputs=[current_gen_column, queue_accordion]
) )
extra_inputs = prompt_vars + [wizard_prompt, wizard_variables_var, wizard_prompt_activated_var, video_prompt_column, image_prompt_column, extra_inputs = prompt_vars + [wizard_prompt, wizard_variables_var, wizard_prompt_activated_var, video_prompt_column, image_prompt_column,
@ -3639,6 +3639,10 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
).then(finalize_generation, ).then(finalize_generation,
inputs= [state], inputs= [state],
outputs= [output, abort_btn, generate_btn, add_to_queue_btn, current_gen_column, gen_info] outputs= [output, abort_btn, generate_btn, add_to_queue_btn, current_gen_column, gen_info]
).then(
fn=lambda s: gr.Accordion(open=False) if len(get_gen_info(s).get("queue", [])) <= 1 else gr.update(),
inputs=[state],
outputs=[queue_accordion]
).then(unload_model_if_needed, ).then(unload_model_if_needed,
inputs= [state], inputs= [state],
outputs= [] outputs= []
@ -3653,6 +3657,10 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
).then(fn=process_prompt_and_add_tasks, ).then(fn=process_prompt_and_add_tasks,
inputs = [state, model_choice], inputs = [state, model_choice],
outputs=queue_df outputs=queue_df
).then(
fn=lambda s: gr.Accordion(open=True) if len(get_gen_info(s).get("queue", [])) > 1 else gr.update(), # Expand if queue has items (len > 1 assumes placeholder)
inputs=[state],
outputs=[queue_accordion]
).then( ).then(
fn=update_status, fn=update_status,
inputs = [state], inputs = [state],
@ -3670,7 +3678,7 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
gen_info, gen_info,
prompt, wizard_prompt, wizard_prompt_activated_var, wizard_variables_var, prompt, wizard_prompt, wizard_prompt_activated_var, wizard_variables_var,
prompt_column_advanced, prompt_column_wizard, prompt_column_wizard_vars, prompt_column_advanced, prompt_column_wizard, prompt_column_wizard_vars,
advanced_row, image_prompt_column, video_prompt_column, advanced_row, image_prompt_column, video_prompt_column, queue_accordion,
*prompt_vars *prompt_vars
) )
@ -4153,7 +4161,7 @@ def create_demo():
gen_info, gen_info,
prompt, wizard_prompt, wizard_prompt_activated_var, wizard_variables_var, prompt, wizard_prompt, wizard_prompt_activated_var, wizard_variables_var,
prompt_column_advanced, prompt_column_wizard, prompt_column_wizard_vars, prompt_column_advanced, prompt_column_wizard, prompt_column_wizard_vars,
advanced_row, image_prompt_column, video_prompt_column, advanced_row, image_prompt_column, video_prompt_column, queue_accordion,
*prompt_vars_outputs *prompt_vars_outputs
) = generate_video_tab(model_choice=model_choice, header=header) ) = generate_video_tab(model_choice=model_choice, header=header)
with gr.Tab("Informations"): with gr.Tab("Informations"):
@ -4170,7 +4178,8 @@ def create_demo():
def run_autoload_and_prepare_ui(current_state): def run_autoload_and_prepare_ui(current_state):
df_update, loaded_flag, modified_state = autoload_queue(current_state) df_update, loaded_flag, modified_state = autoload_queue(current_state)
should_start_processing = loaded_flag should_start_processing = loaded_flag
return df_update, gr.update(visible=loaded_flag), should_start_processing, modified_state accordion_update = gr.Accordion(open=True) if loaded_flag else gr.update()
return df_update, gr.update(visible=loaded_flag), accordion_update, should_start_processing, modified_state
def start_processing_if_needed(should_start, current_state): def start_processing_if_needed(should_start, current_state):
if not isinstance(current_state, dict) or 'gen' not in current_state: if not isinstance(current_state, dict) or 'gen' not in current_state:
@ -4179,18 +4188,20 @@ def create_demo():
if should_start: if should_start:
yield from process_tasks(current_state) yield from process_tasks(current_state)
else: else:
yield "Autoload complete. Processing not started." yield None
def finalize_generation_with_state(current_state): def finalize_generation_with_state(current_state):
if not isinstance(current_state, dict) or 'gen' not in current_state: if not isinstance(current_state, dict) or 'gen' not in current_state:
return gr.update(), gr.update(interactive=True), gr.update(visible=True), gr.update(visible=False), gr.update(visible=False), gr.update(visible=False, value=""), current_state return gr.update(), gr.update(interactive=True), gr.update(visible=True), gr.update(visible=False), gr.update(visible=False), gr.update(visible=False, value=""), gr.update(), current_state
gallery_update, abort_btn_update, gen_btn_update, add_queue_btn_update, current_gen_col_update, gen_info_update = finalize_generation(current_state) gallery_update, abort_btn_update, gen_btn_update, add_queue_btn_update, current_gen_col_update, gen_info_update = finalize_generation(current_state)
return gallery_update, abort_btn_update, gen_btn_update, add_queue_btn_update, current_gen_col_update, gen_info_update, current_state accordion_update = gr.Accordion(open=False) if len(get_gen_info(current_state).get("queue", [])) <= 1 else gr.update()
return gallery_update, abort_btn_update, gen_btn_update, add_queue_btn_update, current_gen_col_update, gen_info_update, accordion_update, current_state
demo.load( demo.load(
fn=run_autoload_and_prepare_ui, fn=run_autoload_and_prepare_ui,
inputs=[state], inputs=[state],
outputs=[queue_df, current_gen_column, should_start_flag, state] outputs=[queue_df, current_gen_column, queue_accordion, should_start_flag, state]
).then( ).then(
fn=start_processing_if_needed, fn=start_processing_if_needed,
inputs=[should_start_flag, state], inputs=[should_start_flag, state],
@ -4199,7 +4210,7 @@ def create_demo():
).then( ).then(
fn=finalize_generation_with_state, fn=finalize_generation_with_state,
inputs=[state], inputs=[state],
outputs=[output, abort_btn, generate_btn, add_to_queue_btn, current_gen_column, gen_info, state], outputs=[output, abort_btn, generate_btn, add_to_queue_btn, current_gen_column, gen_info, queue_accordion, state],
trigger_mode="always_last" trigger_mode="always_last"
) )