Browse Source

Added simple global skin manager

Adam Shaw 5 years ago
parent
commit
47570323d8
2 changed files with 29 additions and 25 deletions
  1. 4 3
      Menu/GameShell/10_Settings/Storage/__init__.py
  2. 25 22
      sys.py/UI/skin_manager.py

+ 4 - 3
Menu/GameShell/10_Settings/Storage/__init__.py

@@ -6,6 +6,7 @@ import os
 
 ## local UI import
 from UI.page  import Page
+from UI.skin_manager import SkinManager
 from UI.constants import ICON_TYPES,Width,Height
 from UI.icon_item import IconItem
 from UI.icon_pool import MyIconPool
@@ -27,7 +28,7 @@ class StoragePage(Page):
     _BGmsg    = "%.1fGB of %.1fGB Used"
     _DskUsg   = None
 
-    _HighColor = pygame.Color(51,166,255)
+    _HighColor = pygame.Color(*SkinManager().GiveColor('High'))
     _FootMsg    = ["Nav.","","","Back",""]
     
     def __init__(self):
@@ -98,7 +99,7 @@ class StoragePage(Page):
 
         rect_ = midRect(self._Width/2,self._Height-30,170,17, Width,Height)
 
-        aa_round_rect(self._CanvasHWND,rect_, (193,193,193),5,0,(193,193,193))
+        aa_round_rect(self._CanvasHWND, rect_, SkinManager().GiveColor('Line'), 5, 0, SkinManager().GiveColor('Line'))
 
         
         rect2 = midRect(self._Width/2,self._Height-30,int(170*(1.0-usage_percent)),17, Width,Height)
@@ -106,7 +107,7 @@ class StoragePage(Page):
         rect2.left = rect_.left
         rect2.top  = rect_.top
         
-        aa_round_rect(self._CanvasHWND,rect2, (126,206,244),5,0,(126,206,244))        
+        aa_round_rect(self._CanvasHWND,rect2, SkinManager().GiveColor('Front'),5,0,SkinManager().GiveColor('Front'))        
         
 class APIOBJ(object):
 

+ 25 - 22
sys.py/UI/skin_manager.py

@@ -23,7 +23,7 @@ class SkinManager(object):
     _Config = None
     
     def __init__(self):
-        pass
+        self.Init()
 
     def ConvertToRGB(self,hexstr):
         
@@ -31,44 +31,47 @@ class SkinManager(object):
         return tuple(int(h[i:i+2], 16) for i in (0, 2 ,4))
     
     def Init(self):
-        
+        if not SkinManager._Colors:
+            self.SetColors()
+
+    def SetColors(self):
         Colors = {}
-        Colors["High"] = pygame.Color(51,166,255) 
-        Colors["Text"] = pygame.Color(83,83,83)
-        Colors["Front"] =  pygame.Color(131,199,219)
-        Colors["URL"]   = pygame.Color(51,166,255)
-        Colors["Line"]  =  pygame.Color(169,169,169)
-        Colors["TitleBg"] = pygame.Color(228,228,228)
-        Colors["Active"]  =  pygame.Color(175,90,0)
-        Colors["White"]  = pygame.Color(255,255,255)
-        
-        self._Colors = Colors
-        
+        Colors["High"] = pygame.Color(51, 166, 255)
+        Colors["Text"] = pygame.Color(83, 83, 83)
+        Colors["Front"] = pygame.Color(131, 199, 219)
+        Colors["URL"] = pygame.Color(51, 166, 255)
+        Colors["Line"] = pygame.Color(169, 169, 169)
+        Colors["TitleBg"] = pygame.Color(228, 228, 228)
+        Colors["Active"] = pygame.Color(175, 90, 0)
+        Colors["White"] = pygame.Color(255, 255, 255)
+
+        SkinManager._Colors = Colors
+
         self._Config = CaseConfigParser()
-        
+
         fname = "../skin/"+config.SKIN+"/config.cfg"
-        
+
         try:
             self._Config.read(fname)
-        except Exception,e:
+        except Exception, e:
             print("read skin config.cfg error %s" % str(e))
             return
         else:
             if "Colors" in self._Config.sections():
                 colour_opts = self._Config.options("Colors")
 #                print(colour_opts)
-                for i in self._Colors:
+                for i in SkinManager._Colors:
                     if i in colour_opts:
                         try:
-                            self._Colors[i] = self.ConvertToRGB(self._Config.get("Colors",i))
-                        except Exception,e:
+                            SkinManager._Colors[i] = self.ConvertToRGB(
+                                self._Config.get("Colors", i))
+                        except Exception, e:
                             print("error in ConvertToRGB %s" % str(e))
                             continue
-
     
     def GiveColor(self,name):
-        if name in self._Colors:
-            return self._Colors[name]
+        if name in SkinManager._Colors:
+            return SkinManager._Colors[name]
         else:
             return  pygame.Color(255,0,0)