Update generation_handlers.py

This commit is contained in:
CNlaojing
2025-03-05 02:12:03 +08:00
committed by GitHub
parent e89b0916b0
commit dd31da34d3
+61 -1
View File
@@ -25,6 +25,13 @@ def generate_novel_architecture_ui(self):
return return
def task(): def task():
confirm = messagebox.askyesno("确认", "确定要生成小说架构吗?")
if not confirm:
self.enable_button_safe(self.btn_generate_architecture)
return
self.disable_button_safe(self.btn_generate_architecture) self.disable_button_safe(self.btn_generate_architecture)
try: try:
interface_format = self.interface_format_var.get().strip() interface_format = self.interface_format_var.get().strip()
@@ -69,6 +76,9 @@ def generate_chapter_blueprint_ui(self):
return return
def task(): def task():
if not messagebox.askyesno("确认", "确定要生成章节草稿吗?"):
self.enable_button_safe(self.btn_generate_chapter)
return
self.disable_button_safe(self.btn_generate_directory) self.disable_button_safe(self.btn_generate_directory)
try: try:
interface_format = self.interface_format_var.get().strip() interface_format = self.interface_format_var.get().strip()
@@ -168,7 +178,50 @@ def generate_chapter_draft_ui(self):
dialog.geometry("600x400") dialog.geometry("600x400")
text_box = ctk.CTkTextbox(dialog, wrap="word", font=("Microsoft YaHei", 12)) text_box = ctk.CTkTextbox(dialog, wrap="word", font=("Microsoft YaHei", 12))
text_box.pack(fill="both", expand=True, padx=10, pady=10) text_box.pack(fill="both", expand=True, padx=10, pady=10)
text_box.insert("0.0", prompt_text)
# 插入角色内容
final_prompt = prompt_text
role_names = [name.strip() for name in self.char_inv_text.get("0.0", "end").strip().split(',') if name.strip()]
role_lib_path = os.path.join(filepath, "角色库")
role_contents = []
if os.path.exists(role_lib_path):
for root, dirs, files in os.walk(role_lib_path):
for file in files:
if file.endswith(".txt") and os.path.splitext(file)[0] in role_names:
file_path = os.path.join(root, file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
role_contents.append(f"{os.path.splitext(file)[0]}\n{f.read()}\n")
except Exception as e:
self.safe_log(f"读取角色文件 {file} 失败: {str(e)}")
if role_contents:
role_content_str = "\n".join(role_contents)
# 更精确的替换逻辑,处理不同情况下的占位符
placeholder_variations = [
"核心人物(可能未指定){characters_involved}",
"核心人物:{characters_involved}",
"核心人物(可能未指定):{characters_involved}",
"核心人物:{characters_involved}"
]
for placeholder in placeholder_variations:
if placeholder in final_prompt:
final_prompt = final_prompt.replace(
placeholder,
f"核心人物:\n{role_content_str}"
)
break
else: # 如果没有找到任何已知占位符变体
lines = final_prompt.split('\n')
for i, line in enumerate(lines):
if "核心人物" in line and "" in line:
lines[i] = f"核心人物:\n{role_content_str}"
break
final_prompt = '\n'.join(lines)
text_box.insert("0.0", final_prompt)
button_frame = ctk.CTkFrame(dialog) button_frame = ctk.CTkFrame(dialog)
button_frame.pack(pady=10) button_frame.pack(pady=10)
def on_confirm(): def on_confirm():
@@ -236,6 +289,13 @@ def finalize_chapter_ui(self):
return return
def task(): def task():
if not messagebox.askyesno("确认", "确定要定稿当前章节吗?"):
self.enable_button_safe(self.btn_finalize_chapter)
return
if not messagebox.askyesno("确认", "确定要生成章节草稿吗?"):
self.enable_button_safe(self.btn_generate_chapter)
return
self.disable_button_safe(self.btn_finalize_chapter) self.disable_button_safe(self.btn_finalize_chapter)
try: try:
interface_format = self.interface_format_var.get().strip() interface_format = self.interface_format_var.get().strip()