Commit ·
ced4e9c
1
Parent(s): c309a1f
gr.info based quit countdown timer
Browse files
wgp.py
CHANGED
|
@@ -732,11 +732,17 @@ def quit_application():
|
|
| 732 |
import signal
|
| 733 |
os.kill(os.getpid(), signal.SIGINT)
|
| 734 |
|
| 735 |
-
def
|
| 736 |
-
return gr.update(visible=False), gr.update(visible=True)
|
| 737 |
|
| 738 |
-
def
|
| 739 |
-
return gr.update(visible=True), gr.update(visible=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 740 |
|
| 741 |
def autosave_queue():
|
| 742 |
global global_queue_ref
|
|
@@ -994,7 +1000,6 @@ def create_html_progress_bar(percentage=0.0, text="Idle", is_idle=True):
|
|
| 994 |
"""
|
| 995 |
return html
|
| 996 |
|
| 997 |
-
|
| 998 |
def update_generation_status(html_content):
|
| 999 |
if(html_content):
|
| 1000 |
return gr.update(value=html_content)
|
|
@@ -3625,51 +3630,46 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
|
|
| 3625 |
clear_queue_btn = gr.Button("Clear Queue", size="sm", variant="stop")
|
| 3626 |
quit_button = gr.Button("Save and Quit", size="sm", variant="secondary")
|
| 3627 |
with gr.Row(visible=False) as quit_confirmation_row:
|
| 3628 |
-
gr.
|
| 3629 |
-
|
| 3630 |
-
cancel_quit_button = gr.Button("Cancel Quit", size="sm", variant="secondary")
|
| 3631 |
hidden_force_quit_trigger = gr.Button("force_quit", visible=False, elem_id="force_quit_btn_hidden")
|
|
|
|
|
|
|
| 3632 |
|
| 3633 |
start_quit_timer_js = """
|
| 3634 |
() => {
|
| 3635 |
function findAndClickGradioButton(elemId) {
|
| 3636 |
const gradioApp = document.querySelector('gradio-app') || document;
|
| 3637 |
const button = gradioApp.querySelector(`#${elemId}`);
|
| 3638 |
-
if (button) {
|
| 3639 |
-
button.click();
|
| 3640 |
-
}
|
| 3641 |
}
|
| 3642 |
-
|
| 3643 |
-
|
| 3644 |
-
|
| 3645 |
-
|
| 3646 |
-
|
| 3647 |
-
|
| 3648 |
-
|
| 3649 |
-
|
| 3650 |
-
|
| 3651 |
-
|
| 3652 |
-
|
| 3653 |
-
|
| 3654 |
-
|
| 3655 |
-
|
| 3656 |
-
}, 1000);
|
| 3657 |
}
|
|
|
|
|
|
|
| 3658 |
}
|
| 3659 |
"""
|
| 3660 |
|
| 3661 |
cancel_quit_timer_js = """
|
| 3662 |
() => {
|
| 3663 |
-
if (window.
|
| 3664 |
-
clearTimeout(window.
|
| 3665 |
-
window.
|
| 3666 |
-
|
| 3667 |
-
if(window.quitCountdownInterval) {
|
| 3668 |
-
clearInterval(window.quitCountdownInterval);
|
| 3669 |
-
window.quitCountdownInterval = null;
|
| 3670 |
}
|
| 3671 |
-
const label = document.getElementById('quit_timer_label');
|
| 3672 |
-
if(label) { label.innerText = 'Quit cancelled.'; }
|
| 3673 |
}
|
| 3674 |
"""
|
| 3675 |
|
|
@@ -3705,10 +3705,15 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
|
|
| 3705 |
}
|
| 3706 |
"""
|
| 3707 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3708 |
quit_button.click(
|
| 3709 |
-
fn=
|
| 3710 |
inputs=[],
|
| 3711 |
-
outputs=[quit_button, quit_confirmation_row]
|
| 3712 |
).then(
|
| 3713 |
fn=None, inputs=None, outputs=None, js=start_quit_timer_js
|
| 3714 |
)
|
|
@@ -3717,12 +3722,14 @@ def generate_video_tab(update_form = False, state_dict = None, ui_defaults = Non
|
|
| 3717 |
fn=quit_application,
|
| 3718 |
inputs=[],
|
| 3719 |
outputs=[]
|
|
|
|
|
|
|
| 3720 |
)
|
| 3721 |
|
| 3722 |
cancel_quit_button.click(
|
| 3723 |
-
fn=
|
| 3724 |
inputs=[],
|
| 3725 |
-
outputs=[quit_button, quit_confirmation_row]
|
| 3726 |
).then(
|
| 3727 |
fn=None, inputs=None, outputs=None, js=cancel_quit_timer_js
|
| 3728 |
)
|
|
|
|
| 732 |
import signal
|
| 733 |
os.kill(os.getpid(), signal.SIGINT)
|
| 734 |
|
| 735 |
+
def start_quit_process():
|
| 736 |
+
return 5, gr.update(visible=False), gr.update(visible=True)
|
| 737 |
|
| 738 |
+
def cancel_quit_process():
|
| 739 |
+
return -1, gr.update(visible=True), gr.update(visible=False)
|
| 740 |
+
|
| 741 |
+
def show_countdown_info_from_state(current_value: int):
|
| 742 |
+
if current_value > 0:
|
| 743 |
+
gr.Info(f"Quitting in {current_value}...")
|
| 744 |
+
return current_value - 1
|
| 745 |
+
return current_value
|
| 746 |
|
| 747 |
def autosave_queue():
|
| 748 |
global global_queue_ref
|
|
|
|
| 1000 |
"""
|
| 1001 |
return html
|
| 1002 |
|
|
|
|
| 1003 |
def update_generation_status(html_content):
|
| 1004 |
if(html_content):
|
| 1005 |
return gr.update(value=html_content)
|
|
|
|
| 3630 |
clear_queue_btn = gr.Button("Clear Queue", size="sm", variant="stop")
|
| 3631 |
quit_button = gr.Button("Save and Quit", size="sm", variant="secondary")
|
| 3632 |
with gr.Row(visible=False) as quit_confirmation_row:
|
| 3633 |
+
confirm_quit_button = gr.Button("Confirm", elem_id="comfirm_quit_btn_hidden", size="sm", variant="stop")
|
| 3634 |
+
cancel_quit_button = gr.Button("Cancel", size="sm", variant="secondary")
|
|
|
|
| 3635 |
hidden_force_quit_trigger = gr.Button("force_quit", visible=False, elem_id="force_quit_btn_hidden")
|
| 3636 |
+
hidden_countdown_state = gr.Number(value=-1, visible=False, elem_id="hidden_countdown_state_num")
|
| 3637 |
+
single_hidden_trigger_btn = gr.Button("trigger_countdown", visible=False, elem_id="trigger_info_single_btn")
|
| 3638 |
|
| 3639 |
start_quit_timer_js = """
|
| 3640 |
() => {
|
| 3641 |
function findAndClickGradioButton(elemId) {
|
| 3642 |
const gradioApp = document.querySelector('gradio-app') || document;
|
| 3643 |
const button = gradioApp.querySelector(`#${elemId}`);
|
| 3644 |
+
if (button) { button.click(); }
|
|
|
|
|
|
|
| 3645 |
}
|
| 3646 |
+
|
| 3647 |
+
if (window.quitCountdownTimeoutId) clearTimeout(window.quitCountdownTimeoutId);
|
| 3648 |
+
|
| 3649 |
+
let js_click_count = 0;
|
| 3650 |
+
const max_clicks = 5;
|
| 3651 |
+
|
| 3652 |
+
function countdownStep() {
|
| 3653 |
+
if (js_click_count < max_clicks) {
|
| 3654 |
+
findAndClickGradioButton('trigger_info_single_btn');
|
| 3655 |
+
js_click_count++;
|
| 3656 |
+
window.quitCountdownTimeoutId = setTimeout(countdownStep, 1000);
|
| 3657 |
+
} else {
|
| 3658 |
+
findAndClickGradioButton('force_quit_btn_hidden');
|
| 3659 |
+
}
|
|
|
|
| 3660 |
}
|
| 3661 |
+
|
| 3662 |
+
countdownStep();
|
| 3663 |
}
|
| 3664 |
"""
|
| 3665 |
|
| 3666 |
cancel_quit_timer_js = """
|
| 3667 |
() => {
|
| 3668 |
+
if (window.quitCountdownTimeoutId) {
|
| 3669 |
+
clearTimeout(window.quitCountdownTimeoutId);
|
| 3670 |
+
window.quitCountdownTimeoutId = null;
|
| 3671 |
+
console.log("Quit countdown cancelled (single trigger).");
|
|
|
|
|
|
|
|
|
|
| 3672 |
}
|
|
|
|
|
|
|
| 3673 |
}
|
| 3674 |
"""
|
| 3675 |
|
|
|
|
| 3705 |
}
|
| 3706 |
"""
|
| 3707 |
|
| 3708 |
+
single_hidden_trigger_btn.click(
|
| 3709 |
+
fn=show_countdown_info_from_state,
|
| 3710 |
+
inputs=[hidden_countdown_state],
|
| 3711 |
+
outputs=[hidden_countdown_state]
|
| 3712 |
+
)
|
| 3713 |
quit_button.click(
|
| 3714 |
+
fn=start_quit_process,
|
| 3715 |
inputs=[],
|
| 3716 |
+
outputs=[hidden_countdown_state, quit_button, quit_confirmation_row]
|
| 3717 |
).then(
|
| 3718 |
fn=None, inputs=None, outputs=None, js=start_quit_timer_js
|
| 3719 |
)
|
|
|
|
| 3722 |
fn=quit_application,
|
| 3723 |
inputs=[],
|
| 3724 |
outputs=[]
|
| 3725 |
+
).then(
|
| 3726 |
+
fn=None, inputs=None, outputs=None, js=cancel_quit_timer_js
|
| 3727 |
)
|
| 3728 |
|
| 3729 |
cancel_quit_button.click(
|
| 3730 |
+
fn=cancel_quit_process,
|
| 3731 |
inputs=[],
|
| 3732 |
+
outputs=[hidden_countdown_state, quit_button, quit_confirmation_row]
|
| 3733 |
).then(
|
| 3734 |
fn=None, inputs=None, outputs=None, js=cancel_quit_timer_js
|
| 3735 |
)
|