skin_manager.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. import config
  4. import ConfigParser
  5. class CaseConfigParser(ConfigParser.SafeConfigParser):
  6. def optionxform(self, optionstr):
  7. return optionstr
  8. class SkinManager(object):
  9. """
  10. _HighColor = pygame.Color(51,166,255) # #33a6ff
  11. _TextColor = pygame.Color(83,83,83) # #535353
  12. _FrontColor = pygame.Color(131,199,219) ## light blue,#83c7db
  13. _URLColor = pygame.Color(51,166,255) ## blue more #33a6ff
  14. _LineColor = pygame.Color(169,169,169) # #a9a9a9
  15. _TitleBgColor = pygame.Color(228,228,228) # #e4e4e4
  16. _ActiveColor = pygame.Color(175,90,0) ## light brown #af5a00
  17. """
  18. _Colors = {}
  19. _Config = None
  20. def __init__(self):
  21. self.Init()
  22. def ConvertToRGB(self,hexstr):
  23. h = hexstr.lstrip('#')
  24. return tuple(int(h[i:i+2], 16) for i in (0, 2 ,4))
  25. def Init(self):
  26. if not SkinManager._Colors:
  27. self.SetColors()
  28. def SetColors(self):
  29. Colors = {}
  30. Colors["High"] = pygame.Color(51, 166, 255)
  31. Colors["Text"] = pygame.Color(83, 83, 83)
  32. Colors["Front"] = pygame.Color(131, 199, 219)
  33. Colors["URL"] = pygame.Color(51, 166, 255)
  34. Colors["Line"] = pygame.Color(169, 169, 169)
  35. Colors["TitleBg"] = pygame.Color(228, 228, 228)
  36. Colors["Active"] = pygame.Color(175, 90, 0)
  37. Colors["Disabled"] = pygame.Color(204, 204, 204)
  38. Colors["White"] = pygame.Color(255, 255, 255)
  39. Colors["Black"] = pygame.Color(0, 0, 0)
  40. SkinManager._Colors = Colors
  41. self._Config = CaseConfigParser()
  42. fname = "../skin/"+config.SKIN+"/config.cfg"
  43. try:
  44. self._Config.read(fname)
  45. except Exception, e:
  46. print("read skin config.cfg error %s" % str(e))
  47. return
  48. else:
  49. if "Colors" in self._Config.sections():
  50. colour_opts = self._Config.options("Colors")
  51. # print(colour_opts)
  52. for i in SkinManager._Colors:
  53. if i in colour_opts:
  54. try:
  55. SkinManager._Colors[i] = self.ConvertToRGB(
  56. self._Config.get("Colors", i))
  57. except Exception, e:
  58. print("error in ConvertToRGB %s" % str(e))
  59. continue
  60. def GiveColor(self,name):
  61. if name in SkinManager._Colors:
  62. return SkinManager._Colors[name]
  63. else:
  64. return pygame.Color(255,0,0)