From d3b508c3a12db2296542da37bdf40768424cc337 Mon Sep 17 00:00:00 2001 From: cuu Date: Fri, 26 Apr 2019 14:01:36 +0800 Subject: [PATCH 1/3] fix fds leak and remove SkinMap --- sys.py/UI/fonts.py | 2 +- sys.py/UI/foot_bar.py | 6 ++++-- sys.py/UI/icon_pool.py | 4 ++-- sys.py/UI/main_screen.py | 10 ++++----- sys.py/UI/skin_manager.py | 25 ++++++++++++++++++++-- sys.py/UI/title_bar.py | 5 +++-- sys.py/UI/untitled_icon.py | 4 ++-- sys.py/UI/util_funcs.py | 21 ------------------- sys.py/config.py | 2 +- sys.py/run.py | 43 +++++++++++++++++++++++++++++++++++++- 10 files changed, 83 insertions(+), 39 deletions(-) diff --git a/sys.py/UI/fonts.py b/sys.py/UI/fonts.py index 13903e1..20c4926 100644 --- a/sys.py/UI/fonts.py +++ b/sys.py/UI/fonts.py @@ -13,7 +13,7 @@ if not pygame.font.get_init(): fonts = {} if not fonts: - skinpath = "../skin/"+config.SKIN+"/truetype" + skinpath = config.SKIN+"/truetype" fonts_path = {} fonts_path["varela"] = "%s/VarelaRound-Regular.ttf" % skinpath diff --git a/sys.py/UI/foot_bar.py b/sys.py/UI/foot_bar.py index 2e80e5e..d908e64 100644 --- a/sys.py/UI/foot_bar.py +++ b/sys.py/UI/foot_bar.py @@ -6,7 +6,7 @@ import os ##local import from constants import Width,Height,ICON_TYPES,ALIGN -from util_funcs import FileExists,midRect,SkinMap +from util_funcs import FileExists,midRect from icon_item import IconItem from fonts import fonts from multi_icon_item import MultiIconItem @@ -14,7 +14,9 @@ from icon_pool import MyIconPool from libs.roundrects import aa_round_rect from lang_manager import MyLangManager from widget import Widget -icon_base_path = SkinMap("gameshell/footbar_icons/") +from skin_manager import MySkinManager + +icon_base_path = MySkinManager.GiveIcon("gameshell/footbar_icons/") class FootBarIcon(MultiIconItem): diff --git a/sys.py/UI/icon_pool.py b/sys.py/UI/icon_pool.py index dc04b1c..256a6af 100644 --- a/sys.py/UI/icon_pool.py +++ b/sys.py/UI/icon_pool.py @@ -6,12 +6,12 @@ from sys import exit import os import sys -from util_funcs import SkinMap +from skin_manager import MySkinManager ##pool only store surfaces class IconPool(object): - _GameShellIconPath = SkinMap("gameshell/icons/") + _GameShellIconPath = MySkinManager.GiveIcon("gameshell/icons/") _Icons = {} _Sizes = {} def __init__(self): diff --git a/sys.py/UI/main_screen.py b/sys.py/UI/main_screen.py index ffb96bc..50c6973 100644 --- a/sys.py/UI/main_screen.py +++ b/sys.py/UI/main_screen.py @@ -20,7 +20,7 @@ from page import Page,PageStack from title_bar import TitleBar from foot_bar import FootBar from constants import Width,Height,bg_color -from util_funcs import midRect,FileExists,ReplaceSuffix,ReadTheFileContent,CmdClean,MakeExecutable,SkinMap +from util_funcs import midRect,FileExists,ReplaceSuffix,ReadTheFileContent,CmdClean,MakeExecutable from keys_def import CurKeys from label import Label from untitled_icon import UntitledIcon @@ -469,8 +469,8 @@ class MainScreen(Widget): iconitem.AddLabel(MyLangManager.Tr(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") + elif FileExists( MySkinManager.GiveIcon(_dir+"/"+i2+".png") ): + iconitem._ImageName = MySkinManager.GiveIcon(_dir+"/"+i2+".png") else: untitled = UntitledIcon() untitled.Init() @@ -577,8 +577,8 @@ class MainScreen(Widget): 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")) + if FileExists( MySkinManager.GiveIcon( _dir+"/"+ReplaceSuffix(i2,"png"))): + iconitem._ImageName = MySkinManager.GiveIcon(_dir+"/"+ReplaceSuffix(i2,"png")) else: untitled = UntitledIcon() untitled.Init() diff --git a/sys.py/UI/skin_manager.py b/sys.py/UI/skin_manager.py index 1deee6a..9cb2fc9 100644 --- a/sys.py/UI/skin_manager.py +++ b/sys.py/UI/skin_manager.py @@ -4,6 +4,8 @@ import pygame import config import ConfigParser +from util_funcs import FileExists + class CaseConfigParser(ConfigParser.SafeConfigParser): def optionxform(self, optionstr): return optionstr @@ -21,7 +23,8 @@ class SkinManager(object): _Colors = {} _Config = None - + DefaultSkin = "../skin/default" + def __init__(self): self.Init() @@ -52,7 +55,7 @@ class SkinManager(object): self._Config = CaseConfigParser() - fname = "../skin/"+config.SKIN+"/config.cfg" + fname = config.SKIN+"/config.ini" try: self._Config.read(fname) @@ -78,6 +81,24 @@ class SkinManager(object): else: return pygame.Color(255,0,0) + def GiveIcon(self,orig_file_or_dir): + #doing a wrapper for items under /home/cpi/apps/Menu/*, to be like Menu/GameShell/* + if orig_file_or_dir.startswith("/home/cpi/apps/Menu"): + orig_file_or_dir = orig_file_or_dir.replace("/home/cpi/apps/Menu/","../Menu/GameShell/") + + if orig_file_or_dir.startswith(".."): + ret = orig_file_or_dir.replace("..",config.SKIN) + if FileExists(ret) == False: + ret = orig_file_or_dir.replace("..",self.DefaultSkin) + else: + ret = config.SKIN+"/sys.py/"+orig_file_or_dir + if FileExists(ret) == False: + ret = self.DefaultSkin+"/sys.py/"+orig_file_or_dir + + if FileExists( ret ): + return ret + else: ## if not existed both in default or custom skin ,return where it is + return orig_file_or_dir ##global MySkinManager Handler MySkinManager = None diff --git a/sys.py/UI/title_bar.py b/sys.py/UI/title_bar.py index 18a0514..28f88ff 100644 --- a/sys.py/UI/title_bar.py +++ b/sys.py/UI/title_bar.py @@ -18,7 +18,8 @@ from icon_item import IconItem from multi_icon_item import MultiIconItem from icon_pool import MyIconPool from lang_manager import MyLangManager -from util_funcs import midRect,SwapAndShow,SkinMap +from util_funcs import midRect,SwapAndShow +from skin_manager import MySkinManager from widget import Widget from config import Battery @@ -26,7 +27,7 @@ from libs.roundrects import aa_round_rect from libs.DBUS import is_wifi_connected_now,wifi_strength -icon_base_path = SkinMap("gameshell/titlebar_icons/") +icon_base_path = MySkinManager.GiveIcon("gameshell/titlebar_icons/") class TitleBar(Widget): _Width = Width _Height = 25 diff --git a/sys.py/UI/untitled_icon.py b/sys.py/UI/untitled_icon.py index c7f2b70..7fae615 100644 --- a/sys.py/UI/untitled_icon.py +++ b/sys.py/UI/untitled_icon.py @@ -11,12 +11,12 @@ from datetime import datetime import base64 from beeprint import pp -from util_funcs import midRect, SkinMap +from util_funcs import midRect from fonts import fonts from skin_manager import MySkinManager -BlankPng = SkinMap("gameshell/blank.png") # 80x80 +BlankPng = MySkinManager.GiveIcon("gameshell/blank.png") # 80x80 ## use blank circle as bg, Two alpha As Icon Label #Upper and Lower diff --git a/sys.py/UI/util_funcs.py b/sys.py/UI/util_funcs.py index 68262bf..3ca4f10 100644 --- a/sys.py/UI/util_funcs.py +++ b/sys.py/UI/util_funcs.py @@ -13,27 +13,6 @@ import string from Xlib import X,display import config -def SkinMap(orig_file_or_dir): - DefaultSkin = "default" - - #doing a wrapper for items under /home/cpi/apps/Menu/*, to be like Menu/GameShell/* - if orig_file_or_dir.startswith("/home/cpi/apps/Menu"): - orig_file_or_dir = orig_file_or_dir.replace("/home/cpi/apps/Menu/","../Menu/GameShell/") - - if orig_file_or_dir.startswith(".."): - ret = orig_file_or_dir.replace("..","../skin/"+config.SKIN) - if FileExists(ret) == False: - ret = orig_file_or_dir.replace("..","../skin/"+DefaultSkin) - else: - ret = "../skin/"+config.SKIN+"/sys.py/"+orig_file_or_dir - if FileExists(ret) == False: - ret = "../skin/"+DefaultSkin+"/sys.py/"+orig_file_or_dir - - if FileExists( ret ): - return ret - else: ## if not existed both in default or custom skin ,return where it is - return orig_file_or_dir - def get_git_revision_hash(): return subprocess.check_output(['git', 'rev-parse', 'HEAD']) diff --git a/sys.py/config.py b/sys.py/config.py index e5184a3..4225c11 100644 --- a/sys.py/config.py +++ b/sys.py/config.py @@ -14,7 +14,7 @@ UPDATE_URL="https://raw.githubusercontent.com/clockworkpi/CPI/master/launcher_ve VERSION="stable 1.24" -SKIN="default" +SKIN="../skin/default" ## three timer values in seconds: dim screen, close screen,PowerOff ## zero means no action diff --git a/sys.py/run.py b/sys.py/run.py index f2143a8..d53adaa 100644 --- a/sys.py/run.py +++ b/sys.py/run.py @@ -4,6 +4,9 @@ import dbus import dbus.service import sys import commands +import logging +import errno + from wicd import misc ##misc.to_bool ##misc.misc.noneToString @@ -288,7 +291,36 @@ def RecordKeyDns(thekey,main_screen): return True return False + + + +def release_self_fds(): + fds_flags= ["pipe","socket",".ttf"] + """List process currently open FDs and their target """ + if sys.platform != 'linux2': + raise NotImplementedError('Unsupported platform: %s' % sys.platform) + + ret = {} + base = '/proc/self/fd' + for num in os.listdir(base): + path = None + try: + path = os.readlink(os.path.join(base, num)) + except OSError as err: + # Last FD is always the "listdir" one (which may be closed) + if err.errno != errno.ENOENT: + raise + ret[int(num)] = path + for key in ret: + if ret[key] != None and isinstance(ret[key], str): + for i in fds_flags: + if i in ret[key]: + os.close(key) + break + return ret + + def event_process(event,main_screen): global sound_patch global everytime_keydown @@ -316,6 +348,7 @@ def event_process(event,main_screen): exec_app_cmd += event.message exec_app_cmd += "; sync & cd "+GetExePath()+"; exec python "+myscriptname print(exec_app_cmd) + release_self_fds() os.execlp("/bin/sh","/bin/sh","-c", exec_app_cmd) os.chdir( GetExePath()) os.exelp("python","python"," "+myscriptname) @@ -334,6 +367,7 @@ def event_process(event,main_screen): exec_app_cmd += event.message exec_app_cmd += "; sync & cd "+GetExePath()+"; exec python "+myscriptname print(exec_app_cmd) + release_self_fds() os.execlp("/bin/sh","/bin/sh","-c", exec_app_cmd) os.chdir( GetExePath()) os.exelp("python","python"," "+myscriptname) @@ -541,7 +575,14 @@ def PreparationInAdv(): if "arm" not in platform.machine(): return - + + if FileExists("%s/.gameshell_skin" % os.path.expanduser('~')) == True: + with open("%s/.gameshell_skin" % os.path.expanduser('~'),"r") as f: + gameshell_skin = f.read() + + gameshell_skin = gameshell_skin.strip() + config.SKIN= gameshell_skin + if FileExists(".powerlevel") == False: os.system("touch .powerlevel") From 25a191a4d062834c9327e41c1a162cc9e41fef57 Mon Sep 17 00:00:00 2001 From: cuu Date: Fri, 26 Apr 2019 17:33:44 +0800 Subject: [PATCH 2/3] empty fonts.py --- Menu/GameShell/10_Settings/About/__init__.py | 9 ++- .../10_Settings/Airplane/__init__.py | 1 - .../10_Settings/Bluetooth/__init__.py | 7 +- .../10_Settings/Bluetooth/net_item.py | 1 - .../10_Settings/Brightness/brightness_page.py | 1 - .../10_Settings/ButtonsLayout/__init__.py | 2 - .../GameShell/10_Settings/GateWay/__init__.py | 3 +- .../10_Settings/Languages/__init__.py | 3 +- Menu/GameShell/10_Settings/Lima/__init__.py | 3 +- .../10_Settings/Notification/__init__.py | 3 +- .../10_Settings/PowerOptions/__init__.py | 3 +- .../GameShell/10_Settings/Sound/sound_page.py | 1 - .../GameShell/10_Settings/Storage/__init__.py | 7 +- Menu/GameShell/10_Settings/Time/list_item.py | 1 - .../Time/timezone_lib_list_page.py | 7 +- Menu/GameShell/10_Settings/Update/__init__.py | 5 +- Menu/GameShell/10_Settings/Wifi/net_item.py | 1 - Menu/GameShell/10_Settings/Wifi/wifi_list.py | 5 +- Menu/GameShell/10_Settings/list_item.py | 1 - Menu/GameShell/10_Settings/list_page.py | 1 - Menu/GameShell/97_Music Player/list_item.py | 1 - .../97_Music Player/mpd_spectrum_page.py | 6 +- .../97_Music Player/music_lib_list_page.py | 3 +- .../97_Music Player/play_list_page.py | 3 +- Menu/GameShell/98_TinyCloud/__init__.py | 3 +- .../UI/CommercialSoftwarePackage/__init__.py | 1 - sys.py/UI/Emulator/fav_list_page.py | 3 +- sys.py/UI/Emulator/list_item.py | 1 - sys.py/UI/Emulator/rom_list_page.py | 3 +- sys.py/UI/Emulator/rom_so_confirm_page.py | 1 - sys.py/UI/above_all_patch.py | 4 +- sys.py/UI/confirm_page.py | 1 - sys.py/UI/counter_screen.py | 9 +-- sys.py/UI/delete_confirm_page.py | 1 - sys.py/UI/download_process_page.py | 1 - sys.py/UI/fonts.py | 65 ------------------- sys.py/UI/foot_bar.py | 1 - sys.py/UI/keyboard.py | 5 +- sys.py/UI/lang_manager.py | 6 +- sys.py/UI/skin_manager.py | 36 ++++++++++ sys.py/UI/text_bulletinboard.py | 1 - sys.py/UI/textarea.py | 4 +- sys.py/UI/title_bar.py | 6 +- sys.py/UI/untitled_icon.py | 3 +- 44 files changed, 84 insertions(+), 149 deletions(-) diff --git a/Menu/GameShell/10_Settings/About/__init__.py b/Menu/GameShell/10_Settings/About/__init__.py index 94e0821..30cafc1 100644 --- a/Menu/GameShell/10_Settings/About/__init__.py +++ b/Menu/GameShell/10_Settings/About/__init__.py @@ -12,15 +12,14 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyMenuOrB from UI.scroller import ListScroller from UI.icon_pool import MyIconPool from UI.icon_item import IconItem from UI.multilabel import MultiLabel - - +from UI.lang_manager import MyLangManager +from UI.skin_manager import MySkinManager class InfoPageListItem(object): _PosX = 0 @@ -79,7 +78,7 @@ class InfoPageListItem(object): class AboutPage(Page): _FootMsg = ["Nav.","","","Back",""] _MyList = [] - _ListFontObj = fonts["varela13"] + _ListFontObj = MyLangManager.TrFont("varela13") _AList = {} @@ -229,7 +228,7 @@ class AboutPage(Page): li._PosY = start_y + last_height li._Width = Width li._Fonts["normal"] = self._ListFontObj - li._Fonts["small"] = fonts["varela12"] + li._Fonts["small"] = MySkinManager.GiveFont("varela12") if self._AList[u]["label"] != "": li.Init( self._AList[u]["label"] ) diff --git a/Menu/GameShell/10_Settings/Airplane/__init__.py b/Menu/GameShell/10_Settings/Airplane/__init__.py index 917a7c1..f2a11a8 100644 --- a/Menu/GameShell/10_Settings/Airplane/__init__.py +++ b/Menu/GameShell/10_Settings/Airplane/__init__.py @@ -12,7 +12,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller diff --git a/Menu/GameShell/10_Settings/Bluetooth/__init__.py b/Menu/GameShell/10_Settings/Bluetooth/__init__.py index 2c3b5ac..4a943ab 100644 --- a/Menu/GameShell/10_Settings/Bluetooth/__init__.py +++ b/Menu/GameShell/10_Settings/Bluetooth/__init__.py @@ -15,7 +15,6 @@ from libs.DBUS import bus, adapter,devices from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -100,8 +99,8 @@ class BleInfoPage(Page): _FootMsg = ["Nav","Forget","Disconnect","Back",""] _MyList = [] _ListFontObj = MyLangManager.TrFont("varela15") - _ListSmFontObj = fonts["varela12"] # small font - _ListSm2FontObj= fonts["varela11"] + _ListSmFontObj = MySkinManager.GiveFont("varela12") # small font + _ListSm2FontObj= MySkinManager.GiveFont("varela11") _AList = {} _Path = "" @@ -380,7 +379,7 @@ class BluetoothPage(Page): _LastStatusMsg = "" _FootMsg = ["Nav","Info","Scan","Back","TryConnect"] _Scroller = None - _ListFontObj = fonts["notosanscjk15"] + _ListFontObj = MyLangManager.TrFont("notosanscjk15") _InfoPage = None diff --git a/Menu/GameShell/10_Settings/Bluetooth/net_item.py b/Menu/GameShell/10_Settings/Bluetooth/net_item.py index c3d173d..a9aa511 100644 --- a/Menu/GameShell/10_Settings/Bluetooth/net_item.py +++ b/Menu/GameShell/10_Settings/Bluetooth/net_item.py @@ -5,7 +5,6 @@ import pygame ## local UI import from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool diff --git a/Menu/GameShell/10_Settings/Brightness/brightness_page.py b/Menu/GameShell/10_Settings/Brightness/brightness_page.py index 7912acc..7494ff8 100644 --- a/Menu/GameShell/10_Settings/Brightness/brightness_page.py +++ b/Menu/GameShell/10_Settings/Brightness/brightness_page.py @@ -10,7 +10,6 @@ from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label from UI.icon_item import IconItem -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyMenuOrB from UI.slider import Slider diff --git a/Menu/GameShell/10_Settings/ButtonsLayout/__init__.py b/Menu/GameShell/10_Settings/ButtonsLayout/__init__.py index 7add4a9..53a09f3 100644 --- a/Menu/GameShell/10_Settings/ButtonsLayout/__init__.py +++ b/Menu/GameShell/10_Settings/ButtonsLayout/__init__.py @@ -9,7 +9,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, GetButtonsLayoutMode, SetButtonsLayoutMode, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -117,7 +116,6 @@ class UpdateConfirmPage(ConfirmPage): class ButtonsLayoutPage(Page): _FootMsg = ["Nav.","","UpdateRetroArch","Back","Toggle"] _MyList = [] - _ListFontObj = fonts["varela13"] _AList = {} diff --git a/Menu/GameShell/10_Settings/GateWay/__init__.py b/Menu/GameShell/10_Settings/GateWay/__init__.py index df66c1b..0c83c80 100644 --- a/Menu/GameShell/10_Settings/GateWay/__init__.py +++ b/Menu/GameShell/10_Settings/GateWay/__init__.py @@ -11,7 +11,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES,RESTARTUI from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,FileExists from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -78,7 +77,7 @@ class PageListItem(InfoPageListItem): class GateWayPage(Page): _FootMsg = ["Nav","Clear All","","Back","Select"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _AList = {} diff --git a/Menu/GameShell/10_Settings/Languages/__init__.py b/Menu/GameShell/10_Settings/Languages/__init__.py index 556327a..a6cc2b1 100644 --- a/Menu/GameShell/10_Settings/Languages/__init__.py +++ b/Menu/GameShell/10_Settings/Languages/__init__.py @@ -11,7 +11,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES,RESTARTUI from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -77,7 +76,7 @@ class PageListItem(InfoPageListItem): class LanguagesPage(Page): _FootMsg = ["Nav","","","Back","Select"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _AList = {} diff --git a/Menu/GameShell/10_Settings/Lima/__init__.py b/Menu/GameShell/10_Settings/Lima/__init__.py index 0dcba13..b0a15d2 100644 --- a/Menu/GameShell/10_Settings/Lima/__init__.py +++ b/Menu/GameShell/10_Settings/Lima/__init__.py @@ -11,7 +11,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES,RESTARTUI from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,FileExists from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -77,7 +76,7 @@ class PageListItem(InfoPageListItem): class GPUDriverPage(Page): _FootMsg = ["Nav","","","Back","Select"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _AList = {} diff --git a/Menu/GameShell/10_Settings/Notification/__init__.py b/Menu/GameShell/10_Settings/Notification/__init__.py index 30971d4..e5cb530 100644 --- a/Menu/GameShell/10_Settings/Notification/__init__.py +++ b/Menu/GameShell/10_Settings/Notification/__init__.py @@ -15,7 +15,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,FileExists,IsExecutable from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -126,7 +125,7 @@ class NotificationPage(Page): li._PosY = start_y + counter*InfoPageListItem._Height li._Width = Width-10 li._Fonts["normal"] = self._ListFontObj - li._Fonts["small"] = fonts["varela12"] + li._Fonts["small"] = MySkinManager.GiveFont("varela12") if IsExecutable(v): li._ReadOnly = True diff --git a/Menu/GameShell/10_Settings/PowerOptions/__init__.py b/Menu/GameShell/10_Settings/PowerOptions/__init__.py index b04442f..b92cce9 100644 --- a/Menu/GameShell/10_Settings/PowerOptions/__init__.py +++ b/Menu/GameShell/10_Settings/PowerOptions/__init__.py @@ -12,7 +12,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES,POWEROPT from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -292,7 +291,7 @@ class InfoPage(Page): class PowerOptionsPage(Page): _FootMsg = ["Nav","Detail","","Back","Select"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _AList = {} diff --git a/Menu/GameShell/10_Settings/Sound/sound_page.py b/Menu/GameShell/10_Settings/Sound/sound_page.py index 06d8ebb..fd18b9c 100644 --- a/Menu/GameShell/10_Settings/Sound/sound_page.py +++ b/Menu/GameShell/10_Settings/Sound/sound_page.py @@ -11,7 +11,6 @@ from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.icon_item import IconItem from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyMenuOrB from UI.slider import Slider diff --git a/Menu/GameShell/10_Settings/Storage/__init__.py b/Menu/GameShell/10_Settings/Storage/__init__.py index 7a9aeea..0cd306a 100644 --- a/Menu/GameShell/10_Settings/Storage/__init__.py +++ b/Menu/GameShell/10_Settings/Storage/__init__.py @@ -11,7 +11,6 @@ from UI.constants import ICON_TYPES,Width,Height from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from libs.roundrects import aa_round_rect @@ -59,7 +58,7 @@ class StoragePage(Page): self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self - self._BGpng.AddLabel(self._BGmsg % (self._DskUsg[1]-self._DskUsg[0], self._DskUsg[1]), fonts["varela15"]) + self._BGpng.AddLabel(self._BGmsg % (self._DskUsg[1]-self._DskUsg[0], self._DskUsg[1]), MySkinManager.GiveFont("varela15")) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) @@ -68,12 +67,12 @@ class StoragePage(Page): usage_percent = (self._DskUsg[0]/self._DskUsg[1] )*100.0 - self._BGlabel.Init("%d%%"% int(usage_percent),fonts["varela25"]) + self._BGlabel.Init("%d%%"% int(usage_percent),MySkinManager.GiveFont("varela25")) self._BGlabel.SetColor( self._HighColor ) self._FreeLabel = Label() self._FreeLabel.SetCanvasHWND(self._CanvasHWND) - self._FreeLabel.Init("Free",fonts["varela13"]) + self._FreeLabel.Init("Free",MySkinManager.GiveFont("varela13")) self._FreeLabel.SetColor(self._BGlabel._Color) diff --git a/Menu/GameShell/10_Settings/Time/list_item.py b/Menu/GameShell/10_Settings/Time/list_item.py index 6de8281..7463b0f 100644 --- a/Menu/GameShell/10_Settings/Time/list_item.py +++ b/Menu/GameShell/10_Settings/Time/list_item.py @@ -7,7 +7,6 @@ from libs.roundrects import aa_round_rect from UI.constants import ICON_TYPES from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect from UI.skin_manager import MySkinManager diff --git a/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py b/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py index 35dacd4..f4f9a87 100644 --- a/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py +++ b/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py @@ -10,7 +10,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB @@ -18,7 +17,7 @@ from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool from UI.scroller import ListScroller from UI.skin_manager import MySkinManager - +from UI.lang_manager import MyLangManager from list_item import ListItem @@ -86,7 +85,7 @@ class TimezoneListPage(Page): _FootMsg = ["Nav","","","Back","Select"] _MyList = [] _SwapMyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _MyStack = None _Scroller = None @@ -189,7 +188,7 @@ class TimezoneListPage(Page): self._BGpng._ImgSurf = MyIconPool._Icons["empty"] self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self - self._BGpng.AddLabel("No timezones found on system!", fonts["varela22"]) + self._BGpng.AddLabel("No timezones found on system!", MyLangManager.TrFont("varela22")) self._BGpng.SetLableColor(MySkinManager.GiveColor('Disabled')) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) diff --git a/Menu/GameShell/10_Settings/Update/__init__.py b/Menu/GameShell/10_Settings/Update/__init__.py index 96e77e0..9058dba 100644 --- a/Menu/GameShell/10_Settings/Update/__init__.py +++ b/Menu/GameShell/10_Settings/Update/__init__.py @@ -13,7 +13,6 @@ from UI.constants import ICON_TYPES,Width,Height,RUNEVT,RUNSH from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,CmdClean,get_git_revision_short_hash from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.confirm_page import ConfirmPage @@ -157,7 +156,7 @@ class UpdatePage(Page): _Icons = {} _FootMsg = ["Nav","","Check Update","Back",""] - _ListFontObj = fonts["varela15"] + _ListFontObj = MyLangManager.TrFont("varela15") _ConfirmPage = None _AList = {} _MyList = [] @@ -177,7 +176,7 @@ class UpdatePage(Page): li._PosY = start_y + i*InfoPageListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj - li._Fonts["small"] = fonts["varela12"] + li._Fonts["small"] = MySkinManager.GiveFont("varela12") if self._AList[v]["label"] != "": li.Init( self._AList[v]["label"] ) diff --git a/Menu/GameShell/10_Settings/Wifi/net_item.py b/Menu/GameShell/10_Settings/Wifi/net_item.py index 9888852..dc4ba88 100644 --- a/Menu/GameShell/10_Settings/Wifi/net_item.py +++ b/Menu/GameShell/10_Settings/Wifi/net_item.py @@ -5,7 +5,6 @@ import pygame ## local UI import from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool diff --git a/Menu/GameShell/10_Settings/Wifi/wifi_list.py b/Menu/GameShell/10_Settings/Wifi/wifi_list.py index 433ff1b..fa042ae 100644 --- a/Menu/GameShell/10_Settings/Wifi/wifi_list.py +++ b/Menu/GameShell/10_Settings/Wifi/wifi_list.py @@ -10,7 +10,6 @@ from wicd import misc from UI.constants import Width,Height from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,SwapAndShow from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller @@ -94,7 +93,7 @@ class WifiInfoPage(Page): li._PosY = start_y + i*InfoPageListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj - li._Fonts["small"] = fonts["varela12"] + li._Fonts["small"] = MyLangManager.TrFont("varela12") if self._AList[v]["label"] != "": li.Init( self._AList[v]["label"] ) @@ -267,7 +266,7 @@ class WifiList(Page): _FootMsg = ["Nav","Info","Scan","Back","Enter"] _EncMethods = None _Scroller = None - _ListFontObj = fonts["notosanscjk15"] + _ListFontObj = MyLangManager.TrFont("notosanscjk15") _InfoPage = None _CurBssid = "" diff --git a/Menu/GameShell/10_Settings/list_item.py b/Menu/GameShell/10_Settings/list_item.py index d0dcb23..52f83ca 100644 --- a/Menu/GameShell/10_Settings/list_item.py +++ b/Menu/GameShell/10_Settings/list_item.py @@ -7,7 +7,6 @@ import pygame ## local UI import from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.lang_manager import MyLangManager # a item for List # - - - - - - - - - - - -- diff --git a/Menu/GameShell/10_Settings/list_page.py b/Menu/GameShell/10_Settings/list_page.py index e126587..5b222ca 100644 --- a/Menu/GameShell/10_Settings/list_page.py +++ b/Menu/GameShell/10_Settings/list_page.py @@ -9,7 +9,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect,FileExists from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.scroller import ListScroller diff --git a/Menu/GameShell/97_Music Player/list_item.py b/Menu/GameShell/97_Music Player/list_item.py index 186201a..23ba788 100644 --- a/Menu/GameShell/97_Music Player/list_item.py +++ b/Menu/GameShell/97_Music Player/list_item.py @@ -7,7 +7,6 @@ from libs.roundrects import aa_round_rect from UI.constants import ICON_TYPES from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect from UI.skin_manager import MySkinManager diff --git a/Menu/GameShell/97_Music Player/mpd_spectrum_page.py b/Menu/GameShell/97_Music Player/mpd_spectrum_page.py index 6429193..fbd5e9c 100644 --- a/Menu/GameShell/97_Music Player/mpd_spectrum_page.py +++ b/Menu/GameShell/97_Music Player/mpd_spectrum_page.py @@ -15,12 +15,12 @@ from beeprint import pp from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.skin_manager import MySkinManager +from UI.lang_manager import MyLangManager from threading import Thread @@ -79,8 +79,8 @@ class MPDSpectrumPage(Page): _Selector=None _FootMsg = ["Nav","","","Back",""] _MyList = [] - _ListFont = fonts["veramono12"] - _SongFont = fonts["notosanscjk12"] + _ListFont = MyLangManager.TrFont("veramono12") + _SongFont = MyLangManager.TrFont("notosanscjk12") _PIFI = None _FIFO = None _Color = MySkinManager.GiveColor('Front') diff --git a/Menu/GameShell/97_Music Player/music_lib_list_page.py b/Menu/GameShell/97_Music Player/music_lib_list_page.py index 6d821e0..5bcc1b4 100644 --- a/Menu/GameShell/97_Music Player/music_lib_list_page.py +++ b/Menu/GameShell/97_Music Player/music_lib_list_page.py @@ -8,7 +8,6 @@ from libs.roundrects import aa_round_rect from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB @@ -85,7 +84,7 @@ class MusicLibListPage(Page): _FootMsg = ["Nav","","Scan","Back","Add to Playlist"] _MyList = [] _SwapMyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _MyStack = None _Scroller = None diff --git a/Menu/GameShell/97_Music Player/play_list_page.py b/Menu/GameShell/97_Music Player/play_list_page.py index e88346e..4cc6a4e 100644 --- a/Menu/GameShell/97_Music Player/play_list_page.py +++ b/Menu/GameShell/97_Music Player/play_list_page.py @@ -10,7 +10,6 @@ from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.icon_item import IconItem from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.icon_pool import MyIconPool @@ -63,7 +62,7 @@ class PlayListPage(Page): _Selector=None _FootMsg = ["Nav","Remove","RTA","Back","Play/Pause"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _Scroller = None _CurSongTime="0:0" diff --git a/Menu/GameShell/98_TinyCloud/__init__.py b/Menu/GameShell/98_TinyCloud/__init__.py index 767b104..46c8d69 100644 --- a/Menu/GameShell/98_TinyCloud/__init__.py +++ b/Menu/GameShell/98_TinyCloud/__init__.py @@ -6,7 +6,6 @@ from UI.constants import Width,Height,ICON_TYPES from UI.simple_name_space import SimpleNamespace from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.keys_def import CurKeys, IsKeyMenuOrB @@ -19,7 +18,7 @@ class TinyCloudPage(Page): _FootMsg = ["Nav","","","Back",""] _MyList = [] - _ListFontObj = fonts["varela13"] + _ListFontObj = MyLangManager.TrFont("varela13") _AList = {} _Labels = {} diff --git a/sys.py/UI/CommercialSoftwarePackage/__init__.py b/sys.py/UI/CommercialSoftwarePackage/__init__.py index eb33084..484dffa 100644 --- a/sys.py/UI/CommercialSoftwarePackage/__init__.py +++ b/sys.py/UI/CommercialSoftwarePackage/__init__.py @@ -27,7 +27,6 @@ from UI.constants import Width,Height,ICON_TYPES,RUNEVT,RESTARTUI #from UI.simple_name_space import SimpleNamespace from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.keys_def import CurKeys diff --git a/sys.py/UI/Emulator/fav_list_page.py b/sys.py/UI/Emulator/fav_list_page.py index f20735a..dc3f7d8 100644 --- a/sys.py/UI/Emulator/fav_list_page.py +++ b/sys.py/UI/Emulator/fav_list_page.py @@ -11,7 +11,6 @@ from UI.constants import Width,Height,ICON_TYPES,RUNEVT from UI.page import Page,PageSelector from UI.label import Label from UI.icon_item import IconItem -from UI.fonts import fonts from UI.util_funcs import midRect,CmdClean,FileExists from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.multi_icon_item import MultiIconItem @@ -94,7 +93,7 @@ class FavListPage(Page): _Selector=None _FootMsg = ["Nav","Remove","Scan","","Run"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.TrFont("notosanscjk15") _MyStack = None _Emulator = None _Parent = None diff --git a/sys.py/UI/Emulator/list_item.py b/sys.py/UI/Emulator/list_item.py index e46df36..adc4886 100644 --- a/sys.py/UI/Emulator/list_item.py +++ b/sys.py/UI/Emulator/list_item.py @@ -8,7 +8,6 @@ import os from UI.constants import ICON_TYPES from UI.page import Page from UI.label import Label -from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect from UI.skin_manager import MySkinManager diff --git a/sys.py/UI/Emulator/rom_list_page.py b/sys.py/UI/Emulator/rom_list_page.py index fa89d06..ef5a4a0 100644 --- a/sys.py/UI/Emulator/rom_list_page.py +++ b/sys.py/UI/Emulator/rom_list_page.py @@ -18,7 +18,6 @@ from UI.constants import Width,Height,ICON_TYPES,RUNEVT from UI.page import Page,PageSelector from UI.label import Label from UI.icon_item import IconItem -from UI.fonts import fonts from UI.util_funcs import midRect,CmdClean,FileExists from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.multi_icon_item import MultiIconItem @@ -101,7 +100,7 @@ class RomListPage(Page): _Selector=None _FootMsg = ["Nav","Del","Scan","Back","Run","AddFav"] _MyList = [] - _ListFont = fonts["notosanscjk15"] + _ListFont = MyLangManager.Tr("notosanscjk15") _MyStack = None _Emulator = None _Parent = None diff --git a/sys.py/UI/Emulator/rom_so_confirm_page.py b/sys.py/UI/Emulator/rom_so_confirm_page.py index 43af7dd..34db516 100644 --- a/sys.py/UI/Emulator/rom_so_confirm_page.py +++ b/sys.py/UI/Emulator/rom_so_confirm_page.py @@ -15,7 +15,6 @@ from libs.roundrects import aa_round_rect from UI.confirm_page import ConfirmPage from UI.download_process_page import DownloadProcessPage from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB -from UI.fonts import fonts from UI.multilabel import MultiLabel from UI.lang_manager import MyLangManager diff --git a/sys.py/UI/above_all_patch.py b/sys.py/UI/above_all_patch.py index 0a28f69..fee6853 100644 --- a/sys.py/UI/above_all_patch.py +++ b/sys.py/UI/above_all_patch.py @@ -14,10 +14,10 @@ from title_bar import TitleBar from foot_bar import FootBar from constants import Width,Height,bg_color from util_funcs import midRect -from fonts import fonts from keys_def import CurKeys from label import Label from skin_manager import MySkinManager +from lang_manager import MyLangManager from widget import Widget @@ -28,7 +28,7 @@ class AboveAllPatch(Widget): _Height=120 _Text ="" - _FontObj=fonts["veramono20"] + _FontObj= MyLangManager.TrFont("veramono20") _Parent =None _Color = MySkinManager.GiveColor('Text') _ValColor = MySkinManager.GiveColor('URL') diff --git a/sys.py/UI/confirm_page.py b/sys.py/UI/confirm_page.py index d932510..56e2ba0 100644 --- a/sys.py/UI/confirm_page.py +++ b/sys.py/UI/confirm_page.py @@ -9,7 +9,6 @@ from libs.roundrects import aa_round_rect from constants import Width,Height,ICON_TYPES from page import Page,PageSelector from label import Label -from fonts import fonts from util_funcs import midRect from keys_def import CurKeys from skin_manager import MySkinManager diff --git a/sys.py/UI/counter_screen.py b/sys.py/UI/counter_screen.py index b7a3928..36bcd69 100644 --- a/sys.py/UI/counter_screen.py +++ b/sys.py/UI/counter_screen.py @@ -6,17 +6,18 @@ import commands ## local package import from constants import Width,Height,RUNSYS from label import Label -from fonts import fonts + from full_screen import FullScreen from skin_manager import MySkinManager +from lang_manager import MyLangManager import config class CounterScreen(FullScreen): - _CounterFont = fonts["varela120"] - _TextFont1 = fonts["varela15"] - _TextFont2 = fonts["varela12"] + _CounterFont = MyLangManager.TrFont("varela120") + _TextFont1 = MyLangManager.TrFont("varela15") + _TextFont2 = MyLangManager.TrFont("varela12") _TopLabel = None _BottomLabel = None diff --git a/sys.py/UI/delete_confirm_page.py b/sys.py/UI/delete_confirm_page.py index b8167fa..177977a 100644 --- a/sys.py/UI/delete_confirm_page.py +++ b/sys.py/UI/delete_confirm_page.py @@ -9,7 +9,6 @@ import shutil from constants import Width,Height,ICON_TYPES from page import Page,PageSelector from label import Label -from fonts import fonts from util_funcs import midRect from keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from confirm_page import ConfirmPage diff --git a/sys.py/UI/download_process_page.py b/sys.py/UI/download_process_page.py index db94c05..c1bfc43 100644 --- a/sys.py/UI/download_process_page.py +++ b/sys.py/UI/download_process_page.py @@ -13,7 +13,6 @@ from UI.constants import Width,Height,ICON_TYPES,RUNEVT from UI.page import Page,PageSelector from UI.label import Label from UI.icon_item import IconItem -from UI.fonts import fonts from UI.util_funcs import midRect,CmdClean,FileExists from UI.keys_def import CurKeys, IsKeyMenuOrB from UI.multi_icon_item import MultiIconItem diff --git a/sys.py/UI/fonts.py b/sys.py/UI/fonts.py index 20c4926..555c783 100644 --- a/sys.py/UI/fonts.py +++ b/sys.py/UI/fonts.py @@ -1,67 +1,2 @@ # -*- coding: utf-8 -*- -import pygame -from pygame.locals import * -from sys import exit -import os -import sys - -import config - -if not pygame.font.get_init(): - pygame.font.init() - -fonts = {} -if not fonts: - skinpath = config.SKIN+"/truetype" - fonts_path = {} - - fonts_path["varela"] = "%s/VarelaRound-Regular.ttf" % skinpath - fonts_path["veramono"] = "%s/VeraMono.ttf" % skinpath - fonts_path["noto"] = "%s/NotoSansMono-Regular.ttf" % skinpath - fonts_path["notocjk"] = "%s/NotoSansCJK-Regular.ttf" % skinpath - - fonts["varela10"] = pygame.font.Font(fonts_path["varela"],10) - fonts["varela11"] = pygame.font.Font(fonts_path["varela"],11) - fonts["varela12"] = pygame.font.Font(fonts_path["varela"],12) - fonts["varela13"] = pygame.font.Font(fonts_path["varela"],13) - fonts["varela14"] = pygame.font.Font(fonts_path["varela"],14) - fonts["varela15"] = pygame.font.Font(fonts_path["varela"],15) - - fonts["varela16"] = pygame.font.Font(fonts_path["varela"],16) - fonts["varela18"] = pygame.font.Font(fonts_path["varela"],18) - fonts["varela20"] = pygame.font.Font(fonts_path["varela"],20) - fonts["varela22"] = pygame.font.Font(fonts_path["varela"],22) - fonts["varela23"] = pygame.font.Font(fonts_path["varela"],23) - fonts["varela24"] = pygame.font.Font(fonts_path["varela"],24) - fonts["varela25"] = pygame.font.Font(fonts_path["varela"],25) - fonts["varela26"] = pygame.font.Font(fonts_path["varela"],26) - fonts["varela27"] = pygame.font.Font(fonts_path["varela"],27) - fonts["varela28"] = pygame.font.Font(fonts_path["varela"],28) - fonts["varela34"] = pygame.font.Font(fonts_path["varela"],34) - fonts["varela40"] = pygame.font.Font(fonts_path["varela"],40) - fonts["varela120"] = pygame.font.Font(fonts_path["varela"],120) - - fonts["veramono25"] = pygame.font.Font(fonts_path["veramono"],25) - fonts["veramono24"] = pygame.font.Font(fonts_path["veramono"],24) - fonts["veramono23"] = pygame.font.Font(fonts_path["veramono"],23) - fonts["veramono22"] = pygame.font.Font(fonts_path["veramono"],22) - fonts["veramono21"] = pygame.font.Font(fonts_path["veramono"],21) - fonts["veramono20"] = pygame.font.Font(fonts_path["veramono"],20) - fonts["veramono18"] = pygame.font.Font(fonts_path["veramono"],18) - fonts["veramono16"] = pygame.font.Font(fonts_path["veramono"],16) - fonts["veramono15"] = pygame.font.Font(fonts_path["veramono"],15) - fonts["veramono14"] = pygame.font.Font(fonts_path["veramono"],14) - fonts["veramono13"] = pygame.font.Font(fonts_path["veramono"],13) - fonts["veramono12"] = pygame.font.Font(fonts_path["veramono"],12) - fonts["veramono11"] = pygame.font.Font(fonts_path["veramono"],11) - fonts["veramono10"] = pygame.font.Font(fonts_path["veramono"],10) - - for i in range(10,28): - fonts["notosansmono"+str(i)] = pygame.font.Font(fonts_path["noto"],i) - - for i in range(10,28): - fonts["notosanscjk"+str(i)] = pygame.font.Font(fonts_path["notocjk"],i) - - fonts["arial"] = pygame.font.SysFont("arial",16) - diff --git a/sys.py/UI/foot_bar.py b/sys.py/UI/foot_bar.py index d908e64..1a8f53c 100644 --- a/sys.py/UI/foot_bar.py +++ b/sys.py/UI/foot_bar.py @@ -8,7 +8,6 @@ import os from constants import Width,Height,ICON_TYPES,ALIGN from util_funcs import FileExists,midRect 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 diff --git a/sys.py/UI/keyboard.py b/sys.py/UI/keyboard.py index 6bc2027..bd71987 100644 --- a/sys.py/UI/keyboard.py +++ b/sys.py/UI/keyboard.py @@ -8,7 +8,6 @@ from libs import easing from UI.constants import Width,Height,ICON_TYPES from UI.page import Page,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB from UI.icon_item import IconItem @@ -108,7 +107,7 @@ class Keyboard(Page): self._Width = self._Screen._Width self._Height = self._Screen._Height - fontobj = fonts["veramono24"] + fontobj = MySkinManager.GiveFont("veramono24") word_margin = 15 start_x = (self._Width - fontobj.size( "".join(self._Secs[0][0]))[0]-len(self._Secs[0][0])*word_margin)/2+word_margin/2 @@ -141,7 +140,7 @@ class Keyboard(Page): else: if val == "_S": val = "Space" - ti._FontObj = fonts["veramono15"] + ti._FontObj = MySkinManager.GiveFont("veramono15") ti._Bold = True cur_alpha_size = ti._FontObj.size( val) diff --git a/sys.py/UI/lang_manager.py b/sys.py/UI/lang_manager.py index 5a027e7..f2b86f2 100644 --- a/sys.py/UI/lang_manager.py +++ b/sys.py/UI/lang_manager.py @@ -3,8 +3,8 @@ import os import pygame import config import ConfigParser +from skin_manager import MySkinManager from util_funcs import FileExists -from fonts import fonts class CaseConfigParser(ConfigParser.SafeConfigParser): def optionxform(self, optionstr): @@ -97,12 +97,12 @@ class LangManager(object): raise Exception('font string format error') if "English.ini" in self._ConfigFileName: - return fonts[orig_font_str] + return MySkinManager.GiveFont(orig_font_str) else: if font_size_number > 28: raise Exception('cjk font string format error '+ str(font_size_number)) - return fonts["notosanscjk"+str(font_size_number)] + return MySkinManager.GiveFont("notosanscjk%d" % font_size_number) ##global MyLangManager Handler MyLangManager = None diff --git a/sys.py/UI/skin_manager.py b/sys.py/UI/skin_manager.py index 9cb2fc9..c0cbdb0 100644 --- a/sys.py/UI/skin_manager.py +++ b/sys.py/UI/skin_manager.py @@ -23,6 +23,7 @@ class SkinManager(object): _Colors = {} _Config = None + _Fonts = {} DefaultSkin = "../skin/default" def __init__(self): @@ -36,7 +37,39 @@ class SkinManager(object): def Init(self): if not SkinManager._Colors: self.SetColors() + if not SkinManager._Fonts: + self.SetFonts() + + def SetFonts(self): + if not pygame.font.get_init(): + pygame.font.init() + + skinpath = config.SKIN+"/truetype" + fonts_path = {} + fonts_path["varela"] = "%s/VarelaRound-Regular.ttf" % skinpath + print(fonts_path["varela"]) + fonts_path["veramono"] = "%s/VeraMono.ttf" % skinpath + fonts_path["noto"] = "%s/NotoSansMono-Regular.ttf" % skinpath + fonts_path["notocjk"] = "%s/NotoSansCJK-Regular.ttf" % skinpath + + for i in range(10,29): + self._Fonts["varela%d"%i] = pygame.font.Font(fonts_path["varela"],i) + + self._Fonts["varela34"] = pygame.font.Font(fonts_path["varela"],34) + self._Fonts["varela40"] = pygame.font.Font(fonts_path["varela"],40) + self._Fonts["varela120"] = pygame.font.Font(fonts_path["varela"],120) + + for i in range(10,26): + self._Fonts["veramono%d"%i] = pygame.font.Font(fonts_path["veramono"],i) + + for i in range(10,28): + self._Fonts["notosansmono%d"%i] = pygame.font.Font(fonts_path["noto"],i) + for i in range(10,28): + self._Fonts["notosanscjk%d"%i] = pygame.font.Font(fonts_path["notocjk"],i) + + self._Fonts["arial"] = pygame.font.SysFont("arial",16) + def SetColors(self): Colors = {} Colors["High"] = pygame.Color(51, 166, 255) @@ -75,6 +108,9 @@ class SkinManager(object): print("error in ConvertToRGB %s" % str(e)) continue + def GiveFont(self,name): + return SkinManager._Fonts[name] + def GiveColor(self,name): if name in SkinManager._Colors: return SkinManager._Colors[name] diff --git a/sys.py/UI/text_bulletinboard.py b/sys.py/UI/text_bulletinboard.py index 408d840..52f9c86 100644 --- a/sys.py/UI/text_bulletinboard.py +++ b/sys.py/UI/text_bulletinboard.py @@ -6,7 +6,6 @@ from libs.roundrects import aa_round_rect ## local UI import from page import Page,PageStack,PageSelector from label import Label -from fonts import fonts from skin_manager import MySkinManager from lang_manager import MyLangManager from widget import Widget diff --git a/sys.py/UI/textarea.py b/sys.py/UI/textarea.py index 7b96fd1..5708223 100644 --- a/sys.py/UI/textarea.py +++ b/sys.py/UI/textarea.py @@ -6,8 +6,8 @@ from libs.roundrects import aa_round_rect ## local UI import from UI.page import Page,PageStack,PageSelector from UI.label import Label -from UI.fonts import fonts from UI.skin_manager import MySkinManager +from UI.lang_manager import MyLangManager from UI.widget import Widget class Textarea(Widget): @@ -26,7 +26,7 @@ class Textarea(Widget): pass def Init(self): - self._FontObj = fonts["veramono24"] + self._FontObj = MyLangManager.TrFont("veramono24") #pygame.font.Font(fonts_path["veramono"],24) def SubTextIndex(self): diff --git a/sys.py/UI/title_bar.py b/sys.py/UI/title_bar.py index 28f88ff..2f27b89 100644 --- a/sys.py/UI/title_bar.py +++ b/sys.py/UI/title_bar.py @@ -13,7 +13,6 @@ import alsaaudio ##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 @@ -300,13 +299,14 @@ class TitleBar(Widget): self._Title = title cur_time = datetime.now().strftime("%H:%M") - time_text_size = fonts["varela12"].size(cur_time) + time_text_font = MySkinManager.GiveFont("varela12") + time_text_size = time_text_font.size(cur_time) title_text_size = MyLangManager.TrFont("varela16").size(title) self._CanvasHWND.blit(MyLangManager.TrFont("varela16").render(title,True,self._SkinManager.GiveColor("Text")),midRect(title_text_size[0]/2+self._LOffset, title_text_size[1]/2+(self._BarHeight-title_text_size[1])/2, title_text_size[0],title_text_size[1],Width,Height)) - self._CanvasHWND.blit( fonts["varela12"].render(cur_time,True,self._SkinManager.GiveColor("Text")),midRect(Width-time_text_size[0]/2-self._ROffset, + self._CanvasHWND.blit( time_text_font.render(cur_time,True,self._SkinManager.GiveColor("Text")),midRect(Width-time_text_size[0]/2-self._ROffset, time_text_size[1]/2+(self._BarHeight-time_text_size[1])/2, time_text_size[0],time_text_size[1],Width,Height)) diff --git a/sys.py/UI/untitled_icon.py b/sys.py/UI/untitled_icon.py index 7fae615..978edaf 100644 --- a/sys.py/UI/untitled_icon.py +++ b/sys.py/UI/untitled_icon.py @@ -12,7 +12,6 @@ import base64 from beeprint import pp from util_funcs import midRect -from fonts import fonts from skin_manager import MySkinManager @@ -28,7 +27,7 @@ class UntitledIcon(object): _Height = 80 _Words = ["G", "s"] - _FontObj = fonts["varela40"] + _FontObj = MySkinManager.GiveFont("varela40") _BG = None # initial surface From 0981ac4c597a8b5d5aaee20dc8f0958880089914 Mon Sep 17 00:00:00 2001 From: cuu Date: Fri, 26 Apr 2019 17:34:23 +0800 Subject: [PATCH 3/3] delete sys.py/UI/fonts.py --- sys.py/UI/fonts.py | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 sys.py/UI/fonts.py diff --git a/sys.py/UI/fonts.py b/sys.py/UI/fonts.py deleted file mode 100644 index 555c783..0000000 --- a/sys.py/UI/fonts.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -