launcher_deot/sys.py/UI/icon_pool.py
2020-04-29 23:48:00 +08:00

60 lines
1.8 KiB
Python

# -*- 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()