list_item.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from libs.roundrects import aa_round_rect
  4. ## local UI import
  5. from UI.constants import ICON_TYPES
  6. from UI.page import Page
  7. from UI.label import Label
  8. from UI.fonts import fonts
  9. from UI.icon_item import IconItem
  10. from UI.util_funcs import midRect
  11. from UI.skin_manager import SkinManager
  12. # a item for List
  13. # - - - - - - - - - - - --
  14. # | Icon Text..... > |
  15. # ------------------------
  16. import myvars # icons_path
  17. class ListItemIcon(IconItem):
  18. _CanvasHWND = None
  19. _Parent = None
  20. _Width = 18
  21. _Height = 18
  22. def Draw(self):
  23. self._CanvasHWND.blit(self._ImgSurf,(self._PosX,self._PosY+(self._Parent._Height-self._Height)/2,self._Width,self._Height))
  24. class ListItemLabel(Label):
  25. _ActiveColor = SkinManager().GiveColor('Active')
  26. _Active = False
  27. def Draw(self):
  28. self._FontObj.set_bold(self._Active)
  29. """
  30. if self._Active == True:
  31. my_text = self._FontObj.render( self._Text,True,self._ActiveColor)
  32. else:
  33. my_text = self._FontObj.render( self._Text,True,self._Color)
  34. """
  35. my_text = self._FontObj.render( self._Text,True,self._Color)
  36. self._CanvasHWND.blit(my_text,(self._PosX,self._PosY,self._Width,self._Height))
  37. class ListItem(object):
  38. _PosX = 0
  39. _PosY = 0
  40. _Width = 0
  41. _Height = 30
  42. _Labels = {}
  43. _Icons = {}
  44. _Fonts = {}
  45. _MyType = ICON_TYPES["EXE"]
  46. _LinkObj = None
  47. _Path = ""
  48. _Active = False
  49. _Playing = False ## play or pause
  50. _PlayingProcess = 0 # 0 - 100
  51. _Parent = None
  52. _Text = ""
  53. def __init__(self):
  54. self._Labels = {}
  55. self._Icons = {}
  56. self._Fonts = {}
  57. def Init(self,text):
  58. #self._Fonts["normal"] = fonts["veramono12"]
  59. self._Text = text
  60. l = ListItemLabel()
  61. l._PosX = 22
  62. l.SetCanvasHWND(self._Parent._CanvasHWND)
  63. if self._MyType == ICON_TYPES["DIR"]:
  64. l.Init(text,self._Fonts["normal"])
  65. self._Path = text
  66. else:
  67. l.Init(text,self._Fonts["normal"])
  68. self._Path = text
  69. self._Labels["Text"] = l
  70. def NewCoord(self,x,y):
  71. self._PosX = x
  72. self._PosY = y
  73. def Draw(self):
  74. if self._MyType == ICON_TYPES["DIR"] and self._Path != "[..]":
  75. self._Parent._Icons["sys"]._IconIndex = 0
  76. self._Parent._Icons["sys"].NewCoord(self._PosX+12,self._PosY+ (self._Height - self._Parent._Icons["sys"]._Height)/2+self._Parent._Icons["sys"]._Height/2)
  77. self._Parent._Icons["sys"].Draw()
  78. if self._MyType == ICON_TYPES["FILE"]:
  79. self._Parent._Icons["sys"]._IconIndex = 1
  80. self._Parent._Icons["sys"].NewCoord(self._PosX+12,self._PosY+ (self._Height - self._Parent._Icons["sys"]._Height)/2+self._Parent._Icons["sys"]._Height/2)
  81. self._Parent._Icons["sys"].Draw()
  82. if self._Active == True:
  83. self._Labels["Text"]._Active = True
  84. else:
  85. self._Labels["Text"]._Active = False
  86. self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2
  87. pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1)
  88. if self._Playing == True:
  89. self._Labels["Text"]._Active =True
  90. self._Labels["Text"].Draw()
  91. #_rect = midRect(10,self._PosY+15,10,10,self._Parent._Width,self._Parent._Height)
  92. #aa_round_rect(self._Parent._CanvasHWND,_rect,(0,0,0),3,0,(0,0,0))
  93. #pygame.draw.polygon(self._Parent._CanvasHWND, (0,0,0), [[6, self._PosY+7], [11, self._PosY+14],[6, self._PosY+21]], 2)
  94. if self._PlayingProcess > 0:
  95. seek_posx = int(self._Width * self._PlayingProcess/100.0)
  96. pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Active'),(self._PosX,self._PosY+self._Height-2),(self._PosX+seek_posx,self._PosY+self._Height-2),2)
  97. else:
  98. self._Labels["Text"].Draw()