def Init(self): if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = BleInfoPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 #_AList is an object self.GenList() self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self._ConfirmPage1 = BleForgetConfirmPage() self._ConfirmPage1._Screen = self._Screen self._ConfirmPage1._Name = "ConfirmForget" self._ConfirmPage1._Parent = self self._ConfirmPage1.Init()
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 + 50)) self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height bgpng = MultiIconItem() bgpng._ImgSurf = MyIconPool.GiveIconSurface("about_bg") bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self.CpuInfo() self.MemInfo() self.CpuMhz() self.Uname() self.LauncherVersion() self.OsImageVersion() 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 Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList() gobject.timeout_add(850,self.GObjectInterval) self._BGpng = IconItem() self._BGpng._ImgSurf = MyIconPool._Icons["heart"] self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel("my favourites", fonts["varela18"]) self._BGpng.SetLableColor(pygame.Color(204,204,204)) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index*self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = InfoPageSelector() ps._PosX = 11 ps._Parent = self ps._Width = self._Width-10 self._Ps = ps self._PsIndex = 0 self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self._ConfirmBox = DeleteCoreConfirmPage() self._ConfirmBox._Screen = self._Screen self._ConfirmBox._Name = "Confirm to Delete?" self._ConfirmBox._Parent = self self._ConfirmBox.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height #self._CanvasHWND = pygame.Surface((self._Width,self._Height)) self._CanvasHWND = self._Screen._CanvasHWND ps = BleListSelector() ps._Parent = self ps._Width = Width - 12 self._Ps = ps self._PsIndex = 0 msgbox = BleListMessageBox() msgbox._CanvasHWND = self._CanvasHWND msgbox.Init(" ", MyLangManager.TrFont("veramono15")) msgbox._Parent = self self._MsgBox = msgbox self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self.GenNetworkList() self._InfoPage = BleInfoPage() self._InfoPage._Screen = self._Screen self._InfoPage._Name = "BluetoothInfo" self._InfoPage.Init()
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 done = IconItem() done._ImgSurf = MyIconPool.GiveIconSurface("done") done._MyType = ICON_TYPES["STAT"] done._Parent = self self._Icons["done"] = done ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 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 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.CpuInfo() self.MemInfo() self.CpuMhz() self.Uname() self.BatteryInfo() self.PortInfo1() self.PortInfo2() self.ThanksTimTam() 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 Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList() gobject.timeout_add(850, self.GObjectInterval) self._BGpng = IconItem() self._BGpng._ImgSurf = MyIconPool._Icons["heart"] self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel(MyLangManager.Tr("my favorite music"), MyLangManager.TrFont("varela18")) self._BGpng.SetLableColor(MySkinManager.GiveColor('Disabled')) self._BGpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
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 DialogBoxs = MultiIconItem() DialogBoxs._ImgSurf = MyIconPool.GiveIconSurface("buttonslayout") DialogBoxs._MyType = ICON_TYPES["STAT"] DialogBoxs._Parent = self DialogBoxs._IconWidth = 300 DialogBoxs._IconHeight = 150 DialogBoxs.Adjust(0, 0, 134, 372, 0) self._Icons["DialogBoxs"] = DialogBoxs 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) self._ConfirmPage = UpdateConfirmPage() self._ConfirmPage._LayoutMode = GetButtonsLayoutMode() self._ConfirmPage._Screen = self._Screen self._ConfirmPage._Name = "Overwrite RA conf" self._ConfirmPage._Parent = self self._ConfirmPage.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = InfoPageSelector() ps._Parent = self ps._PosX = 2 self._Ps = ps self._PsIndex = 0 # "" pkgname, label alist = [["", "Airplane", "Airplane Mode"], ["", "PowerOptions", "Power Options"], ["", "Wifi", "Wi-Fi"], ["", "Bluetooth", "Bluetooth"], ["", "Sound", "Sound Volume"], ["", "Brightness", "BackLight Brightness"], ["", "Storage", ""], ["", "Time", "Timezone"], ["", "Languages", "Languages"], ["", "Notification", "Notification"], ["", "Update", ""], ["", "About", "About"], ["", "PowerOFF", "Power off"], ["", "ButtonsLayout", "Buttons Layout"], ["", "LauncherGo", "Switch to LauncherGo"], ["", "Lima", "GPU driver switch"], ["", "GateWay", "Network gateway switch"]] start_x = 0 start_y = 0 sys.path.append(myvars.basepath) # add self as import path for i, v in enumerate(alist): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i * ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj if v[2] != "": li.Init(v[2]) 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" or v[1] == "HelloWorld": if FileExists(myvars.basepath + "/" + v[1]): li._LinkObj = __import__(v[1]) init_cb = getattr(li._LinkObj, "Init", None) if init_cb != None: if callable(init_cb): li._LinkObj.Init(self._Screen) self._MyList.append(li) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
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 airwire = IconItem() airwire._ImgSurf = MyIconPool._Icons["airwire"] airwire._MyType = ICON_TYPES["STAT"] airwire._Parent = self airwire.Adjust(0,0,5,43,0) self._Icons["airwire"] = airwire GS = IconItem() GS._ImgSurf = MyIconPool._Icons["GS"] GS._MyType = ICON_TYPES["STAT"] GS._Parent = self GS.Adjust(0,0,72,95,0) self._Icons["GS"] = GS DialogBoxs = MultiIconItem() DialogBoxs._ImgSurf = MyIconPool._Icons["DialogBoxs"] DialogBoxs._MyType = ICON_TYPES["STAT"] DialogBoxs._Parent = self DialogBoxs._IconWidth = 134 DialogBoxs._IconHeight = 93 DialogBoxs.Adjust(0,0,134,372,0) self._Icons["DialogBoxs"] = DialogBoxs """ bgpng = MultiIconItem() 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.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) self.OnLoadCb()
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 done = IconItem() done._ImgSurf = MyIconPool.GiveIconSurface("done") done._MyType = ICON_TYPES["STAT"] done._Parent = self self._Icons["done"] = done ps = InfoPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList() self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() self._Scroller.SetCanvasHWND(self._CanvasHWND) self._remove_page = YesCancelConfirmPage() self._remove_page._Screen = self._Screen self._remove_page._StartOrA_Event = self.RemoveGame self._remove_page._Name = "Are you sure?" self._remove_page.Init() self._Keyboard = Keyboard() self._Keyboard._Name = "Enter warehouse addr" self._Keyboard._FootMsg = ["Nav.", "Add", "ABC", "Backspace", "Enter"] self._Keyboard._Screen = self._Screen self._Keyboard.Init() self._Keyboard.SetPassword("github.com/clockworkpi/warehouse") self._Keyboard._Caller = self self._PreviewPage = ImageDownloadProcessPage() self._PreviewPage._Screen = self._Screen self._PreviewPage._Name = "Preview" self._PreviewPage.Init() self._LoadHousePage = LoadHousePage() self._LoadHousePage._Screen = self._Screen self._LoadHousePage._Name = "Warehouse" self._LoadHousePage._Caller = self self._LoadHousePage.Init()
def Init(self): self._SubPage = SelectPage() self._SubPage._Screen = self._Screen self._SubPage._Name = "Select Branch" self._SubPage.Init() self._ListFontObj = MyLangManager.TrFont("varela15") self._ListSmFontObj = MySkinManager.GiveFont("varela12") if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._HWND = self._Screen._CanvasHWND self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index*self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = GamePageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() start_x = 0 start_y = 0 i = 0 games = git.get_games() for game in games: li = InfoPageListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i*InfoPageListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj li._Fonts["small"] = self._ListSmFontObj li._LinkObj = game li.Init( game.split("/")[-1] ) sm_text = str(len(git.get_branches(game)[0])) li.SetSmallText(sm_text) li._PosX = 2 self._MyList.append(li) i = i + 1
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height #self._CanvasHWND = pygame.Surface((self._Width,self._Height)) self._CanvasHWND = self._Screen._CanvasHWND ps = WifiListSelector() ps._Parent = self ps._Width = Width - 12 self._Ps = ps self._PsIndex = 0 msgbox = WifiListMessageBox() msgbox._CanvasHWND = self._CanvasHWND msgbox.Init(" ",fonts["veramono12"]) msgbox._Parent = self self._MsgBox = msgbox self._EncMethods = misc.LoadEncryptionMethods() # load predefined templates from /etc/wicd/... """ { 'fields': [], 'name': 'WPA 1/2 (Passphrase)', 'optional': [], 'protected': [ ['apsk', 'Preshared_Key'], ], 'required': [ ['apsk', 'Preshared_Key'], ], 'type': 'wpa-psk', }, """ self.UpdateNetList(force_check=True,firstrun=True) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self._InfoPage = WifiInfoPage() self._InfoPage._Screen = self._Screen self._InfoPage._Name = "Wifi info" self._InfoPage.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 # "" pkgname, label alist = [["", "Wifi", "Wi-Fi"], ["", "Sound", "Sound Volume"], ["", "Brightness", "BackLight Brightness"], ["", "Storage", ""], ["", "Update", ""], ["", "About", "About"], ["", "PowerOFF", "Power off"]] start_x = 0 start_y = 0 sys.path.append(myvars.basepath) # add self as import path for i, v in enumerate(alist): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i * ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj if v[2] != "": li.Init(v[2]) 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": li._LinkObj = __import__(v[1]) init_cb = getattr(li._LinkObj, "Init", None) if init_cb != None: if callable(init_cb): li._LinkObj.Init(self._Screen) self._MyList.append(li) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList(self._Emulator["ROM"]) self._MyStack._Emulator = self._Emulator icon_for_list = MultiIconItem() icon_for_list._ImgSurf = self._Parent._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0, 0, 18, 18, 0) self._Icons["sys"] = icon_for_list bgpng = IconItem() bgpng._ImgSurf = MyIconPool._Icons["star"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.AddLabel(MyLangManager.Tr("MyFavGames"), MyLangManager.TrFont("varela18")) bgpng.SetLableColor(MySkinManager.GiveColor('Disabled')) bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen rom_so_confirm_page._Name = "Download Confirm" rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() self._RomSoConfirmDownloadPage = rom_so_confirm_page
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 start_x = 0 start_y = 0 if self.basepath not in sys.path: # add self as import path sys.path.append(self.basepath) for i, v in enumerate(self.MyPages): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i * ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj if v[1] != "": li.Init(v[1]) else: li.Init(v[0]) if FileExists(self.basepath + "/" + v[0]): li._LinkObj = __import__(v[0]) init_cb = getattr(li._LinkObj, "Init", None) if init_cb != None: if callable(init_cb): li._LinkObj.Init(self._Screen) self._MyList.append(li) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = InfoPageSelector() ps._PosX = 11 ps._Parent = self ps._Width = self._Width - 10 self._Ps = ps self._PsIndex = 0 self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): self._ListFontObj = MyLangManager.TrFont("varela15") self._ListSmFontObj = MySkinManager.GiveFont("varela12") if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._HWND = self._Screen._CanvasHWND self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index*self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = GamePageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList("/") icon_for_list = MultiIconItem() icon_for_list._ImgSurf = MyIconPool._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0,0,18,18,0) self._Icons["sys"] = icon_for_list self._BGpng = IconItem() self._BGpng._ImgSurf = MyIconPool._Icons["empty"] self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel("Please upload data over Wi-Fi", fonts["varela22"]) self._BGpng.SetLableColor(SkinManager().GiveColor('Disabled')) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList("/usr/share/zoneinfo/posix") icon_for_list = MultiIconItem() icon_for_list._ImgSurf = MyIconPool._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0,0,18,18,0) self._Icons["sys"] = icon_for_list self._BGpng = IconItem() self._BGpng._ImgSurf = MyIconPool._Icons["empty"] self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self 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) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init()
class RomListPage(Page): _Icons = {} _Selector = None _FootMsg = ["Nav", "Scan", "Del", "AddFav", "Run"] _MyList = [] _ListFont = fonts["notosanscjk15"] _MyStack = None _Emulator = None _Parent = None _Scroller = None _Scrolled = 0 _BGwidth = 56 _BGheight = 70 _RomSoConfirmDownloadPage = None def __init__(self): Page.__init__(self) self._Icons = {} self._CanvasHWND = None self._MyList = [] self._MyStack = RomStack() self._Emulator = {} def GeneratePathList(self, path): if os.path.isdir(path) == False: return False files_path = glob.glob(path + "/*") ret = [] for i, v in enumerate(files_path): dirmap = {} if os.path.isdir( v) and self._Emulator["FILETYPE"] == "dir": ## like DOSBOX gameshell_bat = self._Emulator["EXT"][0] stats = os.stat(v) if stats.st_gid == self._Parent._FavGID: ##skip fav roms continue if FileExists(v + "/" + gameshell_bat): dirmap["gamedir"] = v.decode("utf8") ret.append(dirmap) if os.path.isfile(v) and self._Emulator["FILETYPE"] == "file": stats = os.stat(v) if stats.st_gid == self._Parent._FavGID: ##skip fav roms continue bname = os.path.basename(v) ### filter extension if len(bname) > 1: is_excluded = False for exclude_ext in self._Emulator[ "EXCLUDE"]: ## only compares filename endswith ext in EXCLUDE,splited by , if len(exclude_ext) > 1 and bname.endswith( exclude_ext): is_excluded = True break if not is_excluded: pieces = bname.split(".") if len(pieces) > 1: if pieces[len(pieces) - 1].lower() in self._Emulator["EXT"]: dirmap["file"] = v.decode("utf8") ret.append(dirmap) # else: # print("not file or dir") return ret def SyncList(self, path): alist = self.GeneratePathList(path) if alist == False: print("listfiles return false") return self._MyList = [] start_x = 0 start_y = 0 hasparent = 0 if self._MyStack.Length() > 0: hasparent = 1 li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y li._Width = Width li._Fonts["normal"] = self._ListFont li._MyType = ICON_TYPES["DIR"] li._Parent = self li.Init("[..]") self._MyList.append(li) for i, v in enumerate(sorted(alist)): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + (i + hasparent) * ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFont li._MyType = ICON_TYPES["FILE"] li._Parent = self if "directory" in v: li._MyType = ICON_TYPES["DIR"] li.Init(v["directory"]) elif "file" in v: li.Init(v["file"]) elif "gamedir" in v: li.Init(v["gamedir"]) else: li.Init("NoName") self._MyList.append(li) def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList(self._Emulator["ROM"]) ### will also mkdir of the ***ROM self try: os.makedirs(self._Emulator["ROM"] + "/.Trash") except OSError: if not os.path.isdir(self._Emulator["ROM"] + "/.Trash"): raise try: os.makedirs(self._Emulator["ROM"] + "/.Fav") except OSError: if not os.path.isdir(self._Emulator["ROM"] + "/.Fav"): raise self._MyStack._Emulator = self._Emulator icon_for_list = MultiIconItem() icon_for_list._ImgSurf = self._Parent._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0, 0, 18, 18, 0) self._Icons["sys"] = icon_for_list bgpng = IconItem() bgpng._ImgSurf = MyIconPool._Icons["empty"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.AddLabel(MyLangManager.Tr("Please upload data over Wi-Fi"), MyLangManager.TrFont("varela22")) bgpng.SetLableColor(MySkinManager.GiveColor('Disabled')) bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen rom_so_confirm_page._Name = "Download Confirm" rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() self._RomSoConfirmDownloadPage = rom_so_confirm_page def ScrollUp(self): if len(self._MyList) == 0: return tmp = self._PsIndex self._PsIndex -= self._ScrollStep if self._PsIndex < 0: self._PsIndex = 0 dy = tmp - self._PsIndex cur_li = self._MyList[self._PsIndex] if cur_li._PosY < 0: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._MyList[i]._Height * dy self._Scrolled += dy def ScrollDown(self): if len(self._MyList) == 0: return tmp = self._PsIndex self._PsIndex += self._ScrollStep if self._PsIndex >= len(self._MyList): self._PsIndex = len(self._MyList) - 1 dy = self._PsIndex - tmp cur_li = self._MyList[self._PsIndex] if cur_li._PosY + cur_li._Height > self._Height: for i in range(0, len(self._MyList)): self._MyList[i]._PosY -= self._MyList[i]._Height * dy self._Scrolled -= dy def SyncScroll(self): ## if self._Scrolled == 0: return if self._PsIndex < len(self._MyList): cur_li = self._MyList[self._PsIndex] if self._Scrolled > 0: if cur_li._PosY < 0: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._Scrolled * self._MyList[ i]._Height elif self._Scrolled < 0: if cur_li._PosY + cur_li._Height > self._Height: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._Scrolled * self._MyList[ i]._Height def Click(self): if len(self._MyList) == 0: return if self._PsIndex > len(self._MyList) - 1: return cur_li = self._MyList[self._PsIndex] if cur_li._MyType == ICON_TYPES["DIR"]: if cur_li._Path == "[..]": self._MyStack.Pop() self.SyncList(self._MyStack.Last()) self._PsIndex = 0 else: self._MyStack.Push(self._MyList[self._PsIndex]._Path) self.SyncList(self._MyStack.Last()) self._PsIndex = 0 if cur_li._MyType == ICON_TYPES["FILE"]: self._Screen._MsgBox.SetText("Launching") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() if self._Emulator["FILETYPE"] == "dir": path = cur_li._Path + "/" + self._Emulator["EXT"][0] else: path = cur_li._Path print("Run ", path) if self._Emulator["FILETYPE"] == "dir": escaped_path = CmdClean(path) else: escaped_path = CmdClean(path) custom_config = "" if self._Emulator["RETRO_CONFIG"] != "" and len( self._Emulator["RETRO_CONFIG"]) > 5: custom_config = " -c " + self._Emulator["RETRO_CONFIG"] cmdpath = " ".join( (self._Emulator["LAUNCHER"], self._Emulator["ROM_SO"], custom_config, escaped_path)) if self._Emulator[ "ROM_SO"] == "": #empty means No needs for rom so pygame.event.post(pygame.event.Event(RUNEVT, message=cmdpath)) else: if FileExists(self._Emulator["ROM_SO"]): pygame.event.post( pygame.event.Event(RUNEVT, message=cmdpath)) else: self._Screen.PushPage(self._RomSoConfirmDownloadPage) self._Screen.Draw() self._Screen.SwapAndShow() return self._Screen.Draw() self._Screen.SwapAndShow() def ReScan(self): if self._MyStack.Length() == 0: self.SyncList(self._Emulator["ROM"]) else: self.SyncList(self._MyStack.Last()) idx = self._PsIndex if idx > (len(self._MyList) - 1): idx = len(self._MyList) if idx > 0: idx -= 1 elif idx == 0: ##nothing in _MyList pass self._PsIndex = idx ## sync PsIndex self.SyncScroll() def OnReturnBackCb(self): self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() def SpeedScroll(self, thekey): if self._Screen._LastKey == thekey: self._ScrollStep += 1 if self._ScrollStep >= 5: self._ScrollStep = 5 else: self._ScrollStep = 1 cur_time = time.time() if cur_time - self._Screen._LastKeyDown > 0.3: self._ScrollStep = 1 def KeyDown(self, event): if event.key == CurKeys["Menu"]: self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Right"]: self._Screen.PushCurPage() self._Screen.SetCurPage(self._Parent.FavListPage) self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Up"]: self.SpeedScroll(event.key) self.ScrollUp() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Down"]: self.SpeedScroll(event.key) self.ScrollDown() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Enter"]: self.Click() if event.key == CurKeys["A"]: if len(self._MyList) == 0: return cur_li = self._MyList[self._PsIndex] if cur_li.IsFile(): # remove any dup first try: os.system("chgrp " + self._Parent._FavGname + " " + CmdClean(cur_li._Path)) except: pass self._Screen._MsgBox.SetText("AddFavList") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() pygame.time.delay(600) self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["X"]: #Scan current self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Y"]: #del if len(self._MyList) == 0: return cur_li = self._MyList[self._PsIndex] if cur_li.IsFile(): self._Parent.DeleteConfirmPage.SetFileName(cur_li._Path) self._Parent.DeleteConfirmPage.SetTrashDir( self._Emulator["ROM"] + "/.Trash") self._Screen.PushCurPage() self._Screen.SetCurPage(self._Parent.DeleteConfirmPage) self._Screen.Draw() self._Screen.SwapAndShow() def Draw(self): self.ClearCanvas() if len(self._MyList) == 0: self._Icons["bg"].NewCoord(self._Width / 2, self._Height / 2) self._Icons["bg"].Draw() else: if len(self._MyList) * ListItem._Height > self._Height: self._Ps._Width = self._Width - 10 self._Ps.Draw() for i in self._MyList: if i._PosY > self._Height + self._Height / 2: break if i._PosY < 0: continue i.Draw() self._Scroller.UpdateSize( len(self._MyList) * ListItem._Height, self._PsIndex * ListItem._Height) self._Scroller.Draw() else: self._Ps._Width = self._Width self._Ps.Draw() for i in self._MyList: i.Draw()
def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList(self._Emulator["ROM"]) ### will also mkdir of the ***ROM self try: os.makedirs(self._Emulator["ROM"] + "/.Trash") except OSError: if not os.path.isdir(self._Emulator["ROM"] + "/.Trash"): raise try: os.makedirs(self._Emulator["ROM"] + "/.Fav") except OSError: if not os.path.isdir(self._Emulator["ROM"] + "/.Fav"): raise self._MyStack._Emulator = self._Emulator icon_for_list = MultiIconItem() icon_for_list._ImgSurf = self._Parent._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0, 0, 18, 18, 0) self._Icons["sys"] = icon_for_list bgpng = IconItem() bgpng._ImgSurf = MyIconPool._Icons["empty"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.AddLabel(MyLangManager.Tr("Please upload data over Wi-Fi"), MyLangManager.TrFont("varela22")) bgpng.SetLableColor(MySkinManager.GiveColor('Disabled')) bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen rom_so_confirm_page._Name = "Download Confirm" rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() self._RomSoConfirmDownloadPage = rom_so_confirm_page
class AboutPage(Page): _FootMsg = ["Nav.","","","Back",""] _MyList = [] _ListFontObj = MyLangManager.TrFont("varela13") _AList = {} _Scrolled = 0 _BGwidth = 480 _BGheight = 272 _DrawOnce = False _Scroller = None def __init__(self): Page.__init__(self) self._Icons = {} def Uname(self): out = {} out["key"]="uname" out["label"]= "Kernel:" st = subprocess.check_output(["uname","-srmo"]) st = st.strip("\n") st = st.strip("\t") out["value"] = st self._AList["uname"] = out return def CpuMhz(self): try: with open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq") as f: content = f.readlines() content = [x.strip() for x in content] except: print("open %s failed" % "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq") content = ["0"] mhz = int(content[0]) / 1000.0 cpuscalemhz = {} cpuscalemhz["key"] = "cpuscalemhz" cpuscalemhz["label"] = "CPU Mhz:" cpuscalemhz["value"] = str(mhz) self._AList["cpuscalemhz"] = cpuscalemhz return def CpuInfo(self): last_processor = 0 with open("/proc/cpuinfo") as f: for line in f: if line.startswith("processor"): parts = line.split(":") cur_processor_number = int( parts[1].strip()) if cur_processor_number > last_processor: last_processor = cur_processor_number if line.startswith("model name"): parts = line.split(":") # print( parts[1].strip() ) processor = {} processor["key"]="processor" processor["label"] = "Processor:" processor["value"] = parts[1].strip() self._AList["processor"] = processor if line.startswith("cpu MHz"): parts = line.split(":") # print(parts[1].strip() ) cpumhz = {} cpumhz["key"] = "cpumhz" cpumhz["label"] = "CPU MHz:" cpumhz["value"] = parts[1].strip() self._AList["cpumhz"] = cpumhz if line.startswith("cpu cores"): parts = line.split(":") # print(parts[1].strip() ) cpucores = {} cpucores["key"] = "cpucores" cpucores["label"] = "CPU cores:" cpucores["value"] = parts[1].strip() self._AList["cpucores"] = cpucores if line.startswith("Features"): parts = line.split(":") # print(parts[1].strip() ) f_ = {} f_["key"] = "features" f_["label"] = "Features:" f_["value"] = parts[1].strip() self._AList["features"] = f_ if line.startswith("flags"): parts = line.split(":") # print(parts[1].strip() ) flags = {} flags["key"] = "flags" flags["label"] = "Flags:" flags["value"] = parts[1].strip() self._AList["flags"] = flags if last_processor > 0: arm_cores = {} arm_cores["key"]= "armcores" arm_cores["label"] = "CPU cores:" arm_cores["value"] = str(last_processor + 1) self._AList["armcores"] = arm_cores def MemInfo(self): with open("/proc/meminfo") as f: for line in f: if line.startswith("MemTotal"): parts = line.split(":") parts[1] = parts[1].replace("kB","") print( parts[1].strip() ) memory = {} memory["key"] = "memory" memory["label"] = "Memory:" memory["value"] = str( int(parts[1].strip())/1000.0) +" MB" self._AList["memory"] = memory break def BatteryInfo(self): batteryinfo = {} batteryinfo["key"] = "batteryinfo" batteryinfo["label"] = "Battery:" charging_string = "Discharging" if BatteryAbstraction.IsCharging(): charging_string = "Charging" batteryinfo["value"] = "{}/{} mAh, {}%, {}".format( BatteryAbstraction.CurrentVoltage(), BatteryAbstraction.MaxVoltage(), BatteryAbstraction.AsPercentage(), charging_string ) self._AList["batteryinfo"] = batteryinfo def PortInfo1(self): portinfo = {} portinfo["key"] = "portinfo1" portinfo["label"] = "Originally created for ClockworkPi Gameshell." portinfo["value"] = "" self._AList["portinfo1"] = portinfo def PortInfo2(self): portinfo = {} portinfo["key"] = "portinfo2" portinfo["label"] = "Ported to Pocket CHIP by omgmog." portinfo["value"] = "" self._AList["portinfo2"] = portinfo def ThanksTimTam(self): thanks = {} thanks["key"] = "thankstimtam" thanks["label"] = "PocketCHIP Graphic created by TimTam" thanks["value"] = "" self._AList["thankstimtam"] = thanks def GenList(self): self._MyList = [] start_x = 0 start_y = 10 last_height = 0 for i,u in enumerate( ["cpuscalemhz","memory","uname", "batteryinfo", "portinfo1","portinfo2","thankstimtam"] ): 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"] = MySkinManager.GiveFont("varela12") if self._AList[u]["label"] != "": li.Init( self._AList[u]["label"] ) else: # li.Init( self._AList[u]["key"] ) li.Init("") li._Flag = self._AList[u]["key"] if self._AList[u]["value"] != "": li.SetSmallText( self._AList[u]["value"] ) else: li.SetSmallText("") 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.CpuInfo() self.MemInfo() self.CpuMhz() self.Uname() self.BatteryInfo() self.PortInfo1() self.PortInfo2() self.ThanksTimTam() 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 + 50: 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 IsKeyMenuOrB(event.key): self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() # We don't need this page to be scrolly # 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() 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 ) )
class GPUDriverPage(Page): _FootMsg = ["Nav", "", "", "Back", "Select"] _MyList = [] _ListFont = MyLangManager.TrFont("notosanscjk12") _AList = {} _Scrolled = 0 _BGwidth = 320 _BGheight = 240 - 24 - 20 _DrawOnce = False _Scroller = None _InfoPage = None def __init__(self): Page.__init__(self) self._Icons = {} def GenList(self): self._MyList = [] start_x = 0 start_y = 0 last_height = 0 drivers = [["fbturbo", "FBTURBO driver (Software Rendering)"], [ "modesetting", "LIMA driver (Experimental Hardware Rendering)" ]] for i, u in enumerate(drivers): #print(i,u) li = PageListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + last_height li._Width = Width li._Fonts["normal"] = self._ListFont li._Active = False li._Value = u[0] li.Init(u[1]) 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 done = IconItem() done._ImgSurf = MyIconPool.GiveIconSurface("done") done._MyType = ICON_TYPES["STAT"] done._Parent = self self._Icons["done"] = done ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 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 Click(self): if len(self._MyList) == 0: return cur_li = self._MyList[self._PsIndex] if cur_li._Active == True: return print(cur_li._Value) if "arm" in platform.machine(): for i in self._MyList: i._Active = False cur_li._Active = True self._Screen._MsgBox.SetText("Applying") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() if "modesetting" in cur_li._Value: ## enable lima os.system("touch %s/.lima" % os.path.expanduser('~')) ArmSystem( "sudo mv /usr/lib/xorg/modules/drivers/modesetting_drv.so.lima /usr/lib/xorg/modules/drivers/modesetting_drv.so" ) ArmSystem( "sudo sed -i '/^#.*lima/s/^#//' /etc/ld.so.conf.d/00-arm-linux-gnueabihf.conf" ) ArmSystem("sudo ldconfig") else: #disable lima os.system("rm %s/.lima" % os.path.expanduser('~')) ArmSystem( "sudo mv /usr/lib/xorg/modules/drivers/modesetting_drv.so /usr/lib/xorg/modules/drivers/modesetting_drv.so.lima" ) ArmSystem( "sudo sed -i 's/^[^#]*lima/#&/' /etc/ld.so.conf.d/00-arm-linux-gnueabihf.conf" ) ArmSystem("sudo ldconfig") pygame.time.delay(800) os.system("sudo reboot") else: self._Screen._MsgBox.SetText("Do it in GameShell") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() def OnLoadCb(self): self._Scrolled = 0 self._PosY = 0 self._DrawOnce = False ## grep Driver /etc/xorg.conf | tr -s " " | cut -d " " -f3 ## "fbturbo" ## "modesetting" thedrv = "" if "arm" in platform.machine(): if FileExists("%s/.lima" % os.path.expanduser('~')): thedrv = "modesetting" else: thedrv = "fbturbo" if thedrv == "": thedrv = "fbturbo" for i in self._MyList: i._Active = False for i in self._MyList: if thedrv in i._Value: i._Active = True def OnReturnBackCb(self): pass """ self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() """ def KeyDown(self, event): if IsKeyMenuOrB(event.key): self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() if IsKeyStartOrA(event.key): self.Click() 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): self.ClearCanvas() if len(self._MyList) == 0: return else: if len(self._MyList) * PageListItem._Height > self._Height: self._Ps._Width = self._Width - 11 self._Ps.Draw() for i in self._MyList: if i._PosY > self._Height + self._Height / 2: break if i._PosY < 0: continue i.Draw() self._Scroller.UpdateSize( len(self._MyList) * PageListItem._Height, self._PsIndex * PageListItem._Height) self._Scroller.Draw() else: self._Ps._Width = self._Width self._Ps.Draw() for i in self._MyList: if i._PosY > self._Height + self._Height / 2: break if i._PosY < 0: continue i.Draw() if self._HWND != None: self._HWND.fill(MySkinManager.GiveColor("White")) self._HWND.blit( self._CanvasHWND, (self._PosX, self._PosY, self._Width, self._Height))
class FavListPage(Page): _Icons = {} _Selector = None _FootMsg = ["Nav", "Scan", "Remove", "", "Run"] _MyList = [] _ListFont = fonts["notosanscjk15"] _MyStack = None _Emulator = None _Parent = None _Scroller = None _Scrolled = 0 _BGwidth = 75 _BGheight = 73 _RomSoConfirmDownloadPage = None def __init__(self): Page.__init__(self) self._Icons = {} self._CanvasHWND = None self._MyList = [] self._MyStack = FavStack() self._Emulator = {} def GeneratePathList(self, path): if os.path.isdir(path) == False: return False files_path = glob.glob(path + "/*") ret = [] for i, v in enumerate(files_path): dirmap = {} if os.path.isdir( v) and self._Emulator["FILETYPE"] == "dir": ## like DOSBOX gameshell_bat = self._Emulator["EXT"][0] if FileExists(v + "/" + gameshell_bat): stats = os.stat(v) if stats.st_gid != self._Parent._FavGID: ## only favs continue dirmap["gamedir"] = v.decode("utf8") ret.append(dirmap) if os.path.isfile(v) and self._Emulator["FILETYPE"] == "file": stats = os.stat(v) if stats.st_gid != self._Parent._FavGID: ## only favs continue bname = os.path.basename(v) ### filter extension if len(bname) > 1: pieces = bname.split(".") if len(pieces) > 1: if pieces[len(pieces) - 1].lower() in self._Emulator["EXT"]: dirmap["file"] = v.decode("utf8") ret.append(dirmap) # else: # print("not file or dir") return ret def SyncList(self, path): alist = self.GeneratePathList(path) if alist == False: print("listfiles return false") return # print("fav list alist: ") # print(alist) self._MyList = [] start_x = 0 start_y = 0 hasparent = 0 if self._MyStack.Length() > 0: hasparent = 1 li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y li._Width = Width li._Fonts["normal"] = self._ListFont li._MyType = ICON_TYPES["DIR"] li._Parent = self li.Init("[..]") self._MyList.append(li) for i, v in enumerate(sorted(alist)): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + (i + hasparent) * ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFont li._MyType = ICON_TYPES["FILE"] li._Parent = self if "directory" in v: li._MyType = ICON_TYPES["DIR"] li.Init(v["directory"]) elif "file" in v: li.Init(v["file"]) elif "gamedir" in v: li.Init(v["gamedir"]) else: li.Init("NoName") self._MyList.append(li) def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = ListPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 self.SyncList(self._Emulator["ROM"]) self._MyStack._Emulator = self._Emulator icon_for_list = MultiIconItem() icon_for_list._ImgSurf = self._Parent._Icons["sys"] icon_for_list._MyType = ICON_TYPES["STAT"] icon_for_list._Parent = self icon_for_list.Adjust(0, 0, 18, 18, 0) self._Icons["sys"] = icon_for_list bgpng = IconItem() bgpng._ImgSurf = MyIconPool._Icons["star"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.AddLabel("my favourites games", fonts["varela18"]) bgpng.SetLableColor(SkinManager().GiveColor('Disabled')) bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen rom_so_confirm_page._Name = "Download Confirm" rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() self._RomSoConfirmDownloadPage = rom_so_confirm_page def ScrollUp(self): if len(self._MyList) == 0: return self._PsIndex -= 1 if self._PsIndex < 0: self._PsIndex = 0 cur_li = self._MyList[self._PsIndex] if cur_li._PosY < 0: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._MyList[i]._Height self._Scrolled += 1 def ScrollDown(self): if len(self._MyList) == 0: return self._PsIndex += 1 if self._PsIndex >= len(self._MyList): self._PsIndex = len(self._MyList) - 1 cur_li = self._MyList[self._PsIndex] if cur_li._PosY + cur_li._Height > self._Height: for i in range(0, len(self._MyList)): self._MyList[i]._PosY -= self._MyList[i]._Height self._Scrolled -= 1 def SyncScroll(self): ## if self._Scrolled == 0: return if self._PsIndex < len(self._MyList): cur_li = self._MyList[self._PsIndex] if self._Scrolled > 0: if cur_li._PosY < 0: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._Scrolled * self._MyList[ i]._Height elif self._Scrolled < 0: if cur_li._PosY + cur_li._Height > self._Height: for i in range(0, len(self._MyList)): self._MyList[i]._PosY += self._Scrolled * self._MyList[ i]._Height def Click(self): if len(self._MyList) == 0: return if self._PsIndex > len(self._MyList) - 1: return cur_li = self._MyList[self._PsIndex] if cur_li._MyType == ICON_TYPES["DIR"]: return if cur_li._MyType == ICON_TYPES["FILE"]: ## add to playlist only self._Screen._MsgBox.SetText("Launching...") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() if self._Emulator["FILETYPE"] == "dir": path = cur_li._Path + "/" + self._Emulator["EXT"][0] else: path = cur_li._Path print("Run ", path) if self._Emulator["FILETYPE"] == "dir": escaped_path = CmdClean(path) else: escaped_path = CmdClean(path) custom_config = "" if self._Emulator["RETRO_CONFIG"] != "" and len( self._Emulator["RETRO_CONFIG"]) > 5: custom_config = " -c " + self._Emulator["RETRO_CONFIG"] cmdpath = " ".join( (self._Emulator["LAUNCHER"], self._Emulator["ROM_SO"], custom_config, escaped_path)) if self._Emulator[ "ROM_SO"] == "": #empty means No needs for rom so pygame.event.post(pygame.event.Event(RUNEVT, message=cmdpath)) else: if FileExists(self._Emulator["ROM_SO"]): pygame.event.post( pygame.event.Event(RUNEVT, message=cmdpath)) else: self._Screen.PushPage(self._RomSoConfirmDownloadPage) self._Screen.Draw() self._Screen.SwapAndShow() return self._Screen.Draw() self._Screen.SwapAndShow() def ReScan(self): if self._MyStack.Length() == 0: self.SyncList(self._Emulator["ROM"]) else: self.SyncList(self._MyStack.Last()) idx = self._PsIndex if idx > (len(self._MyList) - 1): idx = len(self._MyList) if idx > 0: idx -= 1 elif idx == 0: ##nothing in _MyList pass self._PsIndex = idx ## sync PsIndex self.SyncScroll() def OnReturnBackCb(self): self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() def OnLoadCb(self): self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() def KeyDown(self, event): if event.key == CurKeys["Menu"] or event.key == CurKeys["Left"]: 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() if event.key == CurKeys["Enter"]: self.Click() if event.key == CurKeys["X"]: #Scan current self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() if event.key == CurKeys["Y"]: #del if len(self._MyList) == 0: return cur_li = self._MyList[self._PsIndex] if cur_li.IsFile(): """ #self._Parent.FavDeleteConfirmPage.SetFileName(cur_li._Path) #self._Parent.FavDeleteConfirmPage.SetTrashDir(self._Emulator["ROM"])## Fav delete,return to ROM dir,not .Trash #self._Screen.PushCurPage() #self._Screen.SetCurPage(self._Parent.FavDeleteConfirmPage) #self._Screen.Draw() #self._Screen.SwapAndShow() """ #delete directly without confirm dialog stats = os.stat(cur_li._Path) os.chown( cur_li._Path, stats.st_uid, stats.st_uid) ## normally uid and gid should be the same self._Screen._MsgBox.SetText("Deleting...") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() pygame.time.delay(600) self.ReScan() self._Screen.Draw() self._Screen.SwapAndShow() def Draw(self): self.ClearCanvas() if len(self._MyList) == 0: self._Icons["bg"].NewCoord(self._Width / 2, self._Height / 2) self._Icons["bg"].Draw() else: if len(self._MyList) * ListItem._Height > self._Height: self._Ps._Width = self._Width - 10 self._Ps.Draw() for i in self._MyList: if i._PosY > self._Height + self._Height / 2: break if i._PosY < 0: continue i.Draw() self._Scroller.UpdateSize( len(self._MyList) * ListItem._Height, self._PsIndex * ListItem._Height) self._Scroller.Draw() else: self._Ps._Width = self._Width self._Ps.Draw() for i in self._MyList: i.Draw()
class ListPage(Page): _Icons = {} _Selector=None _FootMsg = ["Nav","","","Back","Enter"] _MyList = [] _ListFontObj = MyLangManager.TrFont("varela15") _Scroller = None def __init__(self): Page.__init__(self) self._Icons = {} self._CanvasHWND = None self._MyList = [] def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height self._CanvasHWND = self._Screen._CanvasHWND ps = InfoPageSelector() ps._Parent = self ps._PosX = 2 self._Ps = ps self._PsIndex = 0 # "" pkgname, label alist = [["","Airplane","Airplane Mode"], ["","PowerOptions","Power Options"], ["","Wifi","Wi-Fi"], ["","Bluetooth","Bluetooth"], ["","Sound","Sound Volume"], ["","Brightness","BackLight Brightness"], ["","Storage",""], ["","Time","Timezone"], ["","Languages","Languages"], ["","Notification","Notification"], ["","Update", ""], ["","About", "About"], ["","PowerOFF","Power OFF"], ["","ButtonsLayout","Buttons Layout"], ["","LauncherGo","Switch to LauncherGo"], ["","Lima","GPU driver switch"], ["","GateWay","Network gateway switch"]] start_x = 0 start_y = 0 sys.path.append(myvars.basepath)# add self as import path for i,v in enumerate(alist): li = ListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i*ListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj if v[2] != "": li.Init(v[2]) 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" or v[1] == "HelloWorld": if FileExists(myvars.basepath+"/"+ v[1]): li._LinkObj = __import__(v[1]) init_cb = getattr(li._LinkObj,"Init",None) if init_cb != None: if callable(init_cb): li._LinkObj.Init(self._Screen) self._MyList.append(li) self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = self._Width - 10 self._Scroller._PosY = 2 self._Scroller.Init() def Click(self): cur_li = self._MyList[self._PsIndex] if cur_li._LinkObj != None: api_cb = getattr(cur_li._LinkObj,"API",None) if api_cb != None: if callable(api_cb): cur_li._LinkObj.API(self._Screen) def KeyDown(self,event): if IsKeyMenuOrB(event.key): 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() if IsKeyStartOrA(event.key): self.Click() def Draw(self): self.ClearCanvas() if len(self._MyList) * ListItem._Height > self._Height: self._Ps._Width = self._Width - 11 self._Ps.Draw() for i in self._MyList: i.Draw() self._Scroller.UpdateSize( len(self._MyList)*ListItem._Height, self._PsIndex*ListItem._Height) self._Scroller.Draw() else: self._Ps._Width = self._Width self._Ps.Draw() for i in self._MyList: i.Draw()
class BleInfoPage(Page): _FootMsg = ["Nav", "Forget", "Disconnect", "Back", ""] _MyList = [] _ListFontObj = MyLangManager.TrFont("varela15") _ListSmFontObj = MySkinManager.GiveFont("varela12") # small font _ListSm2FontObj = MySkinManager.GiveFont("varela11") _AList = {} _Path = "" def Init(self): if self._Screen != None: if self._Screen._CanvasHWND != None and self._CanvasHWND == None: self._CanvasHWND = self._Screen._CanvasHWND self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height ps = BleInfoPageSelector() ps._Parent = self self._Ps = ps self._PsIndex = 0 #_AList is an object self.GenList() self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self._ConfirmPage1 = BleForgetConfirmPage() self._ConfirmPage1._Screen = self._Screen self._ConfirmPage1._Name = "ConfirmForget" self._ConfirmPage1._Parent = self self._ConfirmPage1.Init() def GenList(self): if self._AList == None: return self._MyList = [] self._PsIndex = 0 start_x = 0 start_y = 0 for i, v in enumerate(self._AList): #print(i,v) # (0, dbus.String(u'AddressType')) li = InfoPageListItem() li._Parent = self li._PosX = start_x li._PosY = start_y + i * InfoPageListItem._Height li._Width = Width li._Fonts["normal"] = self._ListFontObj if v == "UUIDs": li._Fonts["small"] = self._ListSm2FontObj else: li._Fonts["small"] = self._ListSmFontObj li.Init(str(v)) li._Flag = v if v == "UUIDs": if len(self._AList[v]) > 1: pp(self._AList[v][0]) sm_text = str(self._AList[v][0]) else: sm_text = "<empty>" else: sm_text = str(self._AList[v]) if sm_text == "0": sm_text = "No" elif sm_text == "1": sm_text = "Yes" sm_text = sm_text[:20] li.SetSmallText(sm_text) li._PosX = 2 self._MyList.append(li) def TryToForget(self): global adapter proxy_obj = bus.get_object("org.bluez", self._Path) dev = dbus.Interface(proxy_obj, "org.bluez.Device1") self._Screen._MsgBox.SetText("Forgeting") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() try: adapter.RemoveDevice(dev) except Exception, e: err_name = e.get_dbus_name() if err_name == "org.freedesktop.DBus.Error.NoReply": self._Screen._MsgBox.SetText("DBus noreply") else: self._Screen._MsgBox.SetText("Forget failed") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() pygame.time.delay(500) self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow()
class BluetoothPage(Page): _MyList = [] #Wicd dbus part _Adapter = None _Dbus = None _Devices = None _BlePassword = "" _Connecting = False _Scanning = False _PrevState = None _Selector = None _ShowingMessageBox = False _MsgBox = None _ConnectTry = 0 _BlockCb = None _LastStatusMsg = "" _FootMsg = ["Nav", "Info", "Scan", "Back", "TryConnect"] _Scroller = None _ListFontObj = MyLangManager.TrFont("notosanscjk15") _InfoPage = None _ADAPTER_DEV = "hci0" _Offline = False _Leader = None def __init__(self): Page.__init__(self) self._MyList = [] self._CanvasHWND = None def ShowBox(self, msg): self._MsgBox._Text = msg self._ShowingMessageBox = True self._Screen.Draw() self._MsgBox.Draw() self._Screen.SwapAndShow() def HideBox(self): self.Draw() self._ShowingMessageBox = False self._Screen.SwapAndShow() def Init(self): self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width self._Height = self._Screen._Height #self._CanvasHWND = pygame.Surface((self._Width,self._Height)) self._CanvasHWND = self._Screen._CanvasHWND ps = BleListSelector() ps._Parent = self ps._Width = Width - 12 self._Ps = ps self._PsIndex = 0 msgbox = BleListMessageBox() msgbox._CanvasHWND = self._CanvasHWND msgbox.Init(" ", MyLangManager.TrFont("veramono15")) msgbox._Parent = self self._MsgBox = msgbox self._Scroller = ListScroller() self._Scroller._Parent = self self._Scroller._PosX = 2 self._Scroller._PosY = 2 self._Scroller.Init() self.GenNetworkList() self._InfoPage = BleInfoPage() self._InfoPage._Screen = self._Screen self._InfoPage._Name = "BluetoothInfo" self._InfoPage.Init() def print_normal(self, address, properties): print("[ " + address + " ]") for key in properties.keys(): value = properties[key] if type(value) is dbus.String: value = unicode(value).encode('ascii', 'replace') if (key == "Class"): print(" %s = 0x%06x" % (key, value)) else: print(" %s = %s" % (key, value)) print() properties["Logged"] = True def skip_dev(self, old_dev, new_dev): if not "Logged" in old_dev: return False if "Name" in old_dev: return True if not "Name" in new_dev: return True return False def DbusPropertiesChanged(self, interface, changed, invalidated, path): global devices print("DbusPropertiesChanged") if interface != "org.bluez.Device1": return if path in devices: dev = devices[path] if self.skip_dev(dev, changed): return devices[path] = dict(devices[path].items() + changed.items()) else: devices[path] = changed if "Address" in devices[path]: address = devices[path]["Address"] else: address = "<unknown>" self._Devices = devices self.print_normal(address, devices[path]) self.RefreshDevices() self.GenNetworkList() self._Screen.Draw() self._Screen.SwapAndShow() def ShutDownConnecting(self): print("Bluetooth Shutdown connecting...") def AbortedAndReturnToUpLevel(self): self.HideBox() self._Screen._FootBar.ResetNavText() self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() def CheckIfBluetoothConnecting(self): return True def TryConnect(self): global bus if self._PsIndex >= len(self._MyList): return cur_li = self._MyList[self._PsIndex] print(cur_li._Path) if "Connected" in cur_li._Atts: if cur_li._Atts["Connected"] == 1: return proxy_obj = bus.get_object("org.bluez", cur_li._Path) dev = dbus.Interface(proxy_obj, "org.bluez.Device1") self._Screen._FootBar.UpdateNavText("Connecting") self.ShowBox(MyLangManager.Tr("Connecting")) self._Leader._MyAgent.device_obj = dev self._Leader._MyAgent.dev_path = cur_li._Path try: dev.Pair(reply_handler=self._Leader._MyAgent.pair_reply, error_handler=self._Leader._MyAgent.pair_error, timeout=60000) except Exception, e: print(str(e))
class AboutPage(Page): _FootMsg = ["Nav.", "", "", "Back", ""] _MyList = [] _ListFontObj = MyLangManager.TrFont("varela13") _AList = {} _Scrolled = 0 _BGwidth = 320 _BGheight = 300 _DrawOnce = False _Scroller = None def __init__(self): Page.__init__(self) self._Icons = {} def Uname(self): out = {} out["key"] = "uname" out["label"] = "Kernel:" st = subprocess.check_output(["uname", "-srmo"]) st = st.strip("\n") st = st.strip("\t") out["value"] = st self._AList["uname"] = out return def CpuMhz(self): try: with open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" ) as f: content = f.readlines() content = [x.strip() for x in content] except: print("open %s failed" % "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq") content = ["0"] mhz = int(content[0]) / 1000.0 cpuscalemhz = {} cpuscalemhz["key"] = "cpuscalemhz" cpuscalemhz["label"] = "CPU Mhz:" cpuscalemhz["value"] = str(mhz) self._AList["cpuscalemhz"] = cpuscalemhz return def CpuInfo(self): last_processor = 0 with open("/proc/cpuinfo") as f: for line in f: if line.startswith("processor"): parts = line.split(":") cur_processor_number = int(parts[1].strip()) if cur_processor_number > last_processor: last_processor = cur_processor_number if line.startswith("model name"): parts = line.split(":") # print( parts[1].strip() ) processor = {} processor["key"] = "processor" processor["label"] = "Processor:" processor["value"] = parts[1].strip() self._AList["processor"] = processor if line.startswith("cpu MHz"): parts = line.split(":") # print(parts[1].strip() ) cpumhz = {} cpumhz["key"] = "cpumhz" cpumhz["label"] = "CPU MHz:" cpumhz["value"] = parts[1].strip() self._AList["cpumhz"] = cpumhz if line.startswith("cpu cores"): parts = line.split(":") # print(parts[1].strip() ) cpucores = {} cpucores["key"] = "cpucores" cpucores["label"] = "CPU cores:" cpucores["value"] = parts[1].strip() self._AList["cpucores"] = cpucores if line.startswith("Features"): parts = line.split(":") # print(parts[1].strip() ) f_ = {} f_["key"] = "features" f_["label"] = "Features:" f_["value"] = parts[1].strip() self._AList["features"] = f_ if line.startswith("flags"): parts = line.split(":") # print(parts[1].strip() ) flags = {} flags["key"] = "flags" flags["label"] = "Flags:" flags["value"] = parts[1].strip() self._AList["flags"] = flags if last_processor > 0: arm_cores = {} arm_cores["key"] = "armcores" arm_cores["label"] = "CPU cores:" arm_cores["value"] = str(last_processor + 1) self._AList["armcores"] = arm_cores def MemInfo(self): with open("/proc/meminfo") as f: for line in f: if line.startswith("MemTotal"): parts = line.split(":") parts[1] = parts[1].replace("kB", "") print(parts[1].strip()) memory = {} memory["key"] = "memory" memory["label"] = "Memory:" memory["value"] = str( int(parts[1].strip()) / 1000.0) + " MB" self._AList["memory"] = memory break def LauncherVersion(self): launcher_version = {} launcher_version["key"] = "launcher_ver" launcher_version["label"] = "Launcher:" launcher_version["value"] = VERSION self._AList["launcher_ver"] = launcher_version def OsImageVersion(self): if FileExists("/etc/clockworkpi_os_image_version"): try: with open("/etc/clockworkpi_os_image_version") as f: content = f.readlines() content = [x.strip() for x in content] except: print("open %s failed" % "/etc/clockworkpi_os_image_version") content = None if content != None and len(content) > 0: os_image_ver = {} os_image_ver["key"] = "os_image_ver" os_image_ver["label"] = "OS Image:" os_image_ver["value"] = content[0][:12] self._AList["os_image_ver"] = os_image_ver def GenList(self): self._MyList = [] start_x = 0 start_y = 10 last_height = 0 for i, u in enumerate([ "processor", "armcores", "cpuscalemhz", "features", "memory", "uname", "launcher_ver", "os_image_ver" ]): #for i,u in enumerate( ["processor","cpucores","cpumhz","flags","memory","uname"] ): 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"] = MySkinManager.GiveFont("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 + 50)) self._PosX = self._Index * self._Screen._Width self._Width = self._Screen._Width ## equal to screen width self._Height = self._Screen._Height bgpng = MultiIconItem() bgpng._ImgSurf = MyIconPool.GiveIconSurface("about_bg") bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self bgpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0) self._Icons["bg"] = bgpng self.CpuInfo() self.MemInfo() self.CpuMhz() self.Uname() self.LauncherVersion() self.OsImageVersion() 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 + 100: 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 IsKeyMenuOrB(event.key): 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() for i in self._MyList: i.Draw() self._DrawOnce = True self._Icons["bg"].DrawRect((230, 0, 82, 184), (228, 0, 82, 184)) y = self._MyList[len(self._MyList) - 1]._PosY + 30 self._Icons["bg"].DrawRect(((self._Width - 191) / 2, y, 191, 68), (65, 232, 191, 68)) if self._HWND != None: self._HWND.fill(MySkinManager.GiveColor("White")) 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()