def __init__(self, template, character, parent=None): super(MeritWidget, self).__init__(template, character, parent) 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 = "Merit" categories = [] categories.extend(Config.CATEGORIES_MERITS) 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 = {} # Merits werden in einer Spalte heruntergeschrieben, aber mit vertikalem Platz dazwischen. for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetMeritCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetMeritCategory.setObjectName("transparentWidget") layoutMeritCategory = QVBoxLayout() widgetMeritCategory.setLayout( layoutMeritCategory ) self.__toolBox.addItem( widgetMeritCategory, item ) self.__categoryIndex[item] = self.__toolBox.count() - 1 #Debug.debug(self.__categoryIndex) __list = list( self._character.traits[self.__typ][item].items() ) __list.sort() for merit in __list: #Debug.debug(merit) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait( merit[1], self ) traitWidget.setSpecialtiesHidden(True) if not merit[1].custom: traitWidget.setDescriptionHidden(True) # Bei Merits sind nur bestimmte Werte erlaubt. #Debug.debug(self._storage.traits[self.__typ][item][merit[0]]) traitWidget.setPossibleValues(self._storage.traits[self.__typ][item][merit[1].identifier]["values"]) # Es werden nur Eigenschaften der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) layoutMeritCategory.addWidget( traitWidget ) merit[1].valueChanged.connect(self.countMerits) #self._character.speciesChanged.connect(traitWidget.hideOrShowTrait_species) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutMeritCategory.addStretch() self.setMinimumWidth(Config.TRAIT_WIDTH_MIN) self._character.speciesChanged.connect(self.countMerits)
def __init__(self, template, character, parent=None): super(MeritWidget, self).__init__(template, character, parent) 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 = "Merit" categories = [] categories.extend(Config.CATEGORIES_MERITS) 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 = {} # Merits werden in einer Spalte heruntergeschrieben, aber mit vertikalem Platz dazwischen. for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetMeritCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetMeritCategory.setObjectName("transparentWidget") layoutMeritCategory = QVBoxLayout() widgetMeritCategory.setLayout(layoutMeritCategory) self.__toolBox.addItem(widgetMeritCategory, item) self.__categoryIndex[item] = self.__toolBox.count() - 1 #Debug.debug(self.__categoryIndex) __list = list(self._character.traits[self.__typ][item].items()) __list.sort() for merit in __list: #Debug.debug(merit) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait(merit[1], self) traitWidget.setSpecialtiesHidden(True) if not merit[1].custom: traitWidget.setDescriptionHidden(True) # Bei Merits sind nur bestimmte Werte erlaubt. #Debug.debug(self._storage.traits[self.__typ][item][merit[0]]) traitWidget.setPossibleValues(self._storage.traits[ self.__typ][item][merit[1].identifier]["values"]) # Es werden nur Eigenschaften der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) layoutMeritCategory.addWidget(traitWidget) merit[1].valueChanged.connect(self.countMerits) #self._character.speciesChanged.connect(traitWidget.hideOrShowTrait_species) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutMeritCategory.addStretch() self.setMinimumWidth(Config.TRAIT_WIDTH_MIN) self._character.speciesChanged.connect(self.countMerits)