コード例 #1
0
	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)
コード例 #2
0
    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)