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)