skin_manager.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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["ReadOnlyText"] = pygame.Color(130,130,130)
  33. Colors["Front"] = pygame.Color(131, 199, 219)
  34. Colors["URL"] = pygame.Color(51, 166, 255)
  35. Colors["Line"] = pygame.Color(169, 169, 169)
  36. Colors["TitleBg"] = pygame.Color(228, 228, 228)
  37. Colors["Active"] = pygame.Color(175, 90, 0)
  38. Colors["Disabled"] = pygame.Color(204, 204, 204)
  39. Colors["White"] = pygame.Color(255, 255, 255)
  40. Colors["Black"] = pygame.Color(0, 0, 0)
  41. SkinManager._Colors = Colors
  42. self._Config = CaseConfigParser()
  43. fname = "../skin/"+config.SKIN+"/config.cfg"
  44. try:
  45. self._Config.read(fname)
  46. except Exception, e:
  47. print("read skin config.cfg error %s" % str(e))
  48. return
  49. else:
  50. if "Colors" in self._Config.sections():
  51. colour_opts = self._Config.options("Colors")
  52. # print(colour_opts)
  53. for i in SkinManager._Colors:
  54. if i in colour_opts:
  55. try:
  56. SkinManager._Colors[i] = self.ConvertToRGB(
  57. self._Config.get("Colors", i))
  58. except Exception, e:
  59. print("error in ConvertToRGB %s" % str(e))
  60. continue
  61. def GiveColor(self,name):
  62. if name in SkinManager._Colors:
  63. return SkinManager._Colors[name]
  64. else:
  65. return pygame.Color(255,0,0)
  66. ##global MySkinManager Handler
  67. MySkinManager = None
  68. def InitMySkinManager():
  69. global MySkinManager
  70. if MySkinManager == None:
  71. MySkinManager = SkinManager()
  72. InitMySkinManager()