Commit 399720da authored by AUTOMATIC's avatar AUTOMATIC
Browse files

update prompt token counts after using the paste params button

parent f91068f4
Loading
Loading
Loading
Loading
+28 −8
Original line number Diff line number Diff line
@@ -191,6 +191,28 @@ function confirm_clear_prompt(prompt, negative_prompt) {
    return [prompt, negative_prompt]
}


promptTokecountUpdateFuncs = {}

function recalculatePromptTokens(name){
    if(promptTokecountUpdateFuncs[name]){
        promptTokecountUpdateFuncs[name]()
    }
}

function recalculate_prompts_txt2img(){
    recalculatePromptTokens('txt2img_prompt')
    recalculatePromptTokens('txt2img_neg_prompt')
    return args_to_array(arguments);
}

function recalculate_prompts_img2img(){
    recalculatePromptTokens('img2img_prompt')
    recalculatePromptTokens('img2img_neg_prompt')
    return args_to_array(arguments);
}


opts = {}
onUiUpdate(function(){
	if(Object.keys(opts).length != 0) return;
@@ -232,14 +254,12 @@ onUiUpdate(function(){
            return
        }


        prompt.parentElement.insertBefore(counter, prompt)
        counter.classList.add("token-counter")
        prompt.parentElement.style.position = "relative"

		textarea.addEventListener("input", function(){
		    update_token_counter(id_button);
		});
		promptTokecountUpdateFuncs[id] = function(){ update_token_counter(id_button); }
		textarea.addEventListener("input", promptTokecountUpdateFuncs[id]);
    }

    registerTextarea('txt2img_prompt', 'txt2img_token_counter', 'txt2img_token_button')
@@ -273,7 +293,7 @@ onOptionsChanged(function(){

let txt2img_textarea, img2img_textarea = undefined;
let wait_time = 800
let token_timeout;
let token_timeouts = {};

function update_txt2img_tokens(...args) {
	update_token_counter("txt2img_token_button")
@@ -290,9 +310,9 @@ function update_img2img_tokens(...args) {
}

function update_token_counter(button_id) {
	if (token_timeout)
		clearTimeout(token_timeout);
	token_timeout = setTimeout(() => gradioApp().getElementById(button_id)?.click(), wait_time);
	if (token_timeouts[button_id])
		clearTimeout(token_timeouts[button_id]);
	token_timeouts[button_id] = setTimeout(() => gradioApp().getElementById(button_id)?.click(), wait_time);
}

function restart_reload(){
+3 −3
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ def connect_paste_params_buttons():
            )

        if binding.source_text_component is not None and fields is not None:
            connect_paste(binding.paste_button, fields, binding.source_text_component, binding.override_settings_component)
            connect_paste(binding.paste_button, fields, binding.source_text_component, binding.override_settings_component, binding.tabname)

        if binding.source_tabname is not None and fields is not None:
            paste_field_names = ['Prompt', 'Negative prompt', 'Steps', 'Face restoration'] + (["Seed"] if shared.opts.send_seed else [])
@@ -325,7 +325,7 @@ def create_override_settings_dict(text_pairs):
    return res


def connect_paste(button, paste_fields, input_comp, override_settings_component, jsfunc=None):
def connect_paste(button, paste_fields, input_comp, override_settings_component, tabname):
    def paste_func(prompt):
        if not prompt and not shared.cmd_opts.hide_ui_dir_config:
            filename = os.path.join(data_path, "params.txt")
@@ -390,7 +390,7 @@ def connect_paste(button, paste_fields, input_comp, override_settings_component,

    button.click(
        fn=paste_func,
        _js=jsfunc,
        _js=f"recalculate_prompts_{tabname}",
        inputs=[input_comp],
        outputs=[x[0] for x in paste_fields],
    )