icon_item.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. ## local import
  4. from constants import icon_width,icon_height,ICON_TYPES,ALIGN,icon_ext,Width,Height
  5. from util_funcs import color_surface,midRect
  6. from label import Label
  7. from lang_manager import MyLangManager
  8. from widget import Widget
  9. class IconItem(Widget):
  10. _ImageName=""
  11. _ImgSurf = None
  12. _Parent = None
  13. _Index = 0
  14. _MyType = ICON_TYPES["EXE"]
  15. _CmdPath = ""
  16. _LinkPage = None
  17. _Label = None
  18. _Align = ALIGN["VCenter"] # set for the Icon Image and Text Label
  19. def __init__(self):
  20. self._ImgSurf=None
  21. def Init(self,x,y,w,h,at): # the Surface is assigned in Screen
  22. self._PosX = x
  23. self._PosY = y
  24. self._Width = w
  25. self._Height = h
  26. self._AnimationTime = at
  27. def SetLableColor(self,color):
  28. self._Label.SetColor(color)
  29. def AddLabel(self,text,fontobj):
  30. if self._Label == None:
  31. self._Label = Label()
  32. self._Label.Init(text,fontobj)
  33. else:
  34. #just replace the text
  35. self._Label._Init(text,fontobj)
  36. def Adjust(self,x,y,w,h,at): # the Surface is assigned in Screen
  37. self.Init(x,y,w,h,at)
  38. if self._Label != None:
  39. self._Label.SetCanvasHWND( self._Parent._CanvasHWND)
  40. self.CreateImageSurf()
  41. self.AdjustLinkPage()
  42. def AdjustLinkPage(self):
  43. if self._MyType==ICON_TYPES["DIR"] and self._LinkPage != None:
  44. self._LinkPage._Index = 0
  45. self._LinkPage._Align = ALIGN["SLeft"]
  46. self._LinkPage._IconNumbers = len(self._LinkPage._Icons)
  47. self._LinkPage._Screen = self._Parent._Screen
  48. self._LinkPage._CanvasHWND = self._Parent._Screen._CanvasHWND
  49. self._LinkPage._FootMsg = ["Nav","","","Back","Enter"] ## Default Page Foot info
  50. if self._LinkPage._Align == ALIGN["HLeft"]:
  51. self._LinkPage.AdjustHLeftAlign()
  52. elif self._LinkPage._Align == ALIGN["SLeft"]:
  53. self._LinkPage.AdjustSAutoLeftAlign()
  54. if self._LinkPage._IconNumbers > 1:
  55. self._LinkPage._PsIndex = 1
  56. self._LinkPage._IconIndex = self._LinkPage._PsIndex
  57. def CreateImageSurf(self):
  58. if self._ImgSurf == None and self._ImageName != "":
  59. # print(self._ImageName)
  60. self._ImgSurf = pygame.image.load( self._ImageName ).convert_alpha()
  61. if self._ImgSurf.get_width() > icon_width or self._ImgSurf.get_height() > icon_height:
  62. self._ImgSurf = pygame.transform.scale(self._ImgSurf,(icon_width,icon_height))
  63. def ChangeImgSurfColor(self,color):
  64. color_surface(self._ImgSurf,color)
  65. def Clear(self):
  66. pass
  67. def DrawTopLeft(self):
  68. if self._Align==ALIGN["VCenter"]: #default
  69. if self._Label != None:
  70. self._Label._PosX = self._PosX - self._Label._Width/2 + self._Parent._PosX
  71. self._Label._PosY = self._PosY + self._Height/2 +6 + self._Parent._PosY
  72. elif self._Align ==ALIGN["HLeft"]:
  73. if self._Label != None:
  74. self._Label._PosX = self._PosX + self._Width/2 + 3 + self._Parent._PosX
  75. self._Label._PosY = self._PosY - self._Label._Height/2 + self._Parent._PosY
  76. if self._Label!=None:
  77. self._Label.Draw()
  78. if self._ImgSurf != None:
  79. self._Parent._CanvasHWND.blit(self._ImgSurf,pygame.Rect(self._PosX+self._Parent._PosX,
  80. self._PosY+self._Parent._PosY,
  81. self._Width,
  82. self._Height))
  83. def Draw(self):
  84. if self._Align==ALIGN["VCenter"]: #default
  85. if self._Label != None:
  86. self._Label._PosX = self._PosX - self._Label._Width/2 + self._Parent._PosX
  87. self._Label._PosY = self._PosY + self._Height/2 +6 + self._Parent._PosY
  88. elif self._Align ==ALIGN["HLeft"]:
  89. if self._Label != None:
  90. self._Label._PosX = self._PosX + self._Width/2 + 3 + self._Parent._PosX
  91. self._Label._PosY = self._PosY - self._Label._Height/2 + self._Parent._PosY
  92. if self._Label!=None:
  93. self._Label.Draw()
  94. if self._ImgSurf != None:
  95. self._Parent._CanvasHWND.blit(self._ImgSurf,midRect(self._PosX+self._Parent._PosX,
  96. self._PosY+self._Parent._PosY,
  97. self._Width,self._Height,Width,Height))