From 85d67dc218b9ad0b4de50bf1efe05b25327ba5fe Mon Sep 17 00:00:00 2001 From: cuu Date: Thu, 5 Dec 2019 17:20:38 +0800 Subject: [PATCH] ``` def Click(self): if self._PsIndex > len(self._MyList) -1: ``` * use this to avoid PsIndex out of the range of self._MyList * download games and showed up --- Menu/GameShell/10_Settings/Lima/__init__.py | 2 +- Menu/GameShell/21_GameStore/__init__.py | 66 +++++++++++++-------- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/Menu/GameShell/10_Settings/Lima/__init__.py b/Menu/GameShell/10_Settings/Lima/__init__.py index f193785..ca198f6 100644 --- a/Menu/GameShell/10_Settings/Lima/__init__.py +++ b/Menu/GameShell/10_Settings/Lima/__init__.py @@ -152,7 +152,7 @@ class GPUDriverPage(Page): self._Scroller.SetCanvasHWND(self._HWND) def Click(self): - if len(self._MyList) == 0: + if self._PsIndex > len(self._MyList) -1: return cur_li = self._MyList[self._PsIndex] diff --git a/Menu/GameShell/21_GameStore/__init__.py b/Menu/GameShell/21_GameStore/__init__.py index 2401c3a..ff904d7 100644 --- a/Menu/GameShell/21_GameStore/__init__.py +++ b/Menu/GameShell/21_GameStore/__init__.py @@ -185,7 +185,7 @@ def dict_factory(cursor, row): return d class GameStorePage(Page): - _FootMsg = ["Nav","","","Back","Select"] + _FootMsg = ["Nav","","Up","Back","Select"] _MyList = [] _ListFont = MyLangManager.TrFont("notosanscjk12") @@ -214,7 +214,7 @@ class GameStorePage(Page): def SyncSqlite(self): try: conn = sqlite3.connect("aria2tasks.db") - conn.row_factory = sqlite3.Row + conn.row_factory = dict_factory c = conn.cursor() ret = c.execute("SELECT * FROM tasks").fetchall() conn.close() @@ -232,14 +232,17 @@ class GameStorePage(Page): start_y = 0 last_height = 0 - repos = self._MyStack.Last() - + repos = [] + stk = self._MyStack.Last() + repos.extend(stk) if self._MyStack.Length() == 1: # on top sqlite3_menu= self.SyncSqlite() if sqlite3_menu != None and len(sqlite3_menu) > 0: print(sqlite3_menu) repos.extend(sqlite3_menu ) + print(repos) + for i,u in enumerate( repos ): #print(i,u) li = InfoPageListItem() @@ -289,7 +292,7 @@ class GameStorePage(Page): self._Scroller.SetCanvasHWND(self._HWND) def Click(self): - if len(self._MyList) == 0: + if self._PsIndex > len(self._MyList) -1: return cur_li = self._MyList[self._PsIndex] @@ -301,7 +304,8 @@ class GameStorePage(Page): if cur_li._Value["type"] == "dir": remote_file_url = cur_li._Value["file"] menu_file = remote_file_url.split("master")[1] #assume master branch - local_menu_file = "%s/aria2Download%s" % (os.path.expanduser('~'),menu_file ) + local_menu_file = "%s/aria2download%s" % (os.path.expanduser('~'),menu_file ) + print(local_menu_file) if FileExists( local_menu_file ) == False: print(local_menu_file, "non-existed") gid,ret = config.RPC.urlDownloading(remote_file_url) @@ -323,7 +327,8 @@ class GameStorePage(Page): self._Downloading = None with open(local_menu_file) as json_file: local_menu_json = json.load(json_file) - self._MyStack.Push(local_menu_json["lists"]) + print(local_menu_json) + self._MyStack.Push(local_menu_json["list"]) self.SyncList() self._Screen.Draw() @@ -331,28 +336,32 @@ class GameStorePage(Page): else: #download the game probably - remote_file_url = cur_li._Value["file"] menu_file = remote_file_url.split("master")[1] - local_menu_file = "%s/aria2Download%s" % (os.path.expanduser('~'),menu_file ) + local_menu_file = "%s/aria2download%s" % (os.path.expanduser('~'),menu_file ) + + if FileExists( local_menu_file ) == False: + gid,ret = config.RPC.urlDownloading(remote_file_url) + if ret == False: + gid = config.RPC.addUri( remote_file_url, options={"out": menu_file}) + self._Downloading = remote_file_url + try: + conn = sqlite3.connect("aria2tasks.db") + c = conn.cursor() + c.execute("INSERT INTO tasks(gid,title,file,type,status,fav) VALUES ('"+gid+"','"+cur_li._Value["title"]+"','"+cur_li._Value["file"]+"','"+cur_li._Value["type"]+"','active','0')") - if config.RPC.urlDownloading(remote_file_url) == False: - gid = config.RPC.addUri( remote_file_url, options={"out": menu_file}) - self._Downloading = remote_file_url + conn.commit() + conn.close() + except Exception as ex: + print("SQLITE3 ",ex) - try: - conn = sqlite3.connect("aria2tasks.db") - c = conn.cursor() - c.execute("INSERT INTO tasks VALUES ('"+gid+"','"+cur_li._Value["title"]+"','"+cur_li._Value["file"]+"','"+cur_li._Value["type"]+"','active')") + self._Screen._MsgBox.SetText("Getting the game now") + self._Screen._MsgBox.Draw() + self._Screen.SwapAndShow() - conn.commit() - conn.close() - except Exception as ex: - print(ex) - - self._Screen._MsgBox.SetText("Getting the game now") - self._Screen._MsgBox.Draw() - seff._Screen.SwapAndShow() + else: + print("file downloaded")# maybe check it if is installed,then execute it + def OnLoadCb(self): self._Scrolled = 0 @@ -376,7 +385,14 @@ class GameStorePage(Page): if IsKeyStartOrA(event.key): self.Click() - + + if event.key == CurKeys["X"]: + if self._MyStack.Length() > 1: + self._MyStack.Pop() + self.SyncList() + self._Screen.Draw() + self._Screen.SwapAndShow() + if event.key == CurKeys["Up"]: self.ScrollUp() self._Screen.Draw()