__init__.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. import os
  4. ## local UI import
  5. from UI.page import Page
  6. from UI.skin_manager import MySkinManager
  7. from UI.constants import ICON_TYPES,Width,Height
  8. from UI.icon_item import IconItem
  9. from UI.icon_pool import MyIconPool
  10. from UI.label import Label
  11. from UI.util_funcs import midRect
  12. class StoragePage(Page):
  13. _Icons = {}
  14. _BGpng = None
  15. _BGwidth = 96
  16. _BGheight = 73
  17. _BGlabel = None
  18. _FreeLabel = None
  19. _GBmsg = "%.1fGB of %.1fGB Used"
  20. _DskUsg = None
  21. _TextColor = MySkinManager.GiveColor('Text')
  22. _FootMsg = ["Nav.","","","Back",""]
  23. def __init__(self):
  24. Page.__init__(self)
  25. self._Icons = {}
  26. def DiskUsage(self):
  27. statvfs = os.statvfs('/')
  28. total_space = (statvfs.f_frsize * statvfs.f_blocks)/1024.0/1024.0/1024.0
  29. avail_space = ( statvfs.f_frsize * statvfs.f_bavail) / 1024.0 / 1024.0/ 1024.0
  30. return avail_space,total_space
  31. def Init(self):
  32. self._DskUsg = self.DiskUsage()
  33. self._CanvasHWND = self._Screen._CanvasHWND
  34. self._Width = self._Screen._Width
  35. self._Height = self._Screen._Height
  36. self._GBLabel = Label()
  37. self._GBLabel.SetCanvasHWND(self._CanvasHWND)
  38. self._GBLabel.Init(self._GBmsg % (self._DskUsg[1]-self._DskUsg[0], self._DskUsg[1]),MySkinManager.GiveFont("varela11") )
  39. self._GBLabel.SetColor(self._TextColor)
  40. self._PctLabel = Label()
  41. self._PctLabel.SetCanvasHWND(self._CanvasHWND)
  42. usage_percent = (self._DskUsg[0]/self._DskUsg[1] )*100.0
  43. self._PctLabel.Init("%d%%"% int(usage_percent),MySkinManager.GiveFont("EurostileBold30"))
  44. self._PctLabel.SetColor( self._TextColor )
  45. self._FreeLabel = Label()
  46. self._FreeLabel.SetCanvasHWND(self._CanvasHWND)
  47. self._FreeLabel.Init("FREE",MySkinManager.GiveFont("varela12"))
  48. self._FreeLabel.SetColor(self._PctLabel._Color)
  49. def OnLoadCb(self):
  50. pass
  51. def Draw(self):
  52. self.ClearCanvas()
  53. self._PctLabel.NewCoord(32,102- 33)
  54. self._PctLabel.Draw()
  55. self._FreeLabel.NewCoord(33 ,130-25)
  56. self._FreeLabel.Draw()
  57. self._GBLabel.NewCoord(145,103-29)
  58. self._GBLabel.Draw()
  59. #bgcolor = (238,238,238), fgcolor = (126,206,244)
  60. usage_percent = (self._DskUsg[0]/self._DskUsg[1] )
  61. if usage_percent < 0.1:
  62. usage_percent = 0.1
  63. rect_ = pygame.Rect(144,118-25, 283-144,139-117)
  64. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'), rect_, 1)
  65. rect2 = pygame.Rect(144,118-25,int((283-144)*(1.0-usage_percent)),139-117)
  66. rect2.left = rect_.left
  67. rect2.top = rect_.top
  68. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'),rect2, 0)
  69. sep_rect = pygame.Rect(129,99-25,2,42)
  70. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Inactive'),sep_rect, 0)
  71. ##4 cross
  72. self.DrawCross(10,10)
  73. self.DrawCross(self._Screen._Width-20,10)
  74. self.DrawCross(10,self._Screen._Height-20)
  75. self.DrawCross(self._Screen._Width-20,self._Screen._Height-20)
  76. class APIOBJ(object):
  77. _StoragePage = None
  78. def __init__(self):
  79. pass
  80. def Init(self,main_screen):
  81. self._StoragePage = StoragePage()
  82. self._StoragePage._Screen = main_screen
  83. self._StoragePage._Name ="Storage"
  84. self._StoragePage.Init()
  85. def API(self,main_screen):
  86. if main_screen !=None:
  87. main_screen.PushPage(self._StoragePage)
  88. main_screen.Draw()
  89. main_screen.SwapAndShow()
  90. OBJ = APIOBJ()
  91. def Init(main_screen):
  92. OBJ.Init(main_screen)
  93. def API(main_screen):
  94. OBJ.API(main_screen)