- ## caută
- class ScrollBar(Window)
- ## adaugă sub toată clasa
- class ScrollBar2(Window):
- SCROLLBAR_WIDTH = 13
- SCROLLBAR_MIDDLE_HEIGHT = 1
- SCROLLBAR_BUTTON_WIDTH = 17
- SCROLLBAR_BUTTON_HEIGHT = 17
- SCROLL_BTN_XDIST = 2
- SCROLL_BTN_YDIST = 2
- class MiddleBar(DragButton):
- def __init__(self):
- DragButton.__init__(self)
- self.AddFlag("movable")
- self.SetWindowName("scrollbar_middlebar")
- def MakeImage(self):
- top = ImageBox()
- top.SetParent(self)
- top.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_top.tga")
- top.AddFlag("not_pick")
- top.Show()
- topScale = ExpandedImageBox()
- topScale.SetParent(self)
- topScale.SetPosition(0, top.GetHeight())
- topScale.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_topscale.tga")
- topScale.AddFlag("not_pick")
- topScale.Show()
- bottom = ImageBox()
- bottom.SetParent(self)
- bottom.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_bottom.tga")
- bottom.AddFlag("not_pick")
- bottom.Show()
- bottomScale = ExpandedImageBox()
- bottomScale.SetParent(self)
- bottomScale.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_bottomscale.tga")
- bottomScale.AddFlag("not_pick")
- bottomScale.Show()
- middle = ExpandedImageBox()
- middle.SetParent(self)
- middle.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle_middle.tga")
- middle.AddFlag("not_pick")
- middle.Show()
- self.top = top
- self.topScale = topScale
- self.bottom = bottom
- self.bottomScale = bottomScale
- self.middle = middle
- def SetSize(self, height):
- minHeight = self.top.GetHeight() + self.bottom.GetHeight() + self.middle.GetHeight()
- height = max(minHeight, height)
- DragButton.SetSize(self, 10, height)
- scale = (height - minHeight) / 2
- extraScale = 0
- if (height - minHeight) % 2 == 1:
- extraScale = 1
- self.topScale.SetRenderingRect(0, 0, 0, scale - 1)
- self.middle.SetPosition(0, self.top.GetHeight() + scale)
- self.bottomScale.SetPosition(0, self.middle.GetBottom())
- self.bottomScale.SetRenderingRect(0, 0, 0, scale - 1 + extraScale)
- self.bottom.SetPosition(0, height - self.bottom.GetHeight())
- def __init__(self):
- Window.__init__(self)
- self.pageSize = 1
- self.curPos = 0.0
- self.eventScroll = None
- self.eventArgs = None
- self.lockFlag = False
- self.CreateScrollBar()
- self.SetScrollBarSize(0)
- self.scrollStep = 0.20
- self.SetWindowName("NONAME_ScrollBar")
- def __del__(self):
- Window.__del__(self)
- def CreateScrollBar(self):
- topImage = ImageBox()
- topImage.SetParent(self)
- topImage.AddFlag("not_pick")
- topImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_top.tga")
- topImage.Show()
- bottomImage = ImageBox()
- bottomImage.SetParent(self)
- bottomImage.AddFlag("not_pick")
- bottomImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_bottom.tga")
- bottomImage.Show()
- middleImage = ExpandedImageBox()
- middleImage.SetParent(self)
- middleImage.AddFlag("not_pick")
- middleImage.SetPosition(0, topImage.GetHeight())
- middleImage.LoadImage("d:/ymir work/battle_pass/scrollbar/scrollbar_middle.tga")
- middleImage.Show()
- self.topImage = topImage
- self.bottomImage = bottomImage
- self.middleImage = middleImage
- middleBar = self.MiddleBar()
- middleBar.SetParent(self)
- middleBar.SetMoveEvent(__mem_func__(self.OnMove))
- middleBar.Show()
- middleBar.MakeImage()
- middleBar.SetSize(0) # set min height
- self.middleBar = middleBar
- def Destroy(self):
- self.eventScroll = None
- self.eventArgs = None
- def SetScrollEvent(self, event, *args):
- self.eventScroll = event
- self.eventArgs = args
- def SetMiddleBarSize(self, pageScale):
- self.middleBar.SetSize(int(pageScale * float(self.GetHeight() - self.SCROLL_BTN_YDIST*2)))
- realHeight = self.GetHeight() - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
- self.pageSize = realHeight
- def SetScrollBarSize(self, height):
- self.SetSize(self.SCROLLBAR_WIDTH, height)
- self.pageSize = height - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
- middleImageScale = float((height - self.SCROLL_BTN_YDIST*2) - self.middleImage.GetHeight()) / float(self.middleImage.GetHeight())
- self.middleImage.SetRenderingRect(0, 0, 0, middleImageScale)
- self.bottomImage.SetPosition(0, height - self.bottomImage.GetHeight())
- self.middleBar.SetRestrictMovementArea(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST, \
- self.middleBar.GetWidth(), height - self.SCROLL_BTN_YDIST * 2)
- self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST)
- def SetScrollStep(self, step):
- self.scrollStep = step
- def GetScrollStep(self):
- return self.scrollStep
- def GetPos(self):
- return self.curPos
- def OnUp(self):
- self.SetPos(self.curPos-self.scrollStep)
- def OnDown(self):
- self.SetPos(self.curPos+self.scrollStep)
- def SetPos(self, pos, moveEvent = True):
- pos = max(0.0, pos)
- pos = min(1.0, pos)
- newPos = float(self.pageSize) * pos
- self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, int(newPos) + self.SCROLL_BTN_YDIST)
- if moveEvent == True:
- self.OnMove()
- def OnMove(self):
- if self.lockFlag:
- return
- if 0 == self.pageSize:
- return
- (xLocal, yLocal) = self.middleBar.GetLocalPosition()
- self.curPos = float(yLocal - self.SCROLL_BTN_YDIST) / float(self.pageSize)
- if self.eventScroll:
- apply(self.eventScroll, self.eventArgs)
- def OnMouseLeftButtonDown(self):
- (xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
- newPos = float(yMouseLocalPosition) / float(self.GetHeight())
- self.SetPos(newPos)
- def LockScroll(self):
- self.lockFlag = True
- def UnlockScroll(self):
- self.lockFlag = False
- ## caută
- elif Type == "scrollbar":
- parent.Children[Index] = ScrollBar()
- parent.Children[Index].SetParent(parent)
- self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
- ## adaugă sub
- elif Type == "scrollbar2":
- parent.Children[Index] = ScrollBar2()
- parent.Children[Index].SetParent(parent)
- self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)