class IconPool(object): _GameShellIconPath = SkinMap("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]
class IconPool(object): _GameShellIconPath = SkinMap("gameshell/icons/") _Icons = {} 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()
# -*- coding: utf-8 -*- import pygame import os ##local import from constants import Width, Height, ICON_TYPES, ALIGN from util_funcs import FileExists, midRect, SkinMap from icon_item import IconItem from fonts import fonts from multi_icon_item import MultiIconItem from icon_pool import MyIconPool from libs.roundrects import aa_round_rect icon_base_path = SkinMap("gameshell/footbar_icons/") class FootBarIcon(MultiIconItem): def TotalWidth(self): return self._Width + self._Label._Width def Draw(self): if self._Align == ALIGN["VCenter"]: #default if self._Label != None: self._Label._PosX = self._PosX - self._Label._Width / 2 self._Label._PosY = self._PosY + self._Height / 2 + 12 elif self._Align == ALIGN["HLeft"]: if self._Label != None: self._Label._PosX = self._PosX + self._Width / 2 + 3 self._Label._PosY = self._PosY - self._Label._Height / 2
##local import from constants import ICON_TYPES, Width, Height from fonts import fonts from icon_item import IconItem from multi_icon_item import MultiIconItem from icon_pool import MyIconPool from util_funcs import midRect, SwapAndShow, SkinMap from config import Battery from libs.roundrects import aa_round_rect from libs.DBUS import is_wifi_connected_now, wifi_strength icon_base_path = SkinMap("gameshell/titlebar_icons/") class TitleBar: _PosX = 0 _PosY = 0 _Width = Width _Height = 25 _BarHeight = 24.5 _LOffset = 3 _ROffset = 3 _Icons = {} _icon_width = 18 _icon_height = 18 _BorderWidth = 1 _CanvasHWND = None
from pygame.locals import * from sys import exit import os import sys from datetime import datetime import base64 from beeprint import pp from util_funcs import midRect, SkinMap from fonts import fonts from skin_manager import MySkinManager BlankPng = SkinMap("gameshell/blank.png") # 80x80 ## use blank circle as bg, Two alpha As Icon Label #Upper and Lower class UntitledIcon(object): _PosX = 0 _PosY = 0 _Width = 80 _Height = 80 _Words = ["G", "s"] _FontObj = fonts["varela40"] _BG = None # initial surface
def ReadTheDirIntoPages(self, _dir, pglevel, cur_page): if FileExists(_dir) == False and os.path.isdir(_dir) == False: return files = os.listdir(_dir) for i in sorted(files): if os.path.isdir(_dir + "/" + i): # TOPLEVEL only is dir if pglevel == 0: page = Page() page._Name = self.ExtraName(i) page._Icons = [] self._Pages.append(page) self.ReadTheDirIntoPages(_dir + "/" + i, pglevel + 1, self._Pages[len(self._Pages) - 1]) else: ## On CurPage now i2 = self.ExtraName(i) iconitem = IconItem() iconitem._FileName = i iconitem._CmdPath = "" iconitem.AddLabel(i2, self._IconFont) if FileExists(_dir + "/" + i + "/" + i2 + ".png"): ### 20_Prog/Prog.png , cut 20_ iconitem._ImageName = _dir + "/" + i + "/" + i2 + ".png" elif FileExists(SkinMap(_dir + "/" + i2 + ".png")): iconitem._ImageName = SkinMap(_dir + "/" + i2 + ".png") else: untitled = UntitledIcon() untitled.Init() if len(i2) > 1: untitled.SetWords(i2[:2]) elif len(i2) == 1: untitled.SetWords([i2[0], i2[0]]) else: untitled.SetWords(["G", "s"]) iconitem._ImgSurf = untitled.Surface() iconitem._ImageName = "" if self.IsPythonPackage(_dir + "/" + i): iconitem._MyType = ICON_TYPES["FUNC"] sys.path.append(_dir) iconitem._CmdPath = __import__(i) init_cb = getattr(iconitem._CmdPath, "Init", None) if init_cb != None: if callable(init_cb): iconitem._CmdPath.Init(self) cur_page._Icons.append(iconitem) elif self.IsEmulatorPackage(_dir + "/" + i): obj = {} obj["ROM"] = "" obj["ROM_SO"] = "" obj["EXT"] = [] obj["EXCLUDE"] = [] obj["FILETYPE"] = "file" obj["LAUNCHER"] = "" obj["TITLE"] = "Game" obj["SO_URL"] = "" obj["RETRO_CONFIG"] = "" ## try: f = open(_dir + "/" + i + "/" + emulator_flag) except IOError: print("action config open failed") return else: with f: content = f.readlines() content = [x.strip() for x in content] for c in content: pis = c.split("=") if len(pis) > 1: if "EXT" in pis[0]: obj[pis[0]] = pis[1].split(",") elif "EXCLUDE" in pis[0]: obj[pis[0]] = pis[1].split(",") else: obj[pis[0]] = pis[1] if FileExists(_dir + "/" + i + "/retroarch-local.cfg"): obj["RETRO_CONFIG"] = CmdClean( os.path.abspath(_dir + "/" + i + "/retroarch-local.cfg")) print("a local retroarch cfg:", obj["RETRO_CONFIG"]) em = MyEmulator() em._Emulator = obj em.Init(self) iconitem._CmdPath = em iconitem._MyType = ICON_TYPES["Emulator"] cur_page._Icons.append(iconitem) elif self.IsExecPackage(_dir + "/" + i): iconitem._MyType = ICON_TYPES["EXE"] iconitem._CmdPath = os.path.realpath(_dir + "/" + i + "/" + i2 + ".sh") MakeExecutable(iconitem._CmdPath) cur_page._Icons.append(iconitem) else: iconitem._MyType = ICON_TYPES["DIR"] iconitem._LinkPage = Page() iconitem._LinkPage._Name = i2 cur_page._Icons.append(iconitem) self.ReadTheDirIntoPages(_dir + "/" + i, pglevel + 1, iconitem._LinkPage) elif os.path.isfile(_dir + "/" + i) and pglevel > 0: if i.lower().endswith(icon_ext): i2 = self.ExtraName(i) #cmd = ReadTheFileContent(_dir+"/"+i) iconitem = IconItem() iconitem._FileName = i iconitem._CmdPath = os.path.realpath(_dir + "/" + i) MakeExecutable(iconitem._CmdPath) iconitem._MyType = ICON_TYPES["EXE"] if FileExists( SkinMap(_dir + "/" + ReplaceSuffix(i2, "png"))): iconitem._ImageName = SkinMap(_dir + "/" + ReplaceSuffix(i2, "png")) else: untitled = UntitledIcon() untitled.Init() if len(i2) > 1: untitled.SetWords(i2[:2]) elif len(i2) == 1: untitled.SetWords([i2[0], i2[0]]) else: untitled.SetWords(["G", "s"]) iconitem._ImgSurf = untitled.Surface() iconitem._ImageName = "" iconitem.AddLabel(i2.split(".")[0], self._IconFont) iconitem._LinkPage = None cur_page._Icons.append(iconitem)