nichts
Ihr könnt einstellen, wie viele Elemente pro Seite angezeigt werden sollen, wie groß der Abstand zwischen den einzelnen Elementen sein soll und ganz bequem durch mehrere GUI Elemente gehen
| Screens | |
|
|
|
Code:
class ArrowButton(ui.Button):
def __init__(self, arrowDirection):
ui.Button.__init__(self)
self.SetUpVisual("d:/ymir work/ui/public/xsmall_button_01.sub")
self.SetOverVisual("d:/ymir work/ui/public/xsmall_button_02.sub")
self.SetDownVisual("d:/ymir work/ui/public/xsmall_button_03.sub")
if arrowDirection == "Left":
self.SetText("<<")
else:
self.SetText(">>")
class TabView(ui.Window):
__tabHolder = None
__leftButton = None
__rightButton = None
__buttonToTabSpacing = None
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#Private inner class TabHolder @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
class __TabHolder(ui.Window):
__tabs = None
__showingTabStartIndex = None
__tabShowCount = None
__spacing = None
def __init__(self, tabs, tabShowCount, spacing):
ui.Window.__init__(self)
self.__tabs = tabs
self.__showingTabStartIndex = 0
self.__tabShowCount = tabShowCount
self.__spacing = spacing
self.__UpdateGUI()
#@@@@@@@@@@@@@@@@@@@@@@@@@@
#Externe Zugriffe @@@@@@@@@
def IsNextAvailable(self):
return self.__IsIndexAvailable(self.__showingTabStartIndex + 1)
def IsPreviousAvailable(self):
return self.__IsIndexAvailable(self.__showingTabStartIndex - 1)
def GetShowingTabStartIndex(self):
return self.__showingTabStartIndex
def GetTabShowCount(self):
return self.__tabShowCount
def GetSpacing(self):
return self.__spacing
def Next(self):
if not self.IsNextAvailable():
return
self.__ShowStartIndex(self.__showingTabStartIndex + 1)
def Previous(self):
if not self.IsPreviousAvailable():
return
self.__ShowStartIndex(self.__showingTabStartIndex - 1)
def SetTabs(self, tabs):
self.__tabs = tabs
self.__ShowStartIndex(0)
def SetTabShowCount(self, tabShowCount):
self.__tabShowCount = tabShowCount
self.__ShowStartIndex(0)
def SetSpacing(self, spacing):
self.__spacing = spacing
self.__ShowStartIndex(0)
#@@@@@@@@@@@@@@@@@@@@@@@@@@
def __UpdateGUI(self):
self.__Reset()
isFirst = True
for i in xrange(self.__showingTabStartIndex, self.__showingTabStartIndex + self.__tabShowCount):
tab = self.__tabs[i]
spacing = self.__spacing
if isFirst:
spacing = 0
isFirst = False
tab.SetParent(self)
tab.SetPosition(self.GetWidth() + spacing, 0)
tab.Show()
self.SetSize(self.GetWidth() + spacing + tab.GetWidth(), max(self.GetHeight(), tab.GetHeight()))
def __HideAll(self):
for tab in self.__tabs:
tab.Hide()
def __ResetSize(self):
self.SetSize(0, 0)
def __Reset(self):
self.__HideAll()
self.__ResetSize()
def __ShowStartIndex(self, tabIndex):
if not self.__IsIndexAvailable(tabIndex):
return
self.__showingTabStartIndex = tabIndex
self.__UpdateGUI()
def __IsIndexAvailable(self, index):
if index < 0:
return False
if index + self.__tabShowCount > len(self.__tabs):
return False
return True
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
def __init__(self, tabs, tabShowCount, tabSpacing = 10, buttonToTabSpacing = 10):
ui.Window.__init__(self)
self.__buttonToTabSpacing = buttonToTabSpacing
self.__tabHolder = self.__TabHolder(tabs, tabShowCount, tabSpacing)
self.__tabHolder.SetParent(self)
self.__tabHolder.Show()
self.__leftButton = ArrowButton("Left")
self.__leftButton.SetParent(self)
self.__leftButton.SetEvent(self.__OnLeftButtonClick)
self.__leftButton.Show()
self.__rightButton = ArrowButton("Right")
self.__rightButton.SetParent(self)
self.__rightButton.SetEvent(self.__OnRightButtonClick)
self.__rightButton.Show()
self.__UpdateStructure()
self.__UpdateGUI()
#@@@@@@@@@@@@@@@@@@@@@@@@@@
#Externe Zugriffe @@@@@@@@@
def IsNextAvailable(self):
return self.__tabHolder.IsNextAvailable()
def IsPreviousAvailable(self):
return self.__tabHolder.IsPreviousAvailable()
def GetShowingTabStartIndex(self):
return self.__tabHolder.GetShowingTabStartIndex()
def GetTabShowCount(self):
return self.__tabHolder.GetTabShowCount()
def GetButtonToTabSpacing(self):
return self.__buttonToTabSpacing
def GetSpacing(self):
return self.__tabHolder.GetSpacing()
def Next(self):
self.__tabHolder.Next()
def Previous(self):
self.__tabHolder.Previous()
def SetTabs(self, tabs):
self.__tabHolder.SetTabs(tabs)
def SetTabShowCount(self, tabShowCount):
self.__tabHolder.SetTabShowCount(tabShowCount)
def SetSpacing(self, spacing):
self.__tabHolder.SetSpacing(spacing)
#@@@@@@@@@@@@@@@@@@@@@@@@@@
def __UpdateStructure(self):
leftButtonWidth = self.__leftButton.GetWidth()
leftButtonHeight = self.__leftButton.GetHeight()
tabHolderWidth = self.__tabHolder.GetWidth()
tabHolderHeight = self.__tabHolder.GetHeight()
rightButtonWidth = self.__rightButton.GetWidth()
rightButtonHeight = self.__rightButton.GetHeight()
midPosition = (tabHolderHeight / 2) - (max(leftButtonHeight, rightButtonHeight) / 2)
self.__leftButton.SetPosition(0, midPosition)
self.__tabHolder.SetPosition(leftButtonWidth + self.__buttonToTabSpacing, 0)
self.__rightButton.SetPosition(leftButtonWidth + self.__buttonToTabSpacing + tabHolderWidth + self.__buttonToTabSpacing, midPosition)
self.SetSize(leftButtonWidth + self.__buttonToTabSpacing + tabHolderWidth + self.__buttonToTabSpacing + rightButtonWidth, max(self.GetHeight(), tabHolderHeight))
def __UpdateGUI(self):
if self.IsPreviousAvailable():
self.__leftButton.Show()
else:
self.__leftButton.Hide()
if self.IsNextAvailable():
self.__rightButton.Show()
else:
self.__rightButton.Hide()
def __OnLeftButtonClick(self):
self.Previous()
self.__UpdateGUI()
def __OnRightButtonClick(self):
self.Next()
self.__UpdateGUI()
Special Thanks:
- Poccelix - für Deine Hilfe mit dem ganzen Python Kram
- DasSchwarzeT - same
- Kori - same
- Yiv - weil Jiff
- Akkelos - weil du gesagt hast, dass das in Ordnung aussieht
- Lee - weil er hier stehen möchte






