1. ## caută
  2. class ScrollBar(Window)
  3. ## adaugă sub toată clasa
  4. class ScrollBar2(Window):
  5. SCROLLBAR_WIDTH = 13
  6. SCROLLBAR_MIDDLE_HEIGHT = 1
  7. SCROLLBAR_BUTTON_WIDTH = 17
  8. SCROLLBAR_BUTTON_HEIGHT = 17
  9. SCROLL_BTN_XDIST = 2
  10. SCROLL_BTN_YDIST = 2
  11. class MiddleBar(DragButton):
  12. def __init__(self):
  13. DragButton.__init__(self)
  14. self.AddFlag("movable")
  15. self.SetWindowName("scrollbar_middlebar")
  16. def MakeImage(self):
  17. top = ImageBox()
  18. top.SetParent(self)
  19. top.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_top.tga")
  20. top.AddFlag("not_pick")
  21. top.Show()
  22. topScale = ExpandedImageBox()
  23. topScale.SetParent(self)
  24. topScale.SetPosition(0, top.GetHeight())
  25. topScale.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_topscale.tga")
  26. topScale.AddFlag("not_pick")
  27. topScale.Show()
  28. bottom = ImageBox()
  29. bottom.SetParent(self)
  30. bottom.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_bottom.tga")
  31. bottom.AddFlag("not_pick")
  32. bottom.Show()
  33. bottomScale = ExpandedImageBox()
  34. bottomScale.SetParent(self)
  35. bottomScale.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_bottomscale.tga")
  36. bottomScale.AddFlag("not_pick")
  37. bottomScale.Show()
  38. middle = ExpandedImageBox()
  39. middle.SetParent(self)
  40. middle.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_middle.tga")
  41. middle.AddFlag("not_pick")
  42. middle.Show()
  43. self.top = top
  44. self.topScale = topScale
  45. self.bottom = bottom
  46. self.bottomScale = bottomScale
  47. self.middle = middle
  48. def SetSize(self, height):
  49. minHeight = self.top.GetHeight() + self.bottom.GetHeight() + self.middle.GetHeight()
  50. height = max(minHeight, height)
  51. DragButton.SetSize(self, 10, height)
  52. scale = (height - minHeight) / 2
  53. extraScale = 0
  54. if (height - minHeight) % 2 == 1:
  55. extraScale = 1
  56. self.topScale.SetRenderingRect(0, 0, 0, scale - 1)
  57. self.middle.SetPosition(0, self.top.GetHeight() + scale)
  58. self.bottomScale.SetPosition(0, self.middle.GetBottom())
  59. self.bottomScale.SetRenderingRect(0, 0, 0, scale - 1 + extraScale)
  60. self.bottom.SetPosition(0, height - self.bottom.GetHeight())
  61. def __init__(self):
  62. Window.__init__(self)
  63. self.pageSize = 1
  64. self.curPos = 0.0
  65. self.eventScroll = None
  66. self.eventArgs = None
  67. self.lockFlag = False
  68. self.CreateScrollBar()
  69. self.SetScrollBarSize(0)
  70. self.scrollStep = 0.20
  71. self.SetWindowName("NONAME_ScrollBar")
  72. def __del__(self):
  73. Window.__del__(self)
  74. def CreateScrollBar(self):
  75. topImage = ImageBox()
  76. topImage.SetParent(self)
  77. topImage.AddFlag("not_pick")
  78. topImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_top.tga")
  79. topImage.Show()
  80. bottomImage = ImageBox()
  81. bottomImage.SetParent(self)
  82. bottomImage.AddFlag("not_pick")
  83. bottomImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_bottom.tga")
  84. bottomImage.Show()
  85. middleImage = ExpandedImageBox()
  86. middleImage.SetParent(self)
  87. middleImage.AddFlag("not_pick")
  88. middleImage.SetPosition(0, topImage.GetHeight())
  89. middleImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle.tga")
  90. middleImage.Show()
  91. self.topImage = topImage
  92. self.bottomImage = bottomImage
  93. self.middleImage = middleImage
  94. middleBar = self.MiddleBar()
  95. middleBar.SetParent(self)
  96. middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  97. middleBar.Show()
  98. middleBar.MakeImage()
  99. middleBar.SetSize(0) # set min height
  100. self.middleBar = middleBar
  101. def Destroy(self):
  102. self.eventScroll = None
  103. self.eventArgs = None
  104. def SetScrollEvent(self, event, *args):
  105. self.eventScroll = event
  106. self.eventArgs = args
  107. def SetMiddleBarSize(self, pageScale):
  108. self.middleBar.SetSize(int(pageScale * float(self.GetHeight() - self.SCROLL_BTN_YDIST*2)))
  109. realHeight = self.GetHeight() - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
  110. self.pageSize = realHeight
  111. def SetScrollBarSize(self, height):
  112. self.SetSize(self.SCROLLBAR_WIDTH, height)
  113. self.pageSize = height - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
  114. middleImageScale = float((height - self.SCROLL_BTN_YDIST*2) - self.middleImage.GetHeight()) / float(self.middleImage.GetHeight())
  115. self.middleImage.SetRenderingRect(0, 0, 0, middleImageScale)
  116. self.bottomImage.SetPosition(0, height - self.bottomImage.GetHeight())
  117. self.middleBar.SetRestrictMovementArea(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST, \
  118. self.middleBar.GetWidth(), height - self.SCROLL_BTN_YDIST * 2)
  119. self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST)
  120. def SetScrollStep(self, step):
  121. self.scrollStep = step
  122. def GetScrollStep(self):
  123. return self.scrollStep
  124. def GetPos(self):
  125. return self.curPos
  126. def OnUp(self):
  127. self.SetPos(self.curPos-self.scrollStep)
  128. def OnDown(self):
  129. self.SetPos(self.curPos+self.scrollStep)
  130. def SetPos(self, pos, moveEvent = True):
  131. pos = max(0.0, pos)
  132. pos = min(1.0, pos)
  133. newPos = float(self.pageSize) * pos
  134. self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, int(newPos) + self.SCROLL_BTN_YDIST)
  135. if moveEvent == True:
  136. self.OnMove()
  137. def OnMove(self):
  138. if self.lockFlag:
  139. return
  140. if 0 == self.pageSize:
  141. return
  142. (xLocal, yLocal) = self.middleBar.GetLocalPosition()
  143. self.curPos = float(yLocal - self.SCROLL_BTN_YDIST) / float(self.pageSize)
  144. if self.eventScroll:
  145. apply(self.eventScroll, self.eventArgs)
  146. def OnMouseLeftButtonDown(self):
  147. (xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
  148. newPos = float(yMouseLocalPosition) / float(self.GetHeight())
  149. self.SetPos(newPos)
  150. def LockScroll(self):
  151. self.lockFlag = True
  152. def UnlockScroll(self):
  153. self.lockFlag = False
  154. ## caută
  155. elif Type == "scrollbar":
  156. parent.Children[Index] = ScrollBar()
  157. parent.Children[Index].SetParent(parent)
  158. self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  159. ## adaugă sub
  160. elif Type == "scrollbar2":
  161. parent.Children[Index] = ScrollBar2()
  162. parent.Children[Index].SetParent(parent)
  163. self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)