KikkaStyle.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import os
  2. import logging
  3. from PySide6.QtGui import QIcon, QImage
  4. import Kikka
  5. from Kikka.KikkaConst import *
  6. from Kikka.Utils.Singleton import singleton
  7. def getDefaultImage():
  8. return QImage(os.path.join(RESOURCES_PATH, "default.png"))
  9. @singleton
  10. class KikkaStyle:
  11. def __init__(self):
  12. self._theme = None
  13. def getThemePath(self):
  14. return os.path.join(THEME_PATH, self._theme)
  15. def switchTheme(self, theme=DEFAULT_THEME):
  16. theme_path = os.path.join(THEME_PATH, theme)
  17. theme_file = os.path.join(THEME_PATH, theme, "style_sheet.qss")
  18. if not os.path.exists(theme_file):
  19. # load default theme
  20. theme = DEFAULT_THEME
  21. theme_file = os.path.join(THEME_PATH, theme, "style_sheet.qss")
  22. with open(theme_file, "r", encoding="utf8") as fp:
  23. content = fp.read()
  24. self._theme = theme
  25. Kikka.app.setStyleSheet(content)
  26. file = os.path.join(theme_path, "menu_background.png")
  27. if os.path.exists(file):
  28. self.bg_image = QImage(file)
  29. else:
  30. self.bg_image = getDefaultImage()
  31. logging.warning("Menu background image NOT found: %s" % file)
  32. file = os.path.join(theme_path, "menu_foreground.png")
  33. if os.path.exists(file):
  34. self.fg_image = QImage(file)
  35. else:
  36. self.fg_image = getDefaultImage()
  37. logging.warning("Menu foreground image NOT found: %s" % file)
  38. file = os.path.join(theme_path, "menu_sidebar.png")
  39. if os.path.exists(file):
  40. self.side_image = QImage(file)
  41. else:
  42. self.side_image = getDefaultImage()
  43. logging.warning("Menu sidebar image NOT found: %s" % file)
  44. def getMenuBGImage(self):
  45. return self.bg_image
  46. def getMenuFGImage(self):
  47. return self.fg_image
  48. def getMenuSideImage(self):
  49. return self.side_image