import os import logging from PySide6.QtGui import QIcon, QImage import Kikka from Kikka.KikkaConst import * from Kikka.Utils.Singleton import singleton def getDefaultImage(): return QImage(os.path.join(RESOURCES_PATH, "default.png")) @singleton class KikkaStyle: def __init__(self): self._theme = None def getThemePath(self): return os.path.join(THEME_PATH, self._theme) def switchTheme(self, theme=DEFAULT_THEME): theme_path = os.path.join(THEME_PATH, theme) theme_file = os.path.join(THEME_PATH, theme, "style_sheet.qss") if not os.path.exists(theme_file): # load default theme theme = DEFAULT_THEME theme_file = os.path.join(THEME_PATH, theme, "style_sheet.qss") with open(theme_file, "r", encoding="utf8") as fp: content = fp.read() self._theme = theme Kikka.app.setStyleSheet(content) file = os.path.join(theme_path, "menu_background.png") if os.path.exists(file): self.bg_image = QImage(file) else: self.bg_image = getDefaultImage() logging.warning("Menu background image NOT found: %s" % file) file = os.path.join(theme_path, "menu_foreground.png") if os.path.exists(file): self.fg_image = QImage(file) else: self.fg_image = getDefaultImage() logging.warning("Menu foreground image NOT found: %s" % file) file = os.path.join(theme_path, "menu_sidebar.png") if os.path.exists(file): self.side_image = QImage(file) else: self.side_image = getDefaultImage() logging.warning("Menu sidebar image NOT found: %s" % file) def getMenuBGImage(self): return self.bg_image def getMenuFGImage(self): return self.fg_image def getMenuSideImage(self): return self.side_image