Browse Source

Merge branch 'master' of github.com:Taffer/launcher into codestyle-cleanup

Taffer 4 years ago
parent
commit
9b5e3b411b
1 changed files with 99 additions and 70 deletions
  1. 99 70
      Menu/GameShell/21_Warehouse/__init__.py

+ 99 - 70
Menu/GameShell/21_Warehouse/__init__.py

@@ -59,7 +59,6 @@ class RPCStack:
 
 class LoadHousePage(Page):
     _FootMsg = ["Nav.","","","Back","Cancel"]
-    _DownloaderTimer = -1
     _Value = 0
     _URL = None
     _ListFontObj = MyLangManager.TrFont("varela18")
@@ -188,7 +187,6 @@ class LoadHousePage(Page):
 
 class ImageDownloadProcessPage(Page):
     _FootMsg = ["Nav.","","","Back",""]
-    _DownloaderTimer = -1
     _Value = 0
     _URL = None
     _ListFontObj = MyLangManager.TrFont("varela13")
@@ -344,35 +342,36 @@ class Aria2DownloadProcessPage(Page):
         self._SizeLabel.Init("0/0Kb",MyLangManager.TrFont("varela12"))
         self._SizeLabel.SetColor( self._URLColor )
  
+    @property
     def GObjectUpdateProcessInterval(self):
+        downloaded = 0
         if self._Screen.CurPage() == self and self._GID is not None:
                 self._Value =  config.RPC.tellStatus(self._GID)
-	        
+            
                 downloaded = 0
                 total = 0
-	
-		if self._Value["status"] == "waiting":
-                    self._FileNameLabel.SetText( "waiting to download..." )
-                if self._Value["status"] == "paused":
-                    self._FileNameLabel.SetText( "download paused..." )
-                if self._Value["status"] == "error":
-                    self._FileNameLabel.SetText("download errors,cancel it please")
-                
-                if self._Value["status"] == "active":
-                    downloaded = self._Value["completedLength"]
-                    total      = self._Value["totalLength"]
 
-                    downloaded = downloaded/1000.0/1000.0
-                    total      = total/1000.0/1000.0
-                
-                self._SizeLabel.SetText( "%.2f" % downloaded+"/"+ "%.2f" % total +"Mb")
-                
-                print("Progress: %d%%" % (self._Value))
-                self._Screen.Draw()
-                self._Screen.SwapAndShow()
-                return True
-        else:
-            return False
+        if self._Value["status"] == "waiting":
+            self._FileNameLabel.SetText("waiting to download...")
+        if self._Value["status"] == "paused":
+            self._FileNameLabel.SetText("download paused...")
+        if self._Value["status"] == "error":
+            self._FileNameLabel.SetText("download errors,cancel it please")
+
+        if self._Value["status"] == "active":
+            downloaded = self._Value["completedLength"]
+            total = self._Value["totalLength"]
+
+            downloaded = downloaded / 1000.0 / 1000.0
+            total = total / 1000.0 / 1000.0
+
+        self._SizeLabel.SetText("%.2f" % downloaded+"/"+"%.2f" % total+"Mb")
+
+        print("Progress: %d%%" % (self._Value))
+        self._Screen.Draw()
+        self._Screen.SwapAndShow()
+        return True
+
     
     def CheckDownload(self,aria2_gid):
         self._GID = aria2_gid 
@@ -545,18 +544,20 @@ class GameStorePage(Page):
     _aria2_db = "aria2tasks.db"
     _warehouse_db = "warehouse.db"
     _GobjTimer = -1
-    
+
+    _Scrolled_cnt = 0
+
     def __init__(self):
         Page.__init__(self)
         self._Icons = {}
-	      self._MyStack = RPCStack()
-	      #title file type
+        self._MyStack = RPCStack()
+          #title file type
         ## Two level url , only github.com
         
         repos = [
-        {"title":"github.com/clockworkpi/warehouse","file":"https://raw.githubusercontent.com/clockworkpi/warehouse/master/index.json","type":"source"}
-       ]
-	      self._MyStack.Push(repos)
+         {"title":"github.com/clockworkpi/warehouse","file":"https://raw.githubusercontent.com/clockworkpi/warehouse/master/index.json","type":"source"}
+        ]
+        self._MyStack.Push(repos)
  
     def GObjectUpdateProcessInterval(self):
         ret = True
@@ -672,10 +673,7 @@ class GameStorePage(Page):
             
             self._MyList.append(li)
             
-            if self._PsIndex > len(self._MyList) - 1:
-                self._PsIndex = len(self._MyList) - 1
-            if self._PsIndex < 0:
-                self._PsIndex = 0   
+        self.RefreshPsIndex()
             
         
     def Init(self):
@@ -725,7 +723,7 @@ class GameStorePage(Page):
 
         self._PreviewPage = ImageDownloadProcessPage()
         self._PreviewPage._Screen = self._Screen
-        self._PreviewPage._Name = "preview"
+        self._PreviewPage._Name = "Preview"
         self._PreviewPage.Init()
 
         self._LoadHousePage = LoadHousePage()
@@ -827,58 +825,57 @@ class GameStorePage(Page):
                 
             except Exception as ex:
                 print(ex)
-       
+
     def Click(self):
         if self._PsIndex > len(self._MyList) -1:
             return
-        
+
         cur_li = self._MyList[self._PsIndex]
         #if cur_li._Active == True:
         #    return
 
         print("cur_li._Value",cur_li._Value)
-	
-	if cur_li._Value["type"] == "source" or cur_li._Value["type"] == "dir":
-	    remote_file_url = cur_li._Value["file"]
-	    menu_file = remote_file_url.split("raw.githubusercontent.com")[1] #assume master branch
-	    local_menu_file = "%s/aria2download%s" % (os.path.expanduser('~'),menu_file )
+
+        if cur_li._Value["type"] == "source" or cur_li._Value["type"] == "dir":
+            remote_file_url = cur_li._Value["file"]
+            menu_file = remote_file_url.split("raw.githubusercontent.com")[1] #assume master branch
+            local_menu_file = "%s/aria2download%s" % (os.path.expanduser('~'),menu_file )
             print(local_menu_file)
             if FileExists( local_menu_file ) == False:
                 self.LoadHouse()
-	    else:
-                #read the local_menu_file, push into stack,display menu
-		self._Downloading = None
+            else:
+            #read the local_menu_file, push into stack,display menu
+                self._Downloading = None
                 try:
-		    with open(local_menu_file) as json_file:
-		        local_menu_json = json.load(json_file)
+                    with open(local_menu_file) as json_file:
+                        local_menu_json = json.load(json_file)
                         print(local_menu_json)
- 		        self._MyStack.Push(local_menu_json["list"])
-		
-		        self.SyncList()
-                        self._Screen.Draw()
-                        self._Screen.SwapAndShow()
+                        self._MyStack.Push(local_menu_json["list"])
+
+                    self.SyncList()
+                    self._Screen.Draw()
+                    self._Screen.SwapAndShow()
                 except Exception as ex:
                     print(ex)
                     self._Screen._MsgBox.SetText("Open house failed ")
                     self._Screen._MsgBox.Draw()
                     self._Screen.SwapAndShow()
-		
-	elif cur_li._Value["type"] == "add_house":
+
+        elif cur_li._Value["type"] == "add_house":
             print("show keyboard to add ware house")
             self._Screen.PushCurPage()
             self._Screen.SetCurPage( self._Keyboard )
- 
         else:
-	    #download the game probably
-	    remote_file_url = cur_li._Value["file"]
+            #download the game probably
+            remote_file_url = cur_li._Value["file"]
             menu_file = remote_file_url.split("raw.githubusercontent.com")[1]
             local_menu_file = "%s/aria2download%s" % (os.path.expanduser('~'),menu_file )
-            
-	    if FileExists( local_menu_file ) == False:
+
+            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 = gid
+                    self._Downloading = gid
                     print("stack length ",self._MyStack.Length())
                     """
                     if self._MyStack.Length() > 1:## not on the top list page
@@ -895,14 +892,13 @@ class GameStorePage(Page):
                 else:
                     print(config.RPC.tellStatus(gid,["status","totalLength","completedLength"]))
 
-                self._Screen._MsgBox.SetText("Getting the game now")
-                self._Screen._MsgBox.Draw() 
-                self._Screen.SwapAndShow()
+                    self._Screen._MsgBox.SetText("Getting the game now")
+                    self._Screen._MsgBox.Draw()
+                    self._Screen.SwapAndShow()
 
-                pygame.time.delay(800)
-                self._Screen._TitleBar.Redraw()
+                    pygame.time.delay(800)
+                    self._Screen._TitleBar.Redraw()
 
-               
             else:
                 print("file downloaded")# maybe check it if is installed,then execute it
                 if cur_li._Value["type"]=="launcher" and cur_li._ReadOnly == False:
@@ -921,7 +917,7 @@ class GameStorePage(Page):
                         self._Screen._MsgBox.Draw()
                         self._Screen.SwapAndShow()
                         pygame.time.delay(800)
-                  
+
                 if cur_li._Value["type"]=="tic80" and cur_li._ReadOnly == False:
                     game_sh = "/home/cpi/apps/Menu/51_TIC-80/TIC-80.sh"
                     self._Screen.RunEXE(game_sh)
@@ -1005,7 +1001,6 @@ class GameStorePage(Page):
         self.SyncList()
  
     def OnReturnBackCb(self):
-
         if self._MyStack.Length() == 1:
             self._FootMsg[2] = "Remove"
             self._FootMsg[1] = "Update"
@@ -1014,6 +1009,8 @@ class GameStorePage(Page):
             self._FootMsg[1] = "Preview"
 
         self.SyncList()
+        self.RestoreScrolled()
+
         self._Screen.Draw()
         self._Screen.SwapAndShow()
        
@@ -1022,6 +1019,34 @@ class GameStorePage(Page):
         self._Screen.Draw()
         self._Screen.SwapAndShow()
         """
+
+    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_cnt -= self._MyList[i]._Height
+
+    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_cnt += self._MyList[i]._Height
+
     def KeyDown(self,event):
         if IsKeyMenuOrB(event.key):
 
@@ -1094,12 +1119,16 @@ class GameStorePage(Page):
             self.ScrollUp()
             self._Screen.Draw()
             self._Screen.SwapAndShow()
+
         if event.key == CurKeys["Down"]:
             self.ScrollDown()
             self._Screen.Draw()
             self._Screen.SwapAndShow()
 
-    
+    def RestoreScrolled(self):
+        for i in range(0, len(self._MyList)):
+            self._MyList[i]._PosY += self._Scrolled_cnt
+
     def Draw(self):
 
         self.ClearCanvas()