T-584 AI生成提示词区重排
This commit is contained in:
+168
-6
@@ -751,6 +751,7 @@ class GenerateTab(QWidget):
|
||||
status_callback=None,
|
||||
title_prompt_path=None,
|
||||
cover_prompts_dir=None,
|
||||
title_templates_dir=None,
|
||||
open_accounts_callback=None,
|
||||
):
|
||||
super().__init__(parent)
|
||||
@@ -765,7 +766,13 @@ class GenerateTab(QWidget):
|
||||
self.open_accounts_callback = open_accounts_callback
|
||||
self.title_prompt_path = title_prompt_path or appconfig.title_prompt_path(self.config)
|
||||
self.cover_prompts_dir = cover_prompts_dir or appconfig.cover_prompts_dir(self.config)
|
||||
prompts.ensure_default_prompts(self.title_prompt_path, self.cover_prompts_dir)
|
||||
self.title_templates_dir = title_templates_dir or appconfig.title_templates_dir(self.config)
|
||||
prompts.ensure_default_prompts(
|
||||
self.title_prompt_path,
|
||||
self.cover_prompts_dir,
|
||||
self.title_templates_dir,
|
||||
)
|
||||
self.current_title_template = None
|
||||
self.current_cover_template = None
|
||||
self.generate_worker = None
|
||||
self.generate_thread = None
|
||||
@@ -781,7 +788,27 @@ class GenerateTab(QWidget):
|
||||
self.title_prompt_edit.setPlainText(
|
||||
prompts.load_title_prompt(self.title_prompt_path)
|
||||
)
|
||||
self.title_template_combo = QComboBox()
|
||||
self.title_template_combo.setObjectName("titleTemplateCombo")
|
||||
self.title_template_combo.setToolTip("选择标题提示词模板并载入到输入框")
|
||||
self.new_title_template_button = QPushButton("新建")
|
||||
self.new_title_template_button.setObjectName("newTitleTemplateButton")
|
||||
self.new_title_template_button.setToolTip("新建一个标题提示词模板")
|
||||
self.save_title_template_button = QPushButton("保存模板")
|
||||
self.save_title_template_button.setObjectName("saveTitleTemplateButton")
|
||||
self.save_title_template_button.setToolTip("保存当前选中的标题提示词模板;未选中模板时会另存为新模板")
|
||||
self.title_template_actions_button = QPushButton("模板操作")
|
||||
self.title_template_actions_button.setObjectName("titleTemplateActionsButton")
|
||||
self.title_template_actions_menu = QMenu(self)
|
||||
self.save_title_template_as_action = self.title_template_actions_menu.addAction("另存为")
|
||||
self.save_title_template_as_action.setObjectName("saveTitleTemplateAsAction")
|
||||
self.rename_title_template_action = self.title_template_actions_menu.addAction("重命名")
|
||||
self.rename_title_template_action.setObjectName("renameTitleTemplateAction")
|
||||
self.delete_title_template_action = self.title_template_actions_menu.addAction("删除")
|
||||
self.delete_title_template_action.setObjectName("deleteTitleTemplateAction")
|
||||
self.title_template_actions_button.setMenu(self.title_template_actions_menu)
|
||||
self.save_title_button = QPushButton("保存标题提示词")
|
||||
self.save_title_button.setToolTip("保存当前标题提示词工作文本,生成时会使用这份内容")
|
||||
self.insert_old_title_button = QPushButton("插入旧标题")
|
||||
self.insert_old_title_button.setObjectName("insertOldTitleButton")
|
||||
self.cover_prompt_edit = QPlainTextEdit()
|
||||
@@ -790,7 +817,8 @@ class GenerateTab(QWidget):
|
||||
self.cover_template_combo = QComboBox()
|
||||
self.cover_template_combo.setObjectName("coverTemplateCombo")
|
||||
self.new_cover_template_button = QPushButton("新建")
|
||||
self.save_cover_template_button = QPushButton("保存")
|
||||
self.save_cover_template_button = QPushButton("保存模板")
|
||||
self.save_cover_template_button.setToolTip("保存当前选中的封面提示词模板;未选中模板时会另存为新模板")
|
||||
self.cover_template_actions_button = QPushButton("模板操作")
|
||||
self.cover_template_actions_button.setObjectName("coverTemplateActionsButton")
|
||||
self.cover_template_actions_menu = QMenu(self)
|
||||
@@ -851,19 +879,24 @@ class GenerateTab(QWidget):
|
||||
left_layout = QVBoxLayout(left_panel)
|
||||
left_layout.setContentsMargins(0, 0, 12, 0)
|
||||
left_layout.addWidget(QLabel("标题提示词"))
|
||||
left_layout.addWidget(self.title_prompt_edit, 1)
|
||||
title_template_layout = QHBoxLayout()
|
||||
title_template_layout.addWidget(self.title_template_combo, 1)
|
||||
title_template_layout.addWidget(self.new_title_template_button)
|
||||
title_template_layout.addWidget(self.save_title_template_button)
|
||||
title_template_layout.addWidget(self.title_template_actions_button)
|
||||
left_layout.addLayout(title_template_layout)
|
||||
left_layout.addWidget(self.title_prompt_edit, 2)
|
||||
title_action_layout = QHBoxLayout()
|
||||
title_action_layout.addWidget(self.save_title_button)
|
||||
title_action_layout.addWidget(self.insert_old_title_button)
|
||||
title_action_layout.addWidget(self.save_title_button)
|
||||
title_action_layout.addStretch(1)
|
||||
left_layout.addLayout(title_action_layout)
|
||||
left_layout.addWidget(QLabel("封面提示词"))
|
||||
left_layout.addWidget(self.cover_template_combo)
|
||||
cover_template_layout = QHBoxLayout()
|
||||
cover_template_layout.addWidget(self.cover_template_combo, 1)
|
||||
cover_template_layout.addWidget(self.new_cover_template_button)
|
||||
cover_template_layout.addWidget(self.save_cover_template_button)
|
||||
cover_template_layout.addWidget(self.cover_template_actions_button)
|
||||
cover_template_layout.addStretch(1)
|
||||
left_layout.addLayout(cover_template_layout)
|
||||
left_layout.addWidget(self.cover_prompt_edit, 2)
|
||||
cover_action_layout = QHBoxLayout()
|
||||
@@ -981,6 +1014,12 @@ class GenerateTab(QWidget):
|
||||
self.status_filter.currentIndexChanged.connect(self.refresh_tasks)
|
||||
self.refresh_button.clicked.connect(self.refresh_tasks)
|
||||
self.open_image_dir_button.clicked.connect(self.open_image_directory)
|
||||
self.title_template_combo.currentIndexChanged.connect(self.load_selected_title_template)
|
||||
self.new_title_template_button.clicked.connect(self.new_title_template)
|
||||
self.save_title_template_button.clicked.connect(self.save_title_template)
|
||||
self.save_title_template_as_action.triggered.connect(self.save_title_template_as)
|
||||
self.rename_title_template_action.triggered.connect(self.rename_title_template)
|
||||
self.delete_title_template_action.triggered.connect(self.delete_title_template)
|
||||
self.save_title_button.clicked.connect(self.save_title_prompt)
|
||||
self.insert_old_title_button.clicked.connect(self.insert_old_title_placeholder)
|
||||
self.cover_template_combo.currentIndexChanged.connect(self.load_selected_cover_template)
|
||||
@@ -997,6 +1036,7 @@ class GenerateTab(QWidget):
|
||||
self.reset_generate_button.clicked.connect(self.reset_generated_result)
|
||||
self.task_table.doubleClicked.connect(self.show_task_images)
|
||||
|
||||
self.refresh_title_templates()
|
||||
self.refresh_cover_templates()
|
||||
self.refresh_tasks()
|
||||
self._show_current_run_log_empty()
|
||||
@@ -1224,6 +1264,120 @@ class GenerateTab(QWidget):
|
||||
return
|
||||
self._set_status("标题提示词已保存")
|
||||
|
||||
def refresh_title_templates(self, selected=None):
|
||||
try:
|
||||
template_names = prompts.list_title_templates(self.title_templates_dir)
|
||||
except Exception as exc:
|
||||
template_names = []
|
||||
self._show_prompt_error(exc)
|
||||
current = selected if selected is not None else self.current_title_template
|
||||
self.title_template_combo.blockSignals(True)
|
||||
self.title_template_combo.clear()
|
||||
self.title_template_combo.addItem("选择模板", None)
|
||||
for name in template_names:
|
||||
self.title_template_combo.addItem(name, name)
|
||||
index = self.title_template_combo.findData(current)
|
||||
if index >= 0:
|
||||
self.title_template_combo.setCurrentIndex(index)
|
||||
self.current_title_template = current
|
||||
else:
|
||||
self.title_template_combo.setCurrentIndex(0)
|
||||
self.current_title_template = None
|
||||
self.title_template_combo.blockSignals(False)
|
||||
|
||||
def load_selected_title_template(self, index=None):
|
||||
name = self.title_template_combo.currentData()
|
||||
self.current_title_template = name
|
||||
if name is None:
|
||||
return
|
||||
try:
|
||||
self.title_prompt_edit.setPlainText(
|
||||
prompts.load_title_template(name, self.title_templates_dir)
|
||||
)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
|
||||
def new_title_template(self, checked=False):
|
||||
name = self._ask_template_name("新建标题提示词模板")
|
||||
if not name:
|
||||
return
|
||||
try:
|
||||
prompts.save_title_template(name, "", self.title_templates_dir)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
return
|
||||
self.refresh_title_templates(selected=name)
|
||||
self.title_prompt_edit.setPlainText("")
|
||||
self._set_status(f"标题提示词模板已新建:{name}")
|
||||
|
||||
def save_title_template(self, checked=False):
|
||||
name = self.current_title_template
|
||||
if name is None:
|
||||
self.save_title_template_as()
|
||||
return
|
||||
try:
|
||||
prompts.save_title_template(
|
||||
name,
|
||||
self.title_prompt_edit.toPlainText(),
|
||||
self.title_templates_dir,
|
||||
)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
return
|
||||
self._set_status(f"标题提示词模板已保存:{name}")
|
||||
|
||||
def save_title_template_as(self, checked=False):
|
||||
name = self._ask_template_name("另存标题提示词模板")
|
||||
if not name:
|
||||
return
|
||||
try:
|
||||
prompts.save_title_template(
|
||||
name,
|
||||
self.title_prompt_edit.toPlainText(),
|
||||
self.title_templates_dir,
|
||||
)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
return
|
||||
self.refresh_title_templates(selected=name)
|
||||
self._set_status(f"标题提示词模板已另存为:{name}")
|
||||
|
||||
def rename_title_template(self, checked=False):
|
||||
old_name = self.current_title_template
|
||||
if old_name is None:
|
||||
self._set_status("没有可重命名的标题提示词模板")
|
||||
return
|
||||
new_name = self._ask_template_name("重命名标题提示词模板", text=old_name)
|
||||
if not new_name or new_name == old_name:
|
||||
return
|
||||
try:
|
||||
prompts.rename_title_template(old_name, new_name, self.title_templates_dir)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
return
|
||||
self.refresh_title_templates(selected=new_name)
|
||||
self._set_status(f"标题提示词模板已重命名:{new_name}")
|
||||
|
||||
def delete_title_template(self, checked=False):
|
||||
name = self.current_title_template
|
||||
if name is None:
|
||||
self._set_status("没有可删除的标题提示词模板")
|
||||
return
|
||||
choice = QMessageBox.question(
|
||||
self,
|
||||
"删除标题提示词模板",
|
||||
f"确定删除「{name}」吗?",
|
||||
)
|
||||
if choice != QMessageBox.Yes:
|
||||
return
|
||||
try:
|
||||
prompts.delete_title_template(name, self.title_templates_dir)
|
||||
except Exception as exc:
|
||||
self._show_prompt_error(exc)
|
||||
return
|
||||
self.refresh_title_templates()
|
||||
self._set_status(f"标题提示词模板已删除:{name}")
|
||||
|
||||
def refresh_cover_templates(self, selected=None):
|
||||
try:
|
||||
template_names = prompts.list_cover_templates(self.cover_prompts_dir)
|
||||
@@ -1656,7 +1810,15 @@ class GenerateTab(QWidget):
|
||||
self.shop_filter.setEnabled(not running)
|
||||
self.item_filter.setEnabled(not running)
|
||||
self.status_filter.setEnabled(not running)
|
||||
self.title_template_combo.setEnabled(not running)
|
||||
self.new_title_template_button.setEnabled(not running)
|
||||
self.save_title_template_button.setEnabled(not running)
|
||||
self.title_template_actions_button.setEnabled(not running)
|
||||
self.save_title_template_as_action.setEnabled(not running)
|
||||
self.rename_title_template_action.setEnabled(not running)
|
||||
self.delete_title_template_action.setEnabled(not running)
|
||||
self.save_title_button.setEnabled(not running)
|
||||
self.cover_template_combo.setEnabled(not running)
|
||||
self.new_cover_template_button.setEnabled(not running)
|
||||
self.save_cover_template_button.setEnabled(not running)
|
||||
self.cover_template_actions_button.setEnabled(not running)
|
||||
|
||||
Reference in New Issue
Block a user