Esempio n. 1
0
	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)