From f604310bb2d0855ea409012f6e86c71d549d56f1 Mon Sep 17 00:00:00 2001 From: cuu Date: Wed, 13 Jun 2018 22:52:58 +0800 Subject: [PATCH] develop branch commit --- .gitignore | 1 + .../10_Settings/HelloWorld/__init__.py | 256 ++++++++++++++++++ Menu/GameShell/10_Settings/list_page.py | 5 +- sys.py/UI/page.py | 17 +- 4 files changed, 270 insertions(+), 9 deletions(-) create mode 100644 Menu/GameShell/10_Settings/HelloWorld/__init__.py diff --git a/.gitignore b/.gitignore index cc594d5..3feb624 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.pyc retroarch-core-options.cfg *.lpl +*.swp diff --git a/Menu/GameShell/10_Settings/HelloWorld/__init__.py b/Menu/GameShell/10_Settings/HelloWorld/__init__.py new file mode 100644 index 0000000..17f7f90 --- /dev/null +++ b/Menu/GameShell/10_Settings/HelloWorld/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- + +import pygame +#import math +import subprocess + +#from beeprint import pp +from libs.roundrects import aa_round_rect +#import gobject +#from wicd import misc +## local UI import +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 +from UI.scroller import ListScroller +from UI.icon_pool import MyIconPool +from UI.icon_item import IconItem +from UI.multilabel import MultiLabel + +class InfoPageListItem(object): + _PosX = 0 + _PosY = 0 + _Width = 0 + _Height = 20 + + _Labels = {} + _Icons = {} + _Fonts = {} + + _LinkObj = None + + def __init__(self): + self._Labels = {} + self._Icons = {} + self._Fonts = {} + + def SetSmallText(self,text): + + l = MultiLabel() + l.SetCanvasHWND(self._Parent._CanvasHWND) + l.Init(text,self._Fonts["small"]) + + self._Labels["Small"] = l + + #if self._Labels["Small"]._Width > self._Width: + # self._Width = self._Labels["Small"]._Width + if self._Labels["Small"]._Height >= self._Height: + self._Height = self._Labels["Small"]._Height+10 + + def Init(self,text): + + #self._Fonts["normal"] = fonts["veramono12"] + + l = Label() + l._PosX = 10 + l.SetCanvasHWND(self._Parent._CanvasHWND) + + l.Init(text,self._Fonts["normal"]) + self._Labels["Text"] = l + + def Draw(self): + + self._Labels["Text"]._PosY = self._PosY + self._Labels["Text"].Draw() + + if "Small" in self._Labels: + self._Labels["Small"]._PosX = self._Labels["Text"]._Width + 16 + self._Labels["Small"]._PosY = self._PosY + self._Labels["Small"].Draw() + + + + +class HelloWorldPage(Page): + _FootMsg = ["Nav.","","","Back",""] + _MyList = [] + _ListFontObj = fonts["varela13"] + + _AList = {} + + _Scrolled = 0 + + _BGwidth = 320 + _BGheight = 240-24-20 + + _DrawOnce = False + _Scroller = None + + def __init__(self): + Page.__init__(self) + self._Icons = {} + + def HelloWorld(self): + + hello = {} + hello["key"] = "helloworld" + hello["label"] = "HelloWorld " + hello["value"] = "GameShell" + self._AList["hello"] = hello + + def GenList(self): + + self._MyList = [] + + start_x = 0 + start_y = 10 + last_height = 0 + + for i,u in enumerate( ["hello"] ): + if u not in self._AList: + continue + + v = self._AList[u] + + li = InfoPageListItem() + li._Parent = self + li._PosX = start_x + li._PosY = start_y + last_height + li._Width = Width + li._Fonts["normal"] = self._ListFontObj + li._Fonts["small"] = fonts["varela12"] + + if self._AList[u]["label"] != "": + li.Init( self._AList[u]["label"] ) + else: + li.Init( self._AList[u]["key"] ) + + li._Flag = self._AList[u]["key"] + + li.SetSmallText( self._AList[u]["value"] ) + + last_height += li._Height + + self._MyList.append(li) + + def Init(self): + if self._Screen != None: + if self._Screen._CanvasHWND != None and self._CanvasHWND == None: + self._HWND = self._Screen._CanvasHWND + self._CanvasHWND = pygame.Surface( (self._Screen._Width,self._BGheight) ) + + self._PosX = self._Index*self._Screen._Width + self._Width = self._Screen._Width ## equal to screen width + self._Height = self._Screen._Height + + """ + bgpng = IconItem() + bgpng._ImgSurf = MyIconPool._Icons["about_bg"] + bgpng._MyType = ICON_TYPES["STAT"] + bgpng._Parent = self + bgpng.Adjust(0,0,self._BGwidth,self._BGheight,0) + self._Icons["bg"] = bgpng + """ + + self.HelloWorld() + + self.GenList() + + self._Scroller = ListScroller() + self._Scroller._Parent = self + self._Scroller._PosX = self._Width - 10 + self._Scroller._PosY = 2 + self._Scroller.Init() + self._Scroller.SetCanvasHWND(self._HWND) + + def ScrollDown(self): + dis = 10 + if abs(self._Scrolled) < (self._BGheight - self._Height)/2 + 0: + self._PosY -= dis + self._Scrolled -= dis + + def ScrollUp(self): + dis = 10 + if self._PosY < 0: + self._PosY += dis + self._Scrolled += dis + + + def OnLoadCb(self): + self._Scrolled = 0 + self._PosY = 0 + self._DrawOnce = False + + def OnReturnBackCb(self): + self.ReturnToUpLevelPage() + self._Screen.Draw() + self._Screen.SwapAndShow() + + def KeyDown(self,event): + if event.key == CurKeys["A"] or event.key == CurKeys["Menu"]: + self.ReturnToUpLevelPage() + self._Screen.Draw() + self._Screen.SwapAndShow() + + if event.key == CurKeys["Up"]: + self.ScrollUp() + self._Screen.Draw() + self._Screen.SwapAndShow() + if event.key == CurKeys["Down"]: + self.ScrollDown() + self._Screen.Draw() + self._Screen.SwapAndShow() + + + def Draw(self): + + if self._DrawOnce == False: + self.ClearCanvas() + #self._Ps.Draw() + if "bg" in self._Icons: + self._Icons["bg"].NewCoord(self._Width/2,self._Height/2 + (self._BGheight - Height)/2 + self._Screen._TitleBar._Height) + self._Icons["bg"].Draw() + + for i in self._MyList: + i.Draw() + + self._DrawOnce = True + + if self._HWND != None: + self._HWND.fill((255,255,255)) + + self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width, self._Height ) ) + + self._Scroller.UpdateSize(self._BGheight,abs(self._Scrolled)*3) + self._Scroller.Draw() + + + + +class APIOBJ(object): + + _Page = None + def __init__(self): + pass + def Init(self,main_screen): + self._Page = HelloWorldPage() + self._Page._Screen = main_screen + self._Page._Name ="HelloWorld" + self._Page.Init() + + def API(self,main_screen): + if main_screen !=None: + main_screen.PushPage(self._Page) + main_screen.Draw() + main_screen.SwapAndShow() + +OBJ = APIOBJ() +def Init(main_screen): + OBJ.Init(main_screen) +def API(main_screen): + OBJ.API(main_screen) + + diff --git a/Menu/GameShell/10_Settings/list_page.py b/Menu/GameShell/10_Settings/list_page.py index add612e..eebfb3e 100644 --- a/Menu/GameShell/10_Settings/list_page.py +++ b/Menu/GameShell/10_Settings/list_page.py @@ -82,7 +82,8 @@ class ListPage(Page): ["","Storage",""], ["","Update", ""], ["","About", "About"], - ["","PowerOFF","Power off"]] + ["","PowerOFF","Power off"], + ["","HelloWorld","HelloWorld"],] start_x = 0 start_y = 0 @@ -102,7 +103,7 @@ class ListPage(Page): else: li.Init(v[1]) - if v[1] == "Wifi" or v[1] == "Sound" or v[1] == "Brightness" or v[1] == "Storage" or v[1] == "Update" or v[1] == "About" or v[1] == "PowerOFF": + if v[1] == "Wifi" or v[1] == "Sound" or v[1] == "Brightness" or v[1] == "Storage" or v[1] == "Update" or v[1] == "About" or v[1] == "PowerOFF" or v[1] == "HelloWorld": li._LinkObj = __import__(v[1]) init_cb = getattr(li._LinkObj,"Init",None) if init_cb != None: diff --git a/sys.py/UI/page.py b/sys.py/UI/page.py index e5e2422..43e998a 100644 --- a/sys.py/UI/page.py +++ b/sys.py/UI/page.py @@ -117,7 +117,9 @@ class Page(object): rows = int( (self._IconNumbers * icon_width)/Width + 1) if rows < 1: rows = 1 - cnt = 0 + + cnt = 0 + for i in range(0,rows): for j in range(0,cols): start_x = icon_width/2 + j*icon_width @@ -231,7 +233,7 @@ class Page(object): rows = int((self._IconNumbers * icon_width)/self._Width + 1) if rows < 1: rows = 1 - cnt = 0 + cnt = 0 for i in range(0,rows): for j in range(0,cols): start_x = icon_width/2 + j*icon_width @@ -267,9 +269,9 @@ class Page(object): it._Parent = self it._Index = i it.Adjust(start_x+i*icon_width,start_y,icon_width,icon_height,0) - ps = PageSelector() - ps._IconSurf = blueselector_surf + ps = PageSelector() + ps._IconSurf = MyIconPool._Icons["blueselector"] ps._Parent = self ps.Init(start_x,start_y,92,92,128) self._Ps = ps @@ -362,7 +364,7 @@ class Page(object): diffa = [] for i in range(0,dff): diffa.append(0) - all_pieces.extend( diffa) + all_pieces.extend( diffa) return all_pieces @@ -406,8 +408,9 @@ class Page(object): if self._Icons[self._PrevIconIndex]._PosY < self._Height/2: self._Icons[self._PrevIconIndex]._PosY+=data2[i] - self.DrawIcons() - self._Screen.SwapAndShow() + + self.DrawIcons() + self._Screen.SwapAndShow() def IconsEasingLeft(self,icon_ew):