feat: add semantic status bar colors

This commit is contained in:
chengma
2026-07-07 15:42:19 +08:00
parent 8bd6a1df91
commit 9ce4d2442e
14 changed files with 171 additions and 43 deletions
+68
View File
@@ -180,6 +180,74 @@ class GuiTests(TempDirMixin, unittest.TestCase):
"回写旧数据到 Excel",
window.tabs.widget(0).write_back_button.text(),
)
self.assertIn(gui.COLOR_MUTED, window.statusBar().styleSheet())
self.assert_removed(temp_dir)
def test_main_window_status_bar_uses_semantic_colors_and_resets(self):
with self.make_temp_dir() as temp_dir:
window = MainWindow(config=self.make_config(temp_dir))
self.addCleanup(window.close)
window.show_status("更新失败", level="danger")
self.assertEqual("更新失败", window.statusBar().currentMessage())
self.assertIn(gui.COLOR_DANGER, window.statusBar().styleSheet())
window.show_status("设置已保存", level="success")
self.assertIn(gui.COLOR_SUCCESS, window.statusBar().styleSheet())
window.show_status("就绪", level="muted")
self.assertEqual("就绪", window.statusBar().currentMessage())
self.assertIn(gui.COLOR_MUTED, window.statusBar().styleSheet())
self.assertNotIn(gui.COLOR_DANGER, window.statusBar().styleSheet())
self.assert_removed(temp_dir)
def test_status_callbacks_classify_success_warning_and_failure(self):
with self.make_temp_dir() as temp_dir:
statuses = []
def capture(message, level=None):
statuses.append((message, level))
cfg = self.make_config(temp_dir)
generate_tab = GenerateTab(
config=cfg,
status_callback=capture,
title_prompt_path=os.path.join(temp_dir, "title_prompt.txt"),
cover_prompts_dir=os.path.join(temp_dir, "cover_prompts"),
)
self.addCleanup(generate_tab.close)
statuses.clear()
generate_tab.save_title_prompt()
self.assertEqual(("标题提示词已保存", "success"), statuses[-1])
statuses.clear()
generate_tab.start_generate()
self.assertIn("当前筛选结果没有可生成的缺失内容", statuses[-1][0])
self.assertEqual("warning", statuses[-1][1])
model = gui.GenerateTaskTableModel(db_path=os.path.join(temp_dir, "missing_tables.sqlite"), status_callback=capture)
editable_task = SimpleNamespace(
id=999,
alias="papa",
account_name="papa 店铺",
item_id="28431952912",
old_title="旧标题",
new_title="新标题",
new_cover_path="",
stage="generated",
status="success",
committed=0,
last_error="",
)
model.set_tasks([editable_task], [])
statuses.clear()
ok = model.setData(model.index(0, 3), "新标题 2")
self.assertFalse(ok)
self.assertIn("新标题修改失败", statuses[-1][0])
self.assertEqual("danger", statuses[-1][1])
self.assert_removed(temp_dir)