Browse Source

Merge pull request #183 from cuu/master

 fix fds leak and remove SkinMap,fonts.py
GNU 5 years ago
parent
commit
a5b10b16be
49 changed files with 167 additions and 190 deletions
  1. 4 5
      Menu/GameShell/10_Settings/About/__init__.py
  2. 0 1
      Menu/GameShell/10_Settings/Airplane/__init__.py
  3. 3 4
      Menu/GameShell/10_Settings/Bluetooth/__init__.py
  4. 0 1
      Menu/GameShell/10_Settings/Bluetooth/net_item.py
  5. 0 1
      Menu/GameShell/10_Settings/Brightness/brightness_page.py
  6. 0 2
      Menu/GameShell/10_Settings/ButtonsLayout/__init__.py
  7. 1 2
      Menu/GameShell/10_Settings/GateWay/__init__.py
  8. 1 2
      Menu/GameShell/10_Settings/Languages/__init__.py
  9. 1 2
      Menu/GameShell/10_Settings/Lima/__init__.py
  10. 1 2
      Menu/GameShell/10_Settings/Notification/__init__.py
  11. 1 2
      Menu/GameShell/10_Settings/PowerOptions/__init__.py
  12. 0 1
      Menu/GameShell/10_Settings/Sound/sound_page.py
  13. 3 4
      Menu/GameShell/10_Settings/Storage/__init__.py
  14. 0 1
      Menu/GameShell/10_Settings/Time/list_item.py
  15. 3 4
      Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py
  16. 2 3
      Menu/GameShell/10_Settings/Update/__init__.py
  17. 0 1
      Menu/GameShell/10_Settings/Wifi/net_item.py
  18. 2 3
      Menu/GameShell/10_Settings/Wifi/wifi_list.py
  19. 0 1
      Menu/GameShell/10_Settings/list_item.py
  20. 0 1
      Menu/GameShell/10_Settings/list_page.py
  21. 0 1
      Menu/GameShell/97_Music Player/list_item.py
  22. 3 3
      Menu/GameShell/97_Music Player/mpd_spectrum_page.py
  23. 1 2
      Menu/GameShell/97_Music Player/music_lib_list_page.py
  24. 1 2
      Menu/GameShell/97_Music Player/play_list_page.py
  25. 1 2
      Menu/GameShell/98_TinyCloud/__init__.py
  26. 0 1
      sys.py/UI/CommercialSoftwarePackage/__init__.py
  27. 1 2
      sys.py/UI/Emulator/fav_list_page.py
  28. 0 1
      sys.py/UI/Emulator/list_item.py
  29. 1 2
      sys.py/UI/Emulator/rom_list_page.py
  30. 0 1
      sys.py/UI/Emulator/rom_so_confirm_page.py
  31. 2 2
      sys.py/UI/above_all_patch.py
  32. 0 1
      sys.py/UI/confirm_page.py
  33. 5 4
      sys.py/UI/counter_screen.py
  34. 0 1
      sys.py/UI/delete_confirm_page.py
  35. 0 1
      sys.py/UI/download_process_page.py
  36. 0 67
      sys.py/UI/fonts.py
  37. 4 3
      sys.py/UI/foot_bar.py
  38. 2 2
      sys.py/UI/icon_pool.py
  39. 2 3
      sys.py/UI/keyboard.py
  40. 3 3
      sys.py/UI/lang_manager.py
  41. 5 5
      sys.py/UI/main_screen.py
  42. 59 2
      sys.py/UI/skin_manager.py
  43. 0 1
      sys.py/UI/text_bulletinboard.py
  44. 2 2
      sys.py/UI/textarea.py
  45. 6 5
      sys.py/UI/title_bar.py
  46. 3 4
      sys.py/UI/untitled_icon.py
  47. 0 21
      sys.py/UI/util_funcs.py
  48. 1 1
      sys.py/config.py
  49. 43 2
      sys.py/run.py

+ 4 - 5
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"] )

+ 0 - 1
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

+ 3 - 4
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
     

+ 0 - 1
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

+ 0 - 1
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

+ 0 - 2
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 = {}
 

+ 1 - 2
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 = {}
 

+ 1 - 2
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 = {}
 

+ 1 - 2
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 = {}
 

+ 1 - 2
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

+ 1 - 2
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 = {}
 

+ 0 - 1
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

+ 3 - 4
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)
 
         

+ 0 - 1
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

+ 3 - 4
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)
 

+ 2 - 3
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"] )

+ 0 - 1
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

+ 2 - 3
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          = ""

+ 0 - 1
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
 # - - - - - - - - - - - -- 

+ 0 - 1
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

+ 0 - 1
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

+ 3 - 3
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')

+ 1 - 2
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

+ 1 - 2
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"

+ 1 - 2
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 = {}

+ 0 - 1
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

+ 1 - 2
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

+ 0 - 1
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

+ 1 - 2
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

+ 0 - 1
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
 

+ 2 - 2
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')

+ 0 - 1
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

+ 5 - 4
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

+ 0 - 1
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

+ 0 - 1
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

+ 0 - 67
sys.py/UI/fonts.py

@@ -1,67 +0,0 @@
-# -*- 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 = "../skin/"+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)
-

+ 4 - 3
sys.py/UI/foot_bar.py

@@ -6,15 +6,16 @@ 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
 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):
 

+ 2 - 2
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):

+ 2 - 3
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)

+ 3 - 3
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

+ 5 - 5
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()

+ 59 - 2
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,9 @@ class SkinManager(object):
     
     _Colors = {}
     _Config = None
-    
+    _Fonts = {}
+    DefaultSkin = "../skin/default"
+
     def __init__(self):
         self.Init()
 
@@ -33,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)
@@ -52,7 +88,7 @@ class SkinManager(object):
 
         self._Config = CaseConfigParser()
 
-        fname = "../skin/"+config.SKIN+"/config.cfg"
+        fname = config.SKIN+"/config.ini"
 
         try:
             self._Config.read(fname)
@@ -72,12 +108,33 @@ 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]
         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

+ 0 - 1
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 

+ 2 - 2
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):

+ 6 - 5
sys.py/UI/title_bar.py

@@ -13,12 +13,12 @@ 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
 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 +26,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
@@ -299,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))
 

+ 3 - 4
sys.py/UI/untitled_icon.py

@@ -11,12 +11,11 @@ from datetime import datetime
 import base64
 from beeprint import pp
 
-from util_funcs import midRect, SkinMap
-from fonts import fonts
+from util_funcs import midRect
 
 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
 
@@ -28,7 +27,7 @@ class UntitledIcon(object):
     _Height = 80
 
     _Words = ["G", "s"]
-    _FontObj = fonts["varela40"]
+    _FontObj = MySkinManager.GiveFont("varela40")
 
     _BG = None  # initial surface
 

+ 0 - 21
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'])
 

+ 1 - 1
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

+ 43 - 2
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")