def __init__(self, template, character, parent=None): super(FlawWidget, self).__init__(parent) self.__storage = template self.__character = character self.__layout = QVBoxLayout() self.setLayout( self.__layout ) self.__toolBox = QToolBox() ## Die Auflistung der Merits soll auch unter Windows einen transparenten Hintergrund haben. self.__toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self.__toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self.__layout.addWidget(self.__toolBox) self.__typ = "Flaw" categories = [] categories.extend(Config.CATEGORIES_FLAWS) categories.extend(self.__storage.categories(self.__typ)) # Duplikate werden entfernt. Dadurch wird die in der Config-Klasse vorgegebene Reihenfolge eingehalten und zusätzliche, dort nicht erwähnte Kategorien werden hinterher angehängt. categories = ListTools.uniqify_ordered(categories) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien self.__categoryIndex = {} # Flaws werden in einer Spalte heruntergeschrieben, aber mit vertikalem Platz dazwischen. for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetFlawCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetFlawCategory.setObjectName("transparentWidget") layoutFlawCategory = QVBoxLayout() widgetFlawCategory.setLayout( layoutFlawCategory ) self.__toolBox.addItem( widgetFlawCategory, item ) self.__categoryIndex[item] = self.__toolBox.count() - 1 #Debug.debug(self.__categoryIndex) __list = list( self.__character.traits[self.__typ][item].items() ) __list.sort() for flaw in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CheckTrait( flaw[1], self ) if not flaw[1].custom: traitWidget.setDescriptionHidden(True) layoutFlawCategory.addWidget( traitWidget ) flaw[1].valueChanged.connect(self.countItems) self.__character.speciesChanged.connect(traitWidget.hideOrShowTrait) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutFlawCategory.addStretch() self.setMinimumWidth(Config.TRAIT_WIDTH_MIN)
def __init__(self, template, character, typ, isCheckable=False, parent=None): super(CategoryWidget, self).__init__(parent) self.__storage = template self.__character = character self._layout = QVBoxLayout() self.setLayout(self._layout) self._toolBox = QToolBox() ## Die Auflistung der Widgets soll auch unter Windows einen transparenten Hintergrund haben. self._toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self._toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self._layout.addWidget(self._toolBox) self._typ = typ categories = self.__storage.categories(self._typ) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien # { # Index: [Widget, Eigenschaft1, Eigenschaft2, ...] # } self._toolBoxPageList = {} for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetCategory.setObjectName("transparentWidget") layoutCategory = QVBoxLayout() widgetCategory.setLayout(layoutCategory) ## In dieser Liste sammle ich die Widgets, damit sie später bei Bedarf in die ToolBox eingefügt werden können. self._toolBoxPageList[item] = [widgetCategory] __list = list(self.__character.traits[self._typ][item].items()) __list.sort() for trait in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = None if isCheckable: traitWidget = CheckTrait(trait[1], self) else: traitWidget = CharaTrait(trait[1], self) traitWidget.setSpecialtiesHidden(True) if type(trait) != StandardTrait or not trait[1].custom: traitWidget.setDescriptionHidden(True) self._toolBoxPageList[item].append(trait[1]) layoutCategory.addWidget(traitWidget) self.__character.traitVisibleReasonChanged.connect( traitWidget.hideOrShowTrait) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutCategory.addStretch() #Debug.debug(self._toolBoxPageList) self.__character.speciesChanged.connect(self.hideOrShowToolPage) self.__character.breedChanged.connect(self.hideOrShowToolPage) self.__character.factionChanged.connect(self.hideOrShowToolPage)
def __init__(self, template, character, typ, isCheckable=False, parent=None): super(CategoryWidget, self).__init__(parent) self.__storage = template self.__character = character self._layout = QVBoxLayout() self.setLayout( self._layout ) self._toolBox = QToolBox() ## Die Auflistung der Widgets soll auch unter Windows einen transparenten Hintergrund haben. self._toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self._toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self._layout.addWidget( self._toolBox ) self._typ = typ categories = self.__storage.categories(self._typ) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien # { # Index: [Widget, Eigenschaft1, Eigenschaft2, ...] # } self._toolBoxPageList = {} for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetCategory.setObjectName("transparentWidget") layoutCategory = QVBoxLayout() widgetCategory.setLayout( layoutCategory ) ## In dieser Liste sammle ich die Widgets, damit sie später bei Bedarf in die ToolBox eingefügt werden können. self._toolBoxPageList[item] = [widgetCategory] __list = list( self.__character.traits[self._typ][item].items() ) __list.sort() for trait in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = None if isCheckable: traitWidget = CheckTrait( trait[1], self ) else: traitWidget = CharaTrait( trait[1], self ) traitWidget.setSpecialtiesHidden(True) if type(trait) != StandardTrait or not trait[1].custom: traitWidget.setDescriptionHidden(True) self._toolBoxPageList[item].append(trait[1]) layoutCategory.addWidget( traitWidget ) self.__character.traitVisibleReasonChanged.connect(traitWidget.hideOrShowTrait) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutCategory.addStretch() #Debug.debug(self._toolBoxPageList) self.__character.speciesChanged.connect(self.hideOrShowToolPage) self.__character.breedChanged.connect(self.hideOrShowToolPage) self.__character.factionChanged.connect(self.hideOrShowToolPage)