skin_manager.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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["White"] = pygame.Color(255, 255, 255)
  38. SkinManager._Colors = Colors
  39. self._Config = CaseConfigParser()
  40. fname = "../skin/"+config.SKIN+"/config.cfg"
  41. try:
  42. self._Config.read(fname)
  43. except Exception, e:
  44. print("read skin config.cfg error %s" % str(e))
  45. return
  46. else:
  47. if "Colors" in self._Config.sections():
  48. colour_opts = self._Config.options("Colors")
  49. # print(colour_opts)
  50. for i in SkinManager._Colors:
  51. if i in colour_opts:
  52. try:
  53. SkinManager._Colors[i] = self.ConvertToRGB(
  54. self._Config.get("Colors", i))
  55. except Exception, e:
  56. print("error in ConvertToRGB %s" % str(e))
  57. continue
  58. def GiveColor(self,name):
  59. if name in SkinManager._Colors:
  60. return SkinManager._Colors[name]
  61. else:
  62. return pygame.Color(255,0,0)