put in
# Search
class SmallThinScrollBar(ScrollBar):
[...]
# add under this class
class ScrollBarFlat(Window):
SCROLLBAR_WIDTH = 11
SCROLLBAR_MIDDLE_HEIGHT = 12
MIDDLE_BAR_POS = 3
MIDDLE_BAR_UPPER_PLACE = 0
MIDDLE_BAR_DOWNER_PLACE = 4
TEMP_SPACE = MIDDLE_BAR_UPPER_PLACE + MIDDLE_BAR_DOWNER_PLACE
class MiddleBar(DragButton):
def __init__(self):
DragButton.__init__(self)
self.AddFlag("movable")
#self.AddFlag("restrict_x")
def MakeScrollBar(self):
self.scrollbar = Bar()
self.scrollbar.SetParent(self)
self.scrollbar.SetColor(0xFF6B655A)
self.scrollbar.SetPosition(3, 3)
self.scrollbar.SetSize(5, 10)
self.scrollbar.AddFlag("not_pick")
self.scrollbar.Show()
def SetSize(self, height):
height = max(12, height)
self.scrollbar.SetSize(5, height)
DragButton.SetSize(self, 8, height)
#height -= 4*3
#self.middle.SetRenderingRect(0, 0, 0, float(height)/4.0)
def __init__(self):
Window.__init__(self)
self.pageSize = 1
self.curPos = 0.0
self.eventScroll = lambda *arg: None
self.lockFlag = False
self.scrollStep1 = 0.20
self.scrollStep2 = 0.10
self.CreateScrollBar()
def __del__(self):
Window.__del__(self)
def CreateScrollBar(self):
self.barSlotOutline = Bar()
self.barSlotOutline.SetParent(self)
self.barSlotOutline.SetSize(11, 50)
self.barSlotOutline.SetPosition(0, 0)
self.barSlotOutline.SetColor(0xFF000000)
self.barSlotOutline.AddFlag("not_pick")
self.barSlotOutline.Show()
self.barSlotEdge = Bar()
self.barSlotEdge.SetParent(self.barSlotOutline)
self.barSlotEdge.SetSize(9, 48)
self.barSlotEdge.SetPosition(1, 1)
self.barSlotEdge.SetColor(0xFF6B655A)
self.barSlotEdge.AddFlag("not_pick")
self.barSlotEdge.Show()
self.barSlotMiddle = Bar()
self.barSlotMiddle.SetParent(self.barSlotOutline)
self.barSlotMiddle.SetSize(7, 46)
self.barSlotMiddle.SetPosition(2, 2)
self.barSlotMiddle.SetColor(0xFF0C0C0C)
self.barSlotMiddle.AddFlag("not_pick")
self.barSlotMiddle.Show()
self.middleBar = self.MiddleBar()
self.middleBar.SetParent(self)
self.middleBar.SetMoveEvent(__mem_func__(self.OnMove))
self.middleBar.MakeScrollBar()
self.middleBar.SetSize(12)
self.middleBar.Show()
self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
def Destroy(self):
self.middleBar = None
#self.upButton = None
#self.downButton = None
self.eventScroll = lambda *arg: None
def SetScrollEvent(self, event):
self.eventScroll = event
def SetMiddleBarSize(self, pageScale):
realHeight = self.GetHeight()
self.SCROLLBAR_MIDDLE_HEIGHT = int(pageScale * float(realHeight))
self.middleBar.SetSize(self.SCROLLBAR_MIDDLE_HEIGHT)
self.pageSize = self.GetHeight() - self.SCROLLBAR_MIDDLE_HEIGHT - (self.TEMP_SPACE)
def SetScrollBarSize(self, height):
self.pageSize = height - self.SCROLLBAR_MIDDLE_HEIGHT - self.TEMP_SPACE
self.SetSize(11, height)
self.middleBar.SetRestrictMovementArea(self.MIDDLE_BAR_POS, self.MIDDLE_BAR_UPPER_PLACE, self.MIDDLE_BAR_POS, height - self.TEMP_SPACE)
self.middleBar.SetPosition(self.MIDDLE_BAR_POS, 0)
self.UpdateBarSlot()
def UpdateBarSlot(self):
self.barSlotOutline.SetSize(11, self.GetHeight() + 1)
self.barSlotEdge.SetSize(9, self.barSlotOutline.GetHeight() - 2 + 1)
self.barSlotMiddle.SetSize(7, self.barSlotOutline.GetHeight() - 4 + 1)
def GetPos(self):
return self.curPos
def SetPos(self, pos):
pos = max(0.0, pos)
pos = min(1.0, pos)
newPos = float(self.pageSize) * pos
self.middleBar.SetPosition(self.MIDDLE_BAR_POS, int(newPos) + self.MIDDLE_BAR_UPPER_PLACE)
self.OnMove()
def SetScrollStep(self, step):
self.scrollStep1 = step
def GetScrollStep(self):
return self.scrollStep1
def OnUp(self):
self.SetPos(self.curPos-self.scrollStep1)
def OnDown(self):
self.SetPos(self.curPos+self.scrollStep1)
def OnUp2(self):
self.SetPos(self.curPos-self.scrollStep2)
def OnDown2(self):
self.SetPos(self.curPos+self.scrollStep2)
def OnMove(self):
if self.lockFlag:
return
if 0 == self.pageSize:
return
(xLocal, yLocal) = self.middleBar.GetLocalPosition()
self.curPos = float(yLocal - self.MIDDLE_BAR_UPPER_PLACE) / float(self.pageSize)
self.eventScroll()
def OnMouseLeftButtonDown(self):
(xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
#pickedPos = yMouseLocalPosition
pickedPos = yMouseLocalPosition
newPos = float(pickedPos) / float(self.pageSize)
self.SetPos(newPos)
def LockScroll(self):
self.lockFlag = True
def UnlockScroll(self):
self.lockFlag = False
# search
elif Type == "small_thin_scrollbar":
parent.Children[Index] = SmallThinScrollBar()
parent.Children[Index].SetParent(parent)
self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
# add
elif Type == "scrollbar_flat":
parent.Children[Index] = ScrollBarFlat()
parent.Children[Index].SetParent(parent)
self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)