Merge pull request #130 from idrirap/dev/allowSR_XY

feat: allow to use negative and positive prompt S/R both in X and Y
This commit is contained in:
VALADI K JAGANATHAN
2024-03-25 19:10:32 +05:30
committed by GitHub

View File

@@ -1145,19 +1145,33 @@ class TSC_KSampler:
elif var_type == "Positive Prompt S/R": elif var_type == "Positive Prompt S/R":
search_txt, replace_txt = var search_txt, replace_txt = var
if replace_txt != None: if replace_txt != None:
positive_prompt = (positive_prompt[1].replace(search_txt, replace_txt, 1), positive_prompt[1]) # check if we are in the Y loop after the X loop
if positive_prompt[2] is not None:
positive_prompt = (positive_prompt[2].replace(search_txt, replace_txt, 1), positive_prompt[1], positive_prompt[2])
else:
positive_prompt = (positive_prompt[1].replace(search_txt, replace_txt, 1), positive_prompt[1], positive_prompt[1].replace(search_txt, replace_txt, 1))
else: else:
positive_prompt = (positive_prompt[1], positive_prompt[1]) if positive_prompt[2] is not None:
positive_prompt = (positive_prompt[2], positive_prompt[1], positive_prompt[2])
else:
positive_prompt = (positive_prompt[1], positive_prompt[1], positive_prompt[1])
replace_txt = search_txt replace_txt = search_txt
text = f"{replace_txt}" text = f"{replace_txt}"
# If var_type is "Negative Prompt S/R", update negative_prompt and generate labels # If var_type is "Negative Prompt S/R", update negative_prompt and generate labels
elif var_type == "Negative Prompt S/R": elif var_type == "Negative Prompt S/R":
search_txt, replace_txt = var search_txt, replace_txt = var
if replace_txt: if replace_txt != None:
negative_prompt = (negative_prompt[1].replace(search_txt, replace_txt, 1), negative_prompt[1]) # check if we are in the Y loop after the X loop
if negative_prompt[2] is not None:
negative_prompt = (negative_prompt[2].replace(search_txt, replace_txt, 1), negative_prompt[1], negative_prompt[2])
else:
negative_prompt = (negative_prompt[1].replace(search_txt, replace_txt, 1), negative_prompt[1], negative_prompt[1].replace(search_txt, replace_txt, 1))
else: else:
negative_prompt = (negative_prompt[1], negative_prompt[1]) if negative_prompt[2] is not None:
negative_prompt = (negative_prompt[2], negative_prompt[1], negative_prompt[2])
else:
negative_prompt = (negative_prompt[1], negative_prompt[1], negative_prompt[1])
replace_txt = search_txt replace_txt = search_txt
text = f"(-) {replace_txt}" text = f"(-) {replace_txt}"
@@ -1479,6 +1493,10 @@ class TSC_KSampler:
# Fill Plot Rows (X) # Fill Plot Rows (X)
for X_index, X in enumerate(X_value): for X_index, X in enumerate(X_value):
# add a none value in the positive prompt memory.
# the tuple is composed of (actual prompt, original prompte before S/R, prompt after X S/R)
positive_prompt = (positive_prompt[0], positive_prompt[1], None)
negative_prompt = (negative_prompt[0], negative_prompt[1], None)
# Define X parameters and generate labels # Define X parameters and generate labels
add_noise, seed, steps, start_at_step, end_at_step, return_with_leftover_noise, cfg,\ add_noise, seed, steps, start_at_step, end_at_step, return_with_leftover_noise, cfg,\
@@ -2326,7 +2344,7 @@ class TSC_XYplot:
Y_value = [""] Y_value = [""]
# If types are the same exit. If one isn't "Nothing", print error # If types are the same exit. If one isn't "Nothing", print error
if X_type != "XY_Capsule" and (X_type == Y_type): if X_type != "XY_Capsule" and (X_type == Y_type) and X_type not in ["Positive Prompt S/R", "Negative Prompt S/R"]:
if X_type != "Nothing": if X_type != "Nothing":
print(f"{error('XY Plot Error:')} X and Y input types must be different.") print(f"{error('XY Plot Error:')} X and Y input types must be different.")
return (None,) return (None,)