Add button to skip the current iteration

This commit is contained in:
Trung Ngo 2022-10-04 22:56:30 -05:00 committed by AUTOMATIC1111
parent 45cc0ce3c4
commit 786d9f63aa
8 changed files with 49 additions and 8 deletions

View file

@ -32,6 +32,10 @@ def process_batch(p, input_dir, output_dir, args):
for i, image in enumerate(images):
state.job = f"{i+1} out of {len(images)}"
if state.skipped:
state.skipped = False
state.interrupted = False
continue
if state.interrupted:
break

View file

@ -355,6 +355,10 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
state.job_count = p.n_iter
for n in range(p.n_iter):
if state.skipped:
state.skipped = False
state.interrupted = False
if state.interrupted:
break

View file

@ -84,6 +84,7 @@ def selected_hypernetwork():
class State:
skipped = False
interrupted = False
job = ""
job_no = 0
@ -96,6 +97,10 @@ class State:
current_image_sampling_step = 0
textinfo = None
def skip(self):
self.skipped = True
self.interrupted = True
def interrupt(self):
self.interrupted = True

View file

@ -191,6 +191,7 @@ def wrap_gradio_call(func, extra_outputs=None):
# last item is always HTML
res[-1] += f"<div class='performance'><p class='time'>Time taken: <wbr>{elapsed_text}</p>{vram_html}</div>"
shared.state.skipped = False
shared.state.interrupted = False
shared.state.job_count = 0
@ -411,9 +412,16 @@ def create_toprow(is_img2img):
with gr.Column(scale=1):
with gr.Row():
skip = gr.Button('Skip', elem_id=f"{id_part}_skip")
interrupt = gr.Button('Interrupt', elem_id=f"{id_part}_interrupt")
submit = gr.Button('Generate', elem_id=f"{id_part}_generate", variant='primary')
skip.click(
fn=lambda: shared.state.skip(),
inputs=[],
outputs=[],
)
interrupt.click(
fn=lambda: shared.state.interrupt(),
inputs=[],