Coverage for aipyapp/display/themes.py: 0%
8 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
4"""显示主题定义"""
6from rich.theme import Theme
8# 默认主题(适合大多数终端)
9DEFAULT_THEME = Theme({
10 # 基础颜色
11 "info": "cyan",
12 "warning": "yellow",
13 "error": "red bold",
14 "success": "green",
16 # 面板和边框
17 "panel.border": "blue",
18 "panel.title": "bold cyan",
20 # 代码相关
21 "code": "white",
22 "syntax.keyword": "magenta bold",
23 "syntax.string": "green",
24 "syntax.number": "cyan",
25 "syntax.comment": "bright_black",
27 # 任务状态
28 "task.running": "yellow",
29 "task.success": "green",
30 "task.error": "red",
32 # 表格
33 "table.header": "bold cyan",
34 "table.cell": "white",
35})
37# 深色主题(针对深色背景优化)
38DARK_THEME = Theme({
39 # 基础颜色
40 "info": "bright_cyan",
41 "warning": "bright_yellow",
42 "error": "bright_red bold",
43 "success": "bright_green",
45 # 面板和边框
46 "panel.border": "bright_blue",
47 "panel.title": "bold bright_cyan",
49 # 代码相关
50 "code": "bright_white",
51 "syntax.keyword": "bright_magenta bold",
52 "syntax.string": "bright_green",
53 "syntax.number": "bright_cyan",
54 "syntax.comment": "bright_black",
56 # 任务状态
57 "task.running": "bright_yellow",
58 "task.success": "bright_green",
59 "task.error": "bright_red",
61 # 表格
62 "table.header": "bold bright_cyan",
63 "table.cell": "bright_white",
64})
66# 浅色主题(针对浅色背景优化)
67LIGHT_THEME = Theme({
68 # 基础颜色
69 "info": "blue",
70 "warning": "dark_orange",
71 "error": "red bold",
72 "success": "dark_green",
74 # 面板和边框
75 "panel.border": "blue",
76 "panel.title": "bold blue",
78 # 代码相关
79 "code": "black",
80 "syntax.keyword": "blue bold",
81 "syntax.string": "dark_green",
82 "syntax.number": "dark_cyan",
83 "syntax.comment": "bright_black",
85 # 任务状态
86 "task.running": "dark_orange",
87 "task.success": "dark_green",
88 "task.error": "red",
90 # 表格
91 "table.header": "bold blue",
92 "table.cell": "black",
93})
95# 单色主题(只使用基本颜色,兼容性最好)
96MONO_THEME = Theme({
97 # 基础颜色
98 "info": "white",
99 "warning": "white",
100 "error": "white bold",
101 "success": "white",
103 # 面板和边框
104 "panel.border": "white",
105 "panel.title": "bold white",
107 # 代码相关
108 "code": "white",
109 "syntax.keyword": "white bold",
110 "syntax.string": "white",
111 "syntax.number": "white",
112 "syntax.comment": "bright_black",
114 # 任务状态
115 "task.running": "white",
116 "task.success": "white",
117 "task.error": "white bold",
119 # 表格
120 "table.header": "bold white",
121 "table.cell": "white",
122})
124# 主题映射表
125THEMES = {
126 "default": DEFAULT_THEME,
127 "dark": DARK_THEME,
128 "light": LIGHT_THEME,
129 "mono": MONO_THEME,
130}
132def get_theme(theme_name: str) -> Theme:
133 """获取指定名称的主题
135 Args:
136 theme_name: 主题名称 ("default", "dark", "light", "mono")
138 Returns:
139 Rich主题对象,如果主题名不存在则返回默认主题
140 """
141 return THEMES.get(theme_name, DEFAULT_THEME)