list_item.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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.icon_item import IconItem
  9. from UI.util_funcs import midRect
  10. from UI.skin_manager import MySkinManager
  11. # a item for List
  12. # - - - - - - - - - - - --
  13. # | Icon Text..... > |
  14. # ------------------------
  15. import myvars # icons_path
  16. class ListItemIcon(IconItem):
  17. _CanvasHWND = None
  18. _Parent = None
  19. _Width = 18
  20. _Height = 18
  21. def Draw(self):
  22. self._CanvasHWND.blit(self._ImgSurf,(self._PosX,self._PosY+(self._Parent._Height-self._Height)/2,self._Width,self._Height))
  23. class ListItemLabel(Label):
  24. _ActiveColor = MySkinManager.GiveColor('Active')
  25. _Active = False
  26. def Draw(self):
  27. self._FontObj.set_bold(self._Active)
  28. my_text = self._FontObj.render( self._Text,True,self._Color)
  29. self._CanvasHWND.blit(my_text,(self._PosX,self._PosY,self._Width,self._Height))
  30. class ListItem(object):
  31. _PosX = 0
  32. _PosY = 0
  33. _Width = 0
  34. _Height = 30
  35. _Labels = {}
  36. _Icons = {}
  37. _Fonts = {}
  38. _MyType = ICON_TYPES["EXE"]
  39. _LinkObj = None
  40. _Path = ""
  41. _Active = False
  42. _Parent = None
  43. _Text = ""
  44. def __init__(self):
  45. self._Labels = {}
  46. self._Icons = {}
  47. self._Fonts = {}
  48. def Init(self,text):
  49. self._Text = text
  50. l = ListItemLabel()
  51. l._PosX = 22
  52. l.SetCanvasHWND(self._Parent._CanvasHWND)
  53. if self._MyType == ICON_TYPES["DIR"]:
  54. l.Init(text,self._Fonts["normal"])
  55. self._Path = text
  56. else:
  57. l.Init(text,self._Fonts["normal"])
  58. self._Path = text
  59. self._Labels["Text"] = l
  60. def NewCoord(self,x,y):
  61. self._PosX = x
  62. self._PosY = y
  63. def Draw(self):
  64. if self._MyType == ICON_TYPES["DIR"] and self._Path != "[..]":
  65. self._Parent._Icons["sys"]._IconIndex = 0
  66. self._Parent._Icons["sys"].NewCoord(self._PosX+12,self._PosY+ (self._Height - self._Parent._Icons["sys"]._Height)/2+self._Parent._Icons["sys"]._Height/2)
  67. self._Parent._Icons["sys"].Draw()
  68. if self._MyType == ICON_TYPES["FILE"]:
  69. self._Parent._Icons["sys"]._IconIndex = 1
  70. self._Parent._Icons["sys"].NewCoord(self._PosX+12,self._PosY+ (self._Height - self._Parent._Icons["sys"]._Height)/2+self._Parent._Icons["sys"]._Height/2)
  71. self._Parent._Icons["sys"].Draw()
  72. if self._Active == True:
  73. self._Labels["Text"]._Active = True
  74. else:
  75. self._Labels["Text"]._Active = False
  76. self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2
  77. pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1)
  78. self._Labels["Text"].Draw()