@ -335,28 +335,23 @@ def update_token_counter(text, steps):
flat_prompts = reduce ( lambda list1 , list2 : list1 + list2 , prompt_schedules )
prompts = [ prompt_text for step , prompt_text in flat_prompts ]
token_count , max_length = max ( [ model_hijack . get_prompt_lengths ( prompt ) for prompt in prompts ] , key = lambda args : args [ 0 ] )
style_class = ' class= " red " ' if ( token_count > max_length ) else " "
return f " <span { style_class } > { token_count } / { max_length } </span> "
return f " <span class= ' gr-box gr-text-input ' > { token_count } / { max_length } </span> "
def create_toprow ( is_img2img ) :
id_part = " img2img " if is_img2img else " txt2img "
with gr . Row ( elem_id = " toprow" ) :
with gr . Column ( scale= 6 ) :
with gr . Row ( elem_id = f " { id_part } _ toprow" , variant = " compact " ) :
with gr . Column ( elem_id= f " { id_part } _prompt_container " , scale= 6 ) :
with gr . Row ( ) :
with gr . Column ( scale = 80 ) :
with gr . Row ( ) :
prompt = gr . Textbox ( label = " Prompt " , elem_id = f " { id_part } _prompt " , show_label = False , lines = 2 ,
placeholder = " Prompt (press Ctrl+Enter or Alt+Enter to generate) "
)
prompt = gr . Textbox ( label = " Prompt " , elem_id = f " { id_part } _prompt " , show_label = False , lines = 2 , placeholder = " Prompt (press Ctrl+Enter or Alt+Enter to generate) " )
with gr . Row ( ) :
with gr . Column ( scale = 80 ) :
with gr . Row ( ) :
negative_prompt = gr . Textbox ( label = " Negative prompt " , elem_id = f " { id_part } _neg_prompt " , show_label = False , lines = 2 ,
placeholder = " Negative prompt (press Ctrl+Enter or Alt+Enter to generate) "
)
negative_prompt = gr . Textbox ( label = " Negative prompt " , elem_id = f " { id_part } _neg_prompt " , show_label = False , lines = 2 , placeholder = " Negative prompt (press Ctrl+Enter or Alt+Enter to generate) " )
with gr . Column ( scale = 1 , elem_id = " roll_col " ) :
paste = gr . Button ( value = paste_symbol , elem_id = " paste " )
@ -365,6 +360,8 @@ def create_toprow(is_img2img):
clear_prompt_button = gr . Button ( value = clear_prompt_symbol , elem_id = f " { id_part } _clear_prompt " )
token_counter = gr . HTML ( value = " <span></span> " , elem_id = f " { id_part } _token_counter " )
token_button = gr . Button ( visible = False , elem_id = f " { id_part } _token_button " )
negative_token_counter = gr . HTML ( value = " <span></span> " , elem_id = f " { id_part } _negative_token_counter " )
negative_token_button = gr . Button ( visible = False , elem_id = f " { id_part } _negative_token_button " )
clear_prompt_button . click (
fn = lambda * x : x ,
@ -402,7 +399,7 @@ def create_toprow(is_img2img):
prompt_styles = gr . Dropdown ( label = " Styles " , elem_id = f " { id_part } _styles " , choices = [ k for k , v in shared . prompt_styles . styles . items ( ) ] , value = [ ] , multiselect = True )
create_refresh_button ( prompt_styles , shared . prompt_styles . reload , lambda : { " choices " : [ k for k , v in shared . prompt_styles . styles . items ( ) ] } , f " refresh_ { id_part } _styles " )
return prompt , prompt_styles , negative_prompt , submit , button_interrogate , button_deepbooru , prompt_style_apply , save_style , paste , token_counter , token_button
return prompt , prompt_styles , negative_prompt , submit , button_interrogate , button_deepbooru , prompt_style_apply , save_style , paste , token_counter , token_button , negative_token_counter , negative_token_button
def setup_progressbar ( * args , * * kwargs ) :
@ -619,7 +616,7 @@ def create_ui():
modules . scripts . scripts_txt2img . initialize_scripts ( is_img2img = False )
with gr . Blocks ( analytics_enabled = False ) as txt2img_interface :
txt2img_prompt , txt2img_prompt_styles , txt2img_negative_prompt , submit , _ , _ , txt2img_prompt_style_apply , txt2img_save_style , txt2img_paste , token_counter , token_button = create_toprow ( is_img2img = False )
txt2img_prompt , txt2img_prompt_styles , txt2img_negative_prompt , submit , _ , _ , txt2img_prompt_style_apply , txt2img_save_style , txt2img_paste , token_counter , token_button, negative_token_counter , negative_ token_button = create_toprow ( is_img2img = False )
dummy_component = gr . Label ( visible = False )
txt_prompt_img = gr . File ( label = " " , elem_id = " txt2img_prompt_image " , file_count = " single " , type = " binary " , visible = False )
@ -795,12 +792,13 @@ def create_ui():
]
token_button . click ( fn = wrap_queued_call ( update_token_counter ) , inputs = [ txt2img_prompt , steps ] , outputs = [ token_counter ] )
negative_token_button . click ( fn = wrap_queued_call ( update_token_counter ) , inputs = [ txt2img_negative_prompt , steps ] , outputs = [ negative_token_counter ] )
modules . scripts . scripts_current = modules . scripts . scripts_img2img
modules . scripts . scripts_img2img . initialize_scripts ( is_img2img = True )
with gr . Blocks ( analytics_enabled = False ) as img2img_interface :
img2img_prompt , img2img_prompt_styles , img2img_negative_prompt , submit , img2img_interrogate , img2img_deepbooru , img2img_prompt_style_apply , img2img_save_style , img2img_paste , token_counter , token_button = create_toprow ( is_img2img = True )
img2img_prompt , img2img_prompt_styles , img2img_negative_prompt , submit , img2img_interrogate , img2img_deepbooru , img2img_prompt_style_apply , img2img_save_style , img2img_paste , token_counter , token_button, negative_token_counter , negative_ token_button = create_toprow ( is_img2img = True )
img2img_prompt_img = gr . File ( label = " " , elem_id = " img2img_prompt_image " , file_count = " single " , type = " binary " , visible = False )
@ -1064,6 +1062,7 @@ def create_ui():
)
token_button . click ( fn = update_token_counter , inputs = [ img2img_prompt , steps ] , outputs = [ token_counter ] )
negative_token_button . click ( fn = wrap_queued_call ( update_token_counter ) , inputs = [ txt2img_negative_prompt , steps ] , outputs = [ negative_token_counter ] )
img2img_paste_fields = [
( img2img_prompt , " Prompt " ) ,