Browse Source

Merge pull request #42 from cuu/master

CountDown
dphys 5 years ago
parent
commit
a5e73a2cec
35 changed files with 226 additions and 27 deletions
  1. 1 0
      .gitignore
  2. BIN
      Menu/GameShell/10_Settings/Airplane/__init__.pyc
  3. BIN
      Menu/GameShell/10_Settings/Brightness/__init__.pyc
  4. BIN
      Menu/GameShell/10_Settings/Brightness/brightness_page.pyc
  5. BIN
      Menu/GameShell/10_Settings/Brightness/myvars.pyc
  6. BIN
      Menu/GameShell/10_Settings/Brightness/pages.pyc
  7. BIN
      Menu/GameShell/10_Settings/PowerOptions/__init__.pyc
  8. BIN
      Menu/GameShell/10_Settings/Sound/__init__.pyc
  9. BIN
      Menu/GameShell/10_Settings/Sound/myvars.pyc
  10. BIN
      Menu/GameShell/10_Settings/Sound/pages.pyc
  11. BIN
      Menu/GameShell/10_Settings/Sound/sound_page.pyc
  12. BIN
      Menu/GameShell/10_Settings/Storage/__init__.pyc
  13. BIN
      Menu/GameShell/10_Settings/Wifi/__init__.pyc
  14. BIN
      Menu/GameShell/10_Settings/Wifi/keyboard.pyc
  15. BIN
      Menu/GameShell/10_Settings/Wifi/myvars.pyc
  16. BIN
      Menu/GameShell/10_Settings/Wifi/net_item.pyc
  17. BIN
      Menu/GameShell/10_Settings/Wifi/pages.pyc
  18. BIN
      Menu/GameShell/10_Settings/Wifi/text_item.pyc
  19. BIN
      Menu/GameShell/10_Settings/Wifi/textarea.pyc
  20. 5 0
      Menu/GameShell/10_Settings/Wifi/wifi_list.py
  21. BIN
      Menu/GameShell/10_Settings/Wifi/wifi_list.pyc
  22. 0 1
      sys.py/.powerlevel
  23. BIN
      sys.py/UI/Emulator/__init__.pyc
  24. BIN
      sys.py/UI/Emulator/fav_list_page.pyc
  25. BIN
      sys.py/UI/Emulator/list_item.pyc
  26. BIN
      sys.py/UI/Emulator/rom_list_page.pyc
  27. BIN
      sys.py/UI/Emulator/rom_so_confirm_page.pyc
  28. 116 0
      sys.py/UI/counter_screen.py
  29. 1 0
      sys.py/UI/fonts.py
  30. 38 0
      sys.py/UI/full_screen.py
  31. 7 0
      sys.py/UI/label.py
  32. 15 4
      sys.py/UI/main_screen.py
  33. 2 3
      sys.py/UI/title_bar.py
  34. 1 1
      sys.py/config.py
  35. 40 18
      sys.py/run.py

+ 1 - 0
.gitignore

@@ -2,4 +2,5 @@ retroarch-core-options.cfg
 *.lpl
 *.swp
 .bsv
+*.pyc
 sys.py/.powerlevel

BIN
Menu/GameShell/10_Settings/Airplane/__init__.pyc


BIN
Menu/GameShell/10_Settings/Brightness/__init__.pyc


BIN
Menu/GameShell/10_Settings/Brightness/brightness_page.pyc


BIN
Menu/GameShell/10_Settings/Brightness/myvars.pyc


BIN
Menu/GameShell/10_Settings/Brightness/pages.pyc


BIN
Menu/GameShell/10_Settings/PowerOptions/__init__.pyc


BIN
Menu/GameShell/10_Settings/Sound/__init__.pyc


BIN
Menu/GameShell/10_Settings/Sound/myvars.pyc


BIN
Menu/GameShell/10_Settings/Sound/pages.pyc


BIN
Menu/GameShell/10_Settings/Sound/sound_page.pyc


BIN
Menu/GameShell/10_Settings/Storage/__init__.pyc


BIN
Menu/GameShell/10_Settings/Wifi/__init__.pyc


BIN
Menu/GameShell/10_Settings/Wifi/keyboard.pyc


BIN
Menu/GameShell/10_Settings/Wifi/myvars.pyc


BIN
Menu/GameShell/10_Settings/Wifi/net_item.pyc


BIN
Menu/GameShell/10_Settings/Wifi/pages.pyc


BIN
Menu/GameShell/10_Settings/Wifi/text_item.pyc


BIN
Menu/GameShell/10_Settings/Wifi/textarea.pyc


+ 5 - 0
Menu/GameShell/10_Settings/Wifi/wifi_list.py

@@ -373,6 +373,7 @@ class WifiList(Page):
         self._CanvasHWND = None
     
     def ShowBox(self,msg):
+        
         self._MsgBox._Text = msg
         self._ShowingMessageBox = True
         self._Screen.Draw()
@@ -471,6 +472,7 @@ class WifiList(Page):
         self._PrevWicdState = state
         
     def SetConnectingStatus(self,fast):
+        
         wireless_connecting = self._Wireless.CheckIfWirelessConnecting()
 
         """
@@ -526,6 +528,9 @@ class WifiList(Page):
                 return True
 
     def DbusDaemonStatusChangedSig(self,state=None,info=None):
+        if self._Screen._CurrentPage != self:
+            return
+
         print("in DbusDaemonStatusChangedSig")
         """
         dbus.UInt32(2L)

BIN
Menu/GameShell/10_Settings/Wifi/wifi_list.pyc


+ 0 - 1
sys.py/.powerlevel

@@ -1 +0,0 @@
-balance_saving

BIN
sys.py/UI/Emulator/__init__.pyc


BIN
sys.py/UI/Emulator/fav_list_page.pyc


BIN
sys.py/UI/Emulator/list_item.pyc


BIN
sys.py/UI/Emulator/rom_list_page.pyc


BIN
sys.py/UI/Emulator/rom_so_confirm_page.pyc


+ 116 - 0
sys.py/UI/counter_screen.py

@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+
+import pygame
+import gobject
+import commands
+## local package import
+from constants   import Width,Height,RUNSYS
+from label       import Label
+from fonts       import fonts
+from full_screen import FullScreen
+
+import config
+
+class CounterScreen(FullScreen):
+
+    _CounterFont = fonts["varela120"]
+    _TextFont1    = fonts["varela15"]
+    _TextFont2    = fonts["varela12"]
+    
+    _TopLabel = None
+    _BottomLabel = None
+    _NumberLabel = None
+    
+    _BGColor = pygame.Color(0,0,0)
+    _FGColor = pygame.Color(255,255,255)
+    
+    _Counting = False
+    _Number = 10
+    _GobjectIntervalId = -1
+
+    _inter_counter = 0
+    
+    def GObjectInterval(self):
+
+        self._inter_counter+=1
+
+        if self._Number == 0:
+            self._Counting = False    
+            print("do the real shutdown")
+            if config.CurKeySet != "PC":
+                cmdpath = "feh --bg-center gameshell/wallpaper/seeyou.png;"
+                cmdpath += "sleep 3;"
+                cmdpath += "sudo halt -p"
+                pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))
+            return False
+    
+        if self._inter_counter >= 10:
+            self._Number -= 1
+            if self._Number < 0:
+                self._Number = 0
+            print("sub Number %d " % self._Number)
+            self._inter_counter = 0
+            
+            self.Draw()
+            self.SwapAndShow()
+
+        
+        if self._inter_counter == 2:
+            commands.getstatusoutput("echo 0 > /proc/driver/led1")
+            #turn off
+
+        elif self._inter_counter == 7:
+            commands.getstatusoutput("echo 1 > /proc/driver/led1")
+            #turn on
+        
+        return self._Counting
+    
+    def StartCounter(self):
+        if self._Counting == True:
+            return
+
+        self._Number = 10
+        self._Counting = True
+        
+        self._GobjectIntervalId = gobject.timeout_add(100,self.GObjectInterval)
+        
+    def StopCounter(self):
+        if self._Counting == False:
+            return
+        self._Counting = False
+        self._Number = 10
+        commands.getstatusoutput("echo 0 > /proc/driver/led1")
+
+        if self._GobjectIntervalId != -1:
+            gobject.source_remove(self._GobjectIntervalId)
+            self._GobjectIntervalId = -1
+    
+    def Init(self):
+        self._CanvasHWND = pygame.Surface((self._Width,self._Height))
+        self._TopLabel = Label()
+        self._TopLabel.SetCanvasHWND(self._CanvasHWND)
+        self._TopLabel.Init("System shutdown in", self._TextFont1, self._FGColor)
+        
+        self._BottomLabel = Label()
+        self._BottomLabel.SetCanvasHWND(self._CanvasHWND)
+        self._BottomLabel.Init("Press any key to stop countdown", self._TextFont2, self._FGColor)
+        
+        self._NumberLabel = Label()
+        self._NumberLabel.SetCanvasHWND(self._CanvasHWND)
+        self._NumberLabel.Init(str(self._Number), self._CounterFont, self._FGColor)
+        
+    def Draw(self):
+        self._CanvasHWND.fill( self._BGColor )
+
+        self._TopLabel.NewCoord(Width/2, 15)
+        self._TopLabel.DrawCenter()
+        
+        self._BottomLabel.NewCoord(Width/2, Height-15)
+        self._BottomLabel.DrawCenter()
+
+        self._NumberLabel.NewCoord(Width/2,Height/2)
+        self._NumberLabel.SetText(str(self._Number))
+        self._NumberLabel.DrawCenter()
+        
+        
+        

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

@@ -38,6 +38,7 @@ fonts["varela27"] = pygame.font.Font(fonts_path["varela"],27)
 fonts["varela28"] = pygame.font.Font(fonts_path["varela"],28)
 fonts["varela34"] = pygame.font.Font(fonts_path["varela"],34)
 fonts["varela40"] = pygame.font.Font(fonts_path["varela"],40)
+fonts["varela120"] = pygame.font.Font(fonts_path["varela"],120)
 
 fonts["veramono25"] = pygame.font.Font(fonts_path["veramono"],25)
 fonts["veramono24"] = pygame.font.Font(fonts_path["veramono"],24)

+ 38 - 0
sys.py/UI/full_screen.py

@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+import pygame
+#from sys import exit
+#import os
+#import sys
+
+#from libs import easing
+#from datetime import datetime
+
+#from beeprint import pp
+
+## local package import
+from constants   import Width,Height
+
+
+class FullScreen(object):
+    _PosX  = 0
+    _PosY  = 0
+    _Width = Width 
+    _Height = Height
+    _CanvasHWND  = None
+    _HWND        = None
+
+    def __init__(self):
+        pass
+
+    def Init(self):
+        pass
+
+    def SwapAndShow(self):
+        if self._HWND != None:
+            self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width,self._Height))
+            pygame.display.update()
+    
+    def Draw(self):
+        pass
+    

+ 7 - 0
sys.py/UI/label.py

@@ -4,6 +4,8 @@ import pygame
 
 #import base64
 #from beeprint import pp
+from constants import Width,Height
+from util_funcs  import midRect
 
 class Label:
     _PosX=0
@@ -50,6 +52,11 @@ class Label:
     def SetCanvasHWND(self,_canvashwnd):
         self._CanvasHWND = _canvashwnd
 
+    def DrawCenter(self,bold=False):
+        self._FontObj.set_bold(bold) ## avoing same font tangling set_bold to others
+        my_text = self._FontObj.render( self._Text,True,self._Color)        
+        self._CanvasHWND.blit(my_text,midRect(self._PosX,self._PosY,self._Width,self._Height,Width,Height))
+        
     def Draw(self,bold=False):
         self._FontObj.set_bold(bold) ## avoing same font tangling set_bold to others
         my_text = self._FontObj.render( self._Text,True,self._Color)

+ 15 - 4
sys.py/UI/main_screen.py

@@ -26,6 +26,7 @@ from untitled_icon import UntitledIcon
 from Emulator    import MyEmulator
 
 from skin_manager import SkinManager
+from counter_screen import CounterScreen
 
 class MessageBox(Label):
     _Parent = None
@@ -135,7 +136,8 @@ class MainScreen(object):
     _MsgBoxFont  = fonts["veramono20"]
     _IconFont    = fonts["varela15"]
     _SkinManager = None
-    
+
+    _CounterScreen = None
     
     def __init__(self):
         self._Pages = []
@@ -149,6 +151,12 @@ class MainScreen(object):
 
         self._SkinManager = SkinManager()
         self._SkinManager.Init()
+
+        self._CounterScreen = CounterScreen()
+        self._CounterScreen._HWND = self._HWND
+        
+        self._CounterScreen.Init()
+
         
     def FartherPages(self):
         self._PageMax = len(self._Pages)
@@ -510,14 +518,17 @@ class MainScreen(object):
             self.EasingAllPageRight()
             #self.SwapAndShow()
         """
+        
         if event.key == pygame.K_t:
             self.DrawRun()
             self.SwapAndShow()
         
+        """
         if event.key == CurKeys["Space"]:
-            self.Draw()
-            self.SwapAndShow()
-            
+            self._CounterScreen.Draw()
+            self._CounterScreen.SwapAndShow()
+            self._CounterScreen.StartCounter()
+        """ 
         ## leave rest to Pages
         current_page_key_down_cb = getattr(self._CurrentPage,"KeyDown",None)
         if current_page_key_down_cb != None:

+ 2 - 3
sys.py/UI/title_bar.py

@@ -59,14 +59,13 @@ class TitleBar:
             self.SyncSoundVolume()
             self.UpdateWifiStrength()
             SwapAndShow()
-        else:
+            print("TitleBar Gobjectroundrobin")
+        elif self._InLowBackLight >= 0:
             self._InLowBackLight+=1
-
             if self._InLowBackLight > 10:
                 self.CheckBatteryStat()
                 self.SyncSoundVolume()
                 self.UpdateWifiStrength()
-                SwapAndShow()
                 self._InLowBackLight = 0
         
         return True

+ 1 - 1
sys.py/config.py

@@ -19,7 +19,7 @@ SKIN="default"
 ## three timer values in seconds: dim screen, close screen,PowerOff
 ## zero means no action
 PowerLevels = {}
-PowerLevels["supersaving"] = [10,30,100]
+PowerLevels["supersaving"] = [10,30,120]
 PowerLevels["powersaving"] = [40,120,300]
 PowerLevels["balance_saving"] = [40,0,0]
 

+ 40 - 18
sys.py/run.py

@@ -76,7 +76,12 @@ def gobject_loop():
 
 def RestoreLastBackLightBrightness(main_screen):
     global last_brt,passout_time_stage
-    
+
+    main_screen._CounterScreen.StopCounter()
+
+    passout_time_stage = 0
+    main_screen._TitleBar._InLowBackLight = -1
+
     if last_brt == -1:
         return
 
@@ -96,10 +101,7 @@ def RestoreLastBackLightBrightness(main_screen):
                 f.truncate()
                 f.close()
                 last_brt = -1
-                main_screen._TitleBar._InLowBackLight = -1
-                passout_time_stage = 0
-            else:
-                
+            else:                
                 f.close()
                 return
 
@@ -132,7 +134,7 @@ def InspectionTeam(main_screen):
                     f.truncate()
                     f.close()
 
-                    main_screen._TitleBar._InLowBackLight = 0
+        main_screen._TitleBar._InLowBackLight = 0
 
         if time_2 != 0:
             passout_time_stage = 1 # next 
@@ -152,21 +154,36 @@ def InspectionTeam(main_screen):
                 f.write(str(brt))
                 f.truncate()
                 f.close()
-                main_screen._TitleBar._InLowBackLight = 0
+        
+        main_screen._TitleBar._InLowBackLight = 0
 
         if time_3 != 0:
             passout_time_stage = 2 # next 
         everytime_keydown = cur_time
         
     elif cur_time - everytime_keydown > time_3 and passout_time_stage == 2:
-        print("Power Off now")
-
-        if config.CurKeySet != "PC":
-            cmdpath = "sudo halt -p"
-            pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))
+        print("Power Off counting down")
         
-        passout_time_stage = 0
-        everytime_keydown = cur_time
+        main_screen._CounterScreen.Draw()
+        main_screen._CounterScreen.SwapAndShow()
+        main_screen._CounterScreen.StartCounter()
+        
+        
+        try:
+            f = open(config.BackLight,"r+")
+        except IOError:
+            pass
+        else:
+            with f:
+                brt = last_brt
+                f.seek(0)
+                f.write(str(brt))
+                f.truncate()
+                f.close()
+                
+        main_screen._TitleBar._InLowBackLight = 0
+
+        passout_time_stage = 4
         
     return True
 
@@ -186,7 +203,9 @@ def event_process(event,main_screen):
             pygame.event.clear(GMEVT)
             return
         if event.type == RUNEVT:
-
+            everytime_keydown = time.time()
+            RestoreLastBackLightBrightness(main_screen)
+            
             if config.DontLeave==True:
                 os.chdir(GetExePath())
                 os.system( "/bin/sh -c "+event.message)
@@ -209,6 +228,8 @@ def event_process(event,main_screen):
             return
 
         if event.type == RUNSYS:
+            everytime_keydown = time.time()
+            RestoreLastBackLightBrightness(main_screen)
             if config.DontLeave==True:
                 os.chdir(GetExePath())
                 os.system( "/bin/sh -c "+event.message)
@@ -226,7 +247,6 @@ def event_process(event,main_screen):
 
         if event.type == POWEROPT:
             everytime_keydown = time.time()
-            RestoreLastBackLightBrightness(main_screen)
             
             return
         if event.type == pygame.KEYUP:
@@ -273,6 +293,7 @@ def event_process(event,main_screen):
             ###########################################################
             if event.key == pygame.K_ESCAPE:
                 pygame.event.clear()
+
             
             key_down_cb = getattr(main_screen,"KeyDown",None)
             if key_down_cb != None:
@@ -368,6 +389,7 @@ def big_loop():
     main_screen.ReadTheDirIntoPages("../Menu",0,None)
     main_screen.FartherPages()
 
+    
     title_bar._SkinManager = main_screen._SkinManager
     foot_bar._SkinManager  = main_screen._SkinManager
     
@@ -385,7 +407,7 @@ def big_loop():
     gobject.timeout_add(3000,title_bar.GObjectRoundRobin)
 
 
-    socket_thread(main_screen)
+#    socket_thread(main_screen)
     
     gobject_loop()
     
@@ -402,7 +424,7 @@ if __name__ == '__main__':
     screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)
 
     pygame.event.set_allowed(None) 
-    pygame.event.set_allowed([pygame.KEYDOWN,pygame.KEYUP,GMEVT,RUNEVT,RUNSYS])
+    pygame.event.set_allowed([pygame.KEYDOWN,pygame.KEYUP,GMEVT,RUNEVT,RUNSYS,POWEROPT])
     
     pygame.key.set_repeat(DT+DT*6+DT/2, DT+DT*3+DT/2)