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