65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
from db.database import get_setting, set_setting
|
|
|
|
THEMES = {
|
|
"dark": {
|
|
"panel_bg": "rgba(30,30,30,120)", # Lower opacity for frosted glass effect
|
|
"panel_border": "rgba(255,255,255,30)", # Lighter border highlight
|
|
"header_bg": "rgba(255,255,255,25)", # Semitransparent headers
|
|
"header_hover": "rgba(255,255,255,45)",
|
|
"item_name_color":"#ffffff",
|
|
"search_bg": "rgba(255,255,255,20)",
|
|
"search_border": "rgba(255,255,255,30)",
|
|
"search_color": "#ffffff",
|
|
"search_focus": "#4a9eff",
|
|
"btn_color": "#cccccc",
|
|
"btn_hover": "#ffffff",
|
|
"scrollbar": "rgba(255,255,255,50)",
|
|
"menu_bg": "rgba(30,30,30,230)",
|
|
"menu_color": "#ffffff",
|
|
"menu_border": "rgba(255,255,255,30)",
|
|
"menu_selected": "rgba(255,255,255,40)",
|
|
},
|
|
"light": {
|
|
"panel_bg": "rgba(255,255,255,140)", # Lower opacity for frosted glass effect
|
|
"panel_border": "rgba(0,0,0,30)", # Subtler border
|
|
"header_bg": "rgba(0,0,0,15)", # Semitransparent headers
|
|
"header_hover": "rgba(0,0,0,25)",
|
|
"item_name_color":"#111111",
|
|
"search_bg": "rgba(0,0,0,10)",
|
|
"search_border": "rgba(0,0,0,20)",
|
|
"search_color": "#111111",
|
|
"search_focus": "#4a9eff",
|
|
"btn_color": "#555555",
|
|
"btn_hover": "#000000",
|
|
"scrollbar": "rgba(0,0,0,40)",
|
|
"menu_bg": "rgba(255,255,255,240)",
|
|
"menu_color": "#111111",
|
|
"menu_border": "rgba(0,0,0,20)",
|
|
"menu_selected": "rgba(0,0,0,15)",
|
|
},
|
|
}
|
|
|
|
_current = "dark"
|
|
|
|
|
|
def load():
|
|
"""从数据库读取上次保存的主题,应在 init_db() 之后调用"""
|
|
global _current
|
|
saved = get_setting("theme", "dark")
|
|
_current = saved if saved in THEMES else "dark"
|
|
|
|
|
|
def current() -> dict:
|
|
return THEMES[_current]
|
|
|
|
|
|
def name() -> str:
|
|
return _current
|
|
|
|
|
|
def set_theme(theme_name: str):
|
|
global _current
|
|
if theme_name in THEMES:
|
|
_current = theme_name
|
|
set_setting("theme", theme_name)
|