diff --git a/iz_helpers/helpers.py b/iz_helpers/helpers.py index 5756470..6e5ffca 100644 --- a/iz_helpers/helpers.py +++ b/iz_helpers/helpers.py @@ -1,12 +1,11 @@ import math import os -import json -from jsonschema import validate import modules.shared as shared import modules.sd_models import gradio as gr from scripts import postprocessing_upscale -from .static_variables import jsonprompt_schemafile +from .prompt_util import readJsonPrompt +import asyncio def fix_env_Path_ffprobe(): @@ -90,31 +89,28 @@ def do_upscaleImg(curImg, upscale_do, upscaler_name, upscale_by): ) return pp.image - -def validatePromptJson_throws(data): - with open(jsonprompt_schemafile, "r") as s: - schema = json.load(s) - validate(instance=data, schema=schema) - +async def showGradioErrorAsync(txt, delay=1): + await asyncio.sleep(delay) # sleep for 1 second + raise gr.Error(txt) def putPrompts(files): try: with open(files.name, "r") as f: file_contents = f.read() - data = json.loads(file_contents) - validatePromptJson_throws(data) + + data = readJsonPrompt(file_contents,False) return [ gr.DataFrame.update(data["prompts"]), gr.Textbox.update(data["negPrompt"]), ] except Exception: - gr.Error( - "loading your prompt failed. It seems to be invalid. Your prompt table is preserved." - ) print( "[InfiniteZoom:] Loading your prompt failed. It seems to be invalid. Your prompt table is preserved." ) + asyncio.run( + showGradioErrorAsync("Loading your prompts failed. It seems to be invalid. Your prompt table has been preserved.",5) + ) return [gr.DataFrame.update(), gr.Textbox.update()] diff --git a/iz_helpers/ui.py b/iz_helpers/ui.py index 4fc3ab5..d136ea0 100644 --- a/iz_helpers/ui.py +++ b/iz_helpers/ui.py @@ -1,4 +1,3 @@ -import json import gradio as gr from .run import create_zoom import modules.shared as shared @@ -6,11 +5,10 @@ from webui import wrap_gradio_gpu_call from modules.ui import create_output_panel from .static_variables import ( default_prompt, - empty_prompt, - invalid_prompt, available_samplers, ) -from .helpers import validatePromptJson_throws, putPrompts, clearPrompts +from .helpers import putPrompts, clearPrompts +from .prompt_util import readJsonPrompt def on_ui_tabs(): @@ -41,13 +39,11 @@ def on_ui_tabs(): # safe reading json prompt pr = shared.opts.data.get("infzoom_defPrompt", default_prompt) - if not pr: - pr = empty_prompt - try: - jpr = json.loads(pr) - validatePromptJson_throws(jpr) - except Exception: - jpr = invalid_prompt + jpr = readJsonPrompt(pr, True) + + main_common_prompt = gr.Textbox( + value=jpr["commonPrompt"], label="Common Prompt" + ) main_common_prompt = gr.Textbox( value=jpr["commonPrompt"], label="Common Prompt" @@ -83,8 +79,8 @@ def on_ui_tabs(): exportPrompts_button.click( None, _js="exportPrompts", - inputs=[main_common_prompt, main_prompts, main_negative_prompt], - outputs=None, + inputs=[main_prompts, main_negative_prompt], + outputs=None ) importPrompts_button.upload( fn=putPrompts,