Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
	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)