123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # -*- coding: utf-8 -*-
- import pygame
- from pygame.locals import *
- from sys import exit
- import os
- import sys
- from skin_manager import MySkinManager
- ##pool only store surfaces
- class IconPool(object):
- _GameShellIconPath = MySkinManager.GiveIcon("gameshell/icons/")
- _Icons = {}
- _Sizes = {}
- def __init__(self):
- self._Icons= {}
- def Init(self):
-
- files = os.listdir(self._GameShellIconPath)
- for i in files:
- if os.path.isfile(self._GameShellIconPath+"/"+i) and i.endswith(".png"):
- keyname = i.split(".")[0]
- self._Icons[keyname] = pygame.image.load(self._GameShellIconPath+"/"+i).convert_alpha()
- self._Sizes[keyname] = self._Icons[keyname].get_size()
-
- def Width(self,keyname):
- if keyname in self._Sizes:
- return self._Sizes[keyname][0]
-
- def Height(self,keyname):
- if keyname in self._Sizes:
- return self._Sizes[keyname][1]
-
- def GiveIconSurface(self,imgname): ## imgname is the png file name without .png
- if imgname in self._Icons:
- return self._Icons[imgname]
- else:
- icon_file = MySkinManager.GiveIcon("gameshell/icons/"+imgname+".png")
- if os.path.isfile(icon_file):
- keyname = imgname
- self._Icons[keyname] = pygame.image.load(icon_file).convert_alpha()
- self._Sizes[keyname] = self._Icons[keyname].get_size()
- return self._Icons[keyname]
-
- return None # this will cause panic,if not found both in theme and default skin folder
-
- ##global Handler
- MyIconPool = None
- def InitMyIconPool():
- global MyIconPool
- if MyIconPool == None:
- MyIconPool = IconPool()
- InitMyIconPool()
|