feat: color title wait status
This commit is contained in:
@@ -55,7 +55,12 @@ logger = logging.getLogger(__name__)
|
||||
_RESOLUTIONS = ["512", "1K", "2K", "4K"]
|
||||
_QUALITIES = ["小文件", "均衡", "高清"]
|
||||
_COLS = ["行", "标题", "货号", "衣服图", "状态", "结果 / 原因"]
|
||||
|
||||
_TITLE_WAIT_COLORS = {
|
||||
"waiting": "#0078d4", # 信息蓝:请求已发出,等待模型返回
|
||||
"writing": "#107c10", # 完成绿:已拿到标题,正在写回 Excel
|
||||
"success": "#107c10",
|
||||
"error": "#c42b1c",
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Background worker
|
||||
@@ -1027,7 +1032,7 @@ class AiOutfitPanel(QWidget):
|
||||
def _on_title_progress(self, completed, total, result):
|
||||
if self._title_wait_timer.isActive():
|
||||
self._title_wait_timer.stop()
|
||||
self._set_title_wait_text("写入中 {}/{}".format(completed, total))
|
||||
self._set_title_wait_text("写入中 {}/{}".format(completed, total), "writing")
|
||||
|
||||
row = self._row_to_table.get(result.task.row_index)
|
||||
if row is not None:
|
||||
@@ -1046,9 +1051,9 @@ class AiOutfitPanel(QWidget):
|
||||
def _on_title_finished(self, success, fail):
|
||||
self._set_title_running(False)
|
||||
if fail:
|
||||
self._finish_title_wait("完成 {} 条,失败 {}".format(success, fail))
|
||||
self._finish_title_wait("完成 {} 条,失败 {}".format(success, fail), "error")
|
||||
else:
|
||||
self._finish_title_wait("完成 {} 条".format(success))
|
||||
self._finish_title_wait("完成 {} 条".format(success), "success")
|
||||
msg = "标题生成结束:成功 {},失败 {}".format(success, fail)
|
||||
self._append_log(msg)
|
||||
self._reload_after_titles()
|
||||
@@ -1061,7 +1066,7 @@ class AiOutfitPanel(QWidget):
|
||||
|
||||
def _on_title_failed(self, message):
|
||||
self._set_title_running(False)
|
||||
self._finish_title_wait("生成失败")
|
||||
self._finish_title_wait("生成失败", "error")
|
||||
self._append_log("标题生成无法开始:" + message)
|
||||
QMessageBox.warning(self, "无法开始", message)
|
||||
|
||||
@@ -1115,13 +1120,15 @@ class AiOutfitPanel(QWidget):
|
||||
self._format_wait_seconds(elapsed),
|
||||
self._format_wait_seconds(self._title_wait_limit_seconds)))
|
||||
|
||||
def _set_title_wait_text(self, text):
|
||||
def _set_title_wait_text(self, text, tone="waiting"):
|
||||
self._title_wait_label.setText(str(text))
|
||||
color = _TITLE_WAIT_COLORS.get(tone, _TITLE_WAIT_COLORS["waiting"])
|
||||
self._title_wait_label.setStyleSheet("color:{};".format(color))
|
||||
self._title_wait_label.setVisible(bool(text))
|
||||
|
||||
def _finish_title_wait(self, text):
|
||||
def _finish_title_wait(self, text, tone="success"):
|
||||
self._title_wait_timer.stop()
|
||||
self._set_title_wait_text(text)
|
||||
self._set_title_wait_text(text, tone)
|
||||
token = self._title_wait_generation
|
||||
QTimer.singleShot(4000, lambda: self._reset_title_wait_label(token))
|
||||
|
||||
@@ -1130,6 +1137,7 @@ class AiOutfitPanel(QWidget):
|
||||
return
|
||||
self._title_wait_timer.stop()
|
||||
self._title_wait_label.clear()
|
||||
self._title_wait_label.setStyleSheet("")
|
||||
self._title_wait_label.setVisible(False)
|
||||
|
||||
def _format_wait_seconds(self, seconds):
|
||||
|
||||
Reference in New Issue
Block a user