From 293cd69940c1cc07f2179013d4530b138182cec8 Mon Sep 17 00:00:00 2001 From: Matthias Egger Date: Sun, 14 May 2023 13:13:46 +0200 Subject: [PATCH] fix prompts from file script failing to read contents from a drag/drop file It was not possible to open a file with different prompts into the `Prompts from file` script. Found an upstream fix: https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/8ca50f8240fc1b4400ba59be50ad7a75b99cfbcb which i implemented localy. --- scripts/prompts_from_file.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/prompts_from_file.py b/scripts/prompts_from_file.py index 138eb775c..05fef64cc 100644 --- a/scripts/prompts_from_file.py +++ b/scripts/prompts_from_file.py @@ -94,11 +94,10 @@ def cmdargs(line): def load_prompt_file(file): if file is None: - lines = [] + return None, gr.update(), gr.update(lines=7) else: lines = [x.strip() for x in file.decode('utf8', errors='ignore').split("\n")] - - return None, "\n".join(lines), gr.update(lines=7) + return None, "\n".join(lines), gr.update(lines=7) class Script(scripts.Script): @@ -112,12 +111,12 @@ class Script(scripts.Script): prompt_txt = gr.Textbox(label="List of prompt inputs", lines=1, elem_id=self.elem_id("prompt_txt")) file = gr.File(label="Upload prompt inputs", type='binary', elem_id=self.elem_id("file")) - file.change(fn=load_prompt_file, inputs=[file], outputs=[file, prompt_txt, prompt_txt]) + file.change(fn=load_prompt_file, inputs=[file], outputs=[file, prompt_txt, prompt_txt], show_progress=False) # We start at one line. When the text changes, we jump to seven lines, or two lines if no \n. # We don't shrink back to 1, because that causes the control to ignore [enter], and it may # be unclear to the user that shift-enter is needed. - prompt_txt.change(lambda tb: gr.update(lines=7) if ("\n" in tb) else gr.update(lines=2), inputs=[prompt_txt], outputs=[prompt_txt]) + prompt_txt.change(lambda tb: gr.update(lines=7) if ("\n" in tb) else gr.update(lines=2), inputs=[prompt_txt], outputs=[prompt_txt], show_progress=False) return [checkbox_iterate, checkbox_iterate_batch, prompt_txt] def run(self, p, checkbox_iterate, checkbox_iterate_batch, prompt_txt: str):