def __init__(self, template, character, parent=None):
        super(AdvantagesWidget, self).__init__(parent)

        self.ui = Ui_AdvantagesWidget()
        self.ui.setupUi(self)

        self.__character = character
        self.__storage = template

        fontMetrics = QFontMetrics(self.font())
        textRect = fontMetrics.boundingRect("0")

        iconGeneral = QIcon(":/items/images/svg/shield.svg")
        pixmapGeneral = iconGeneral.pixmap(textRect.height(),
                                           10 * textRect.height())
        self.ui.label_armorGeneralSign.setPixmap(pixmapGeneral)
        iconFirearms = QIcon(":/items/images/svg/uzi.svg")
        pixmapFirearms = iconFirearms.pixmap(textRect.height(),
                                             10 * textRect.height())
        self.ui.label_armorFirearmsSign.setPixmap(pixmapFirearms)

        self.ui.dots_health.setReadOnly(True)

        self.ui.dots_willpower.setMaximum(Config.TRAIT_WILLPOWER_VALUE_MAX)
        self.ui.dots_willpower.setReadOnly(True)

        self.ui.dots_powerstat.setMaximum(Config.TRAIT_POWERSTAT_VALUE_MAX)
        self.ui.dots_powerstat.setMinimum(Config.TRAIT_POWERSTAT_VALUE_MIN)
        # Damit später der Wert stimmt muß ich irgendeinen Wert != 1 geben, sonst wird kein Signal gesandt.
        self.ui.dots_powerstat.setValue(9)

        self.ui.squares_fuel.columnMax = 10

        self.__character.speciesChanged.connect(self.setShapeSize)
        self.sizeChanged.connect(self.setShapeSize)
        self.__character.speciesChanged.connect(self.setShapeInitiaitve)
        self.initiativeChanged.connect(self.setShapeInitiaitve)
        self.__character.speciesChanged.connect(self.setShapeSpeed)
        self.speedChanged.connect(self.setShapeSpeed)
        self.__character.speciesChanged.connect(self.setShapeDefense)
        self.__character.traits["Attribute"]["Mental"][
            "Wits"].valueChanged.connect(self.setShapeDefense)
        self.__character.traits["Attribute"]["Physical"][
            "Dexterity"].valueChanged.connect(self.setShapeDefense)
        self.__character.speciesChanged.connect(self.setShapeHealth)
        self.healthChanged.connect(self.setShapeHealth)
        self.__character.armorChanged.connect(self.updateArmor)
        self.ui.dots_powerstat.valueChanged.connect(
            self.__character.setPowerstat)
        self.__character.powerstatChanged.connect(
            self.ui.dots_powerstat.setValue)
        self.__character.powerstatChanged.connect(self.setFuel)
        self.__character.speciesChanged.connect(self.setFuel)
        self.__character.speciesChanged.connect(self.renamePowerstatHeading)
        self.__character.speciesChanged.connect(self.hideSuper)
	def __init__(self, template, character, parent=None):
		super(AdvantagesWidget, self).__init__(parent)

		self.ui = Ui_AdvantagesWidget()
		self.ui.setupUi(self)

		self.__character = character
		self.__storage = template

		fontMetrics = QFontMetrics(self.font())
		textRect = fontMetrics.boundingRect("0")

		iconGeneral = QIcon(":/items/images/svg/shield.svg")
		pixmapGeneral = iconGeneral.pixmap(textRect.height(), 10 * textRect.height())
		self.ui.label_armorGeneralSign.setPixmap(pixmapGeneral)
		iconFirearms = QIcon(":/items/images/svg/uzi.svg")
		pixmapFirearms = iconFirearms.pixmap(textRect.height(), 10 * textRect.height())
		self.ui.label_armorFirearmsSign.setPixmap(pixmapFirearms)

		self.ui.dots_health.setReadOnly( True )

		self.ui.dots_willpower.setMaximum( Config.TRAIT_WILLPOWER_VALUE_MAX )
		self.ui.dots_willpower.setReadOnly( True )

		self.ui.dots_powerstat.setMaximum( Config.TRAIT_POWERSTAT_VALUE_MAX )
		self.ui.dots_powerstat.setMinimum( Config.TRAIT_POWERSTAT_VALUE_MIN )
		# Damit später der Wert stimmt muß ich irgendeinen Wert != 1 geben, sonst wird kein Signal gesandt.
		self.ui.dots_powerstat.setValue( 9 )

		self.ui.squares_fuel.columnMax = 10

		self.__character.speciesChanged.connect(self.setShapeSize)
		self.sizeChanged.connect(self.setShapeSize)
		self.__character.speciesChanged.connect(self.setShapeInitiaitve)
		self.initiativeChanged.connect(self.setShapeInitiaitve)
		self.__character.speciesChanged.connect(self.setShapeSpeed)
		self.speedChanged.connect(self.setShapeSpeed)
		self.__character.speciesChanged.connect(self.setShapeDefense)
		self.__character.traits["Attribute"]["Mental"]["Wits"].valueChanged.connect(self.setShapeDefense)
		self.__character.traits["Attribute"]["Physical"]["Dexterity"].valueChanged.connect(self.setShapeDefense)
		self.__character.speciesChanged.connect(self.setShapeHealth)
		self.healthChanged.connect(self.setShapeHealth)
		self.__character.armorChanged.connect(self.updateArmor)
		self.ui.dots_powerstat.valueChanged.connect(self.__character.setPowerstat)
		self.__character.powerstatChanged.connect(self.ui.dots_powerstat.setValue)
		self.__character.powerstatChanged.connect(self.setFuel)
		self.__character.speciesChanged.connect(self.setFuel)
		self.__character.speciesChanged.connect(self.renamePowerstatHeading)
		self.__character.speciesChanged.connect(self.hideSuper)
class AdvantagesWidget(QWidget):
    """
	@brief Dieses Widget zeit die Advantages (Size, Speed, Health etc.) an.
	"""

    sizeChanged = Signal(int)
    initiativeChanged = Signal(int)
    speedChanged = Signal(int)
    defenseChanged = Signal(int)
    healthChanged = Signal(int)

    def __init__(self, template, character, parent=None):
        super(AdvantagesWidget, self).__init__(parent)

        self.ui = Ui_AdvantagesWidget()
        self.ui.setupUi(self)

        self.__character = character
        self.__storage = template

        fontMetrics = QFontMetrics(self.font())
        textRect = fontMetrics.boundingRect("0")

        iconGeneral = QIcon(":/items/images/svg/shield.svg")
        pixmapGeneral = iconGeneral.pixmap(textRect.height(),
                                           10 * textRect.height())
        self.ui.label_armorGeneralSign.setPixmap(pixmapGeneral)
        iconFirearms = QIcon(":/items/images/svg/uzi.svg")
        pixmapFirearms = iconFirearms.pixmap(textRect.height(),
                                             10 * textRect.height())
        self.ui.label_armorFirearmsSign.setPixmap(pixmapFirearms)

        self.ui.dots_health.setReadOnly(True)

        self.ui.dots_willpower.setMaximum(Config.TRAIT_WILLPOWER_VALUE_MAX)
        self.ui.dots_willpower.setReadOnly(True)

        self.ui.dots_powerstat.setMaximum(Config.TRAIT_POWERSTAT_VALUE_MAX)
        self.ui.dots_powerstat.setMinimum(Config.TRAIT_POWERSTAT_VALUE_MIN)
        # Damit später der Wert stimmt muß ich irgendeinen Wert != 1 geben, sonst wird kein Signal gesandt.
        self.ui.dots_powerstat.setValue(9)

        self.ui.squares_fuel.columnMax = 10

        self.__character.speciesChanged.connect(self.setShapeSize)
        self.sizeChanged.connect(self.setShapeSize)
        self.__character.speciesChanged.connect(self.setShapeInitiaitve)
        self.initiativeChanged.connect(self.setShapeInitiaitve)
        self.__character.speciesChanged.connect(self.setShapeSpeed)
        self.speedChanged.connect(self.setShapeSpeed)
        self.__character.speciesChanged.connect(self.setShapeDefense)
        self.__character.traits["Attribute"]["Mental"][
            "Wits"].valueChanged.connect(self.setShapeDefense)
        self.__character.traits["Attribute"]["Physical"][
            "Dexterity"].valueChanged.connect(self.setShapeDefense)
        self.__character.speciesChanged.connect(self.setShapeHealth)
        self.healthChanged.connect(self.setShapeHealth)
        self.__character.armorChanged.connect(self.updateArmor)
        self.ui.dots_powerstat.valueChanged.connect(
            self.__character.setPowerstat)
        self.__character.powerstatChanged.connect(
            self.ui.dots_powerstat.setValue)
        self.__character.powerstatChanged.connect(self.setFuel)
        self.__character.speciesChanged.connect(self.setFuel)
        self.__character.speciesChanged.connect(self.renamePowerstatHeading)
        self.__character.speciesChanged.connect(self.hideSuper)

    def setSize(self, value):
        if self.ui.label_size.text() != str(value):
            self.ui.label_size.setText(str(value))
            self.sizeChanged.emit(value)

    def setInitiative(self, value):
        if self.ui.label_initiative.text() != str(value):
            self.ui.label_initiative.setText(str(value))
            self.initiativeChanged.emit(value)

    def setSpeed(self, value):
        if self.ui.label_speed.text() != str(value):
            self.ui.label_speed.setText(str(value))
            self.speedChanged.emit(value)

    def setDefense(self, value):
        if self.ui.label_defense.text() != str(value):
            self.ui.label_defense.setNum(value)
            self.defenseChanged.emit(value)

    def setHealth(self, value):
        if self.ui.dots_health.value != value:
            self.ui.dots_health.setMaximum(value)
            self.ui.dots_health.setValue(value)
            self.healthChanged.emit(value)

    def setWillpower(self, value):
        self.ui.dots_willpower.setValue(value)

    def setShapeSize(self):
        if self.__character.species == "Werewolf":
            size = int(self.ui.label_size.text())
            self.ui.label_sizeShapes.setHidden(False)
            self.ui.label_sizeShapes.setText(", {}, {}, {}, {}".format(
                CalcShapes.size(size, Config.SHAPES_WEREWOLF[1]),
                CalcShapes.size(size, Config.SHAPES_WEREWOLF[2]),
                CalcShapes.size(size, Config.SHAPES_WEREWOLF[3]),
                CalcShapes.size(size, Config.SHAPES_WEREWOLF[4]),
            ))
        else:
            self.ui.label_sizeShapes.setHidden(True)

    def setShapeInitiaitve(self):
        if self.__character.species == "Werewolf":
            value = int(self.ui.label_initiative.text())
            self.ui.label_initiativeShapes.setHidden(False)
            self.ui.label_initiativeShapes.setText(", {}, {}, {}, {}".format(
                CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[1]),
                CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[2]),
                CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[3]),
                CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[4]),
            ))
        else:
            self.ui.label_initiativeShapes.setHidden(True)

    def setShapeSpeed(self):
        if self.__character.species == "Werewolf":
            value = int(self.ui.label_speed.text())
            self.ui.label_speedShapes.setHidden(False)
            self.ui.label_speedShapes.setText(", {}, {}, {}, {}".format(
                CalcShapes.speed(value, Config.SHAPES_WEREWOLF[1]),
                CalcShapes.speed(value, Config.SHAPES_WEREWOLF[2]),
                CalcShapes.speed(value, Config.SHAPES_WEREWOLF[3]),
                CalcShapes.speed(value, Config.SHAPES_WEREWOLF[4]),
            ))
        else:
            self.ui.label_speedShapes.setHidden(True)

    def setShapeDefense(self):
        if self.__character.species == "Werewolf":
            wits = self.__character.traits["Attribute"]["Mental"]["Wits"].value
            dexterity = self.__character.traits["Attribute"]["Physical"][
                "Dexterity"].value
            self.ui.label_defenseShapes.setHidden(False)
            self.ui.label_defenseShapes.setText(", {}, {}, {}, {}".format(
                CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[1]),
                CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[2]),
                CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[3]),
                CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[4]),
            ))
        else:
            self.ui.label_defenseShapes.setHidden(True)

    def setShapeHealth(self):
        if self.__character.species == "Werewolf":
            value = self.ui.dots_health.value
            self.ui.label_healthShapes.setHidden(False)
            self.ui.label_healthShapes.setText("{}, {}, {}, {}".format(
                CalcShapes.health(value, Config.SHAPES_WEREWOLF[1]),
                CalcShapes.health(value, Config.SHAPES_WEREWOLF[2]),
                CalcShapes.health(value, Config.SHAPES_WEREWOLF[3]),
                CalcShapes.health(value, Config.SHAPES_WEREWOLF[4]),
            ))
        else:
            self.ui.label_healthShapes.setHidden(True)

    def hideSuper(self, species):
        """
		Verbirgt die übernatürlichen Eigenschaften, falls ein Mensch gewählt wird.
		"""

        if (species == Config.SPECIES_INITIAL):
            self.ui.label_powerstat.setHidden(True)
            self.ui.dots_powerstat.setHidden(True)

            self.ui.label_fuel.setHidden(True)
            self.ui.squares_fuel.setHidden(True)
            self.ui.label_fuelPerTurn.setHidden(True)
        else:
            self.ui.label_powerstat.setHidden(False)
            self.ui.dots_powerstat.setHidden(False)

            self.ui.label_fuel.setHidden(False)
            self.ui.squares_fuel.setHidden(False)
            self.ui.label_fuelPerTurn.setHidden(False)

    def renamePowerstatHeading(self, species):
        """
		Benennt die Übernatürlichen Eigenschaften je nach Spezies um.
		"""

        self.ui.label_powerstat.setText(self.__storage.powerstatName(species))
        self.ui.label_fuel.setText(self.__storage.fuelName(species))

    def setFuel(self):
        """
		Diese Funktion paßt das Maximum der Charakterenergie an, wenn sich die Spezies oder der Powerstat-Wert des Charakters ändert.
		"""

        maximum = self.__storage.fuelMax(self.__character.species,
                                         self.__character.powerstat)
        self.ui.squares_fuel.maximum = maximum

        perTurn = self.__storage.fuelPerTurn(self.__character.species,
                                             self.__character.powerstat)
        self.ui.label_fuelPerTurn.setText(self.tr("{}/Turn".format(perTurn)))

    def updateArmor(self, armor):
        """
		Schreibe die veränderte Rüstung in das Widget.
		"""

        general = 0
        firearms = 0

        if armor in self.__storage.armor:
            general = self.__storage.armor[armor]["general"]
            firearms = self.__storage.armor[armor]["firearms"]

        self.ui.label_armorGeneral.setNum(general)
        self.ui.label_armorFirearms.setNum(firearms)
class AdvantagesWidget(QWidget):
	"""
	@brief Dieses Widget zeit die Advantages (Size, Speed, Health etc.) an.
	"""


	sizeChanged = Signal(int)
	initiativeChanged = Signal(int)
	speedChanged = Signal(int)
	defenseChanged = Signal(int)
	healthChanged = Signal(int)


	def __init__(self, template, character, parent=None):
		super(AdvantagesWidget, self).__init__(parent)

		self.ui = Ui_AdvantagesWidget()
		self.ui.setupUi(self)

		self.__character = character
		self.__storage = template

		fontMetrics = QFontMetrics(self.font())
		textRect = fontMetrics.boundingRect("0")

		iconGeneral = QIcon(":/items/images/svg/shield.svg")
		pixmapGeneral = iconGeneral.pixmap(textRect.height(), 10 * textRect.height())
		self.ui.label_armorGeneralSign.setPixmap(pixmapGeneral)
		iconFirearms = QIcon(":/items/images/svg/uzi.svg")
		pixmapFirearms = iconFirearms.pixmap(textRect.height(), 10 * textRect.height())
		self.ui.label_armorFirearmsSign.setPixmap(pixmapFirearms)

		self.ui.dots_health.setReadOnly( True )

		self.ui.dots_willpower.setMaximum( Config.TRAIT_WILLPOWER_VALUE_MAX )
		self.ui.dots_willpower.setReadOnly( True )

		self.ui.dots_powerstat.setMaximum( Config.TRAIT_POWERSTAT_VALUE_MAX )
		self.ui.dots_powerstat.setMinimum( Config.TRAIT_POWERSTAT_VALUE_MIN )
		# Damit später der Wert stimmt muß ich irgendeinen Wert != 1 geben, sonst wird kein Signal gesandt.
		self.ui.dots_powerstat.setValue( 9 )

		self.ui.squares_fuel.columnMax = 10

		self.__character.speciesChanged.connect(self.setShapeSize)
		self.sizeChanged.connect(self.setShapeSize)
		self.__character.speciesChanged.connect(self.setShapeInitiaitve)
		self.initiativeChanged.connect(self.setShapeInitiaitve)
		self.__character.speciesChanged.connect(self.setShapeSpeed)
		self.speedChanged.connect(self.setShapeSpeed)
		self.__character.speciesChanged.connect(self.setShapeDefense)
		self.__character.traits["Attribute"]["Mental"]["Wits"].valueChanged.connect(self.setShapeDefense)
		self.__character.traits["Attribute"]["Physical"]["Dexterity"].valueChanged.connect(self.setShapeDefense)
		self.__character.speciesChanged.connect(self.setShapeHealth)
		self.healthChanged.connect(self.setShapeHealth)
		self.__character.armorChanged.connect(self.updateArmor)
		self.ui.dots_powerstat.valueChanged.connect(self.__character.setPowerstat)
		self.__character.powerstatChanged.connect(self.ui.dots_powerstat.setValue)
		self.__character.powerstatChanged.connect(self.setFuel)
		self.__character.speciesChanged.connect(self.setFuel)
		self.__character.speciesChanged.connect(self.renamePowerstatHeading)
		self.__character.speciesChanged.connect(self.hideSuper)


	def setSize(self, value):
		if self.ui.label_size.text() != str(value):
			self.ui.label_size.setText(str(value))
			self.sizeChanged.emit(value)


	def setInitiative(self, value):
		if self.ui.label_initiative.text() != str(value):
			self.ui.label_initiative.setText(str(value))
			self.initiativeChanged.emit(value)


	def setSpeed(self, value):
		if self.ui.label_speed.text() != str(value):
			self.ui.label_speed.setText(str(value))
			self.speedChanged.emit(value)


	def setDefense(self, value):
		if self.ui.label_defense.text() != str(value):
			self.ui.label_defense.setNum(value)
			self.defenseChanged.emit(value)


	def setHealth(self, value):
		if self.ui.dots_health.value != value:
			self.ui.dots_health.setMaximum(value)
			self.ui.dots_health.setValue(value)
			self.healthChanged.emit(value)


	def setWillpower(self, value):
		self.ui.dots_willpower.setValue(value)


	def setShapeSize(self):
		if self.__character.species == "Werewolf":
			size = int(self.ui.label_size.text())
			self.ui.label_sizeShapes.setHidden(False)
			self.ui.label_sizeShapes.setText(", {}, {}, {}, {}".format(
				CalcShapes.size(size, Config.SHAPES_WEREWOLF[1]),
				CalcShapes.size(size, Config.SHAPES_WEREWOLF[2]),
				CalcShapes.size(size, Config.SHAPES_WEREWOLF[3]),
				CalcShapes.size(size, Config.SHAPES_WEREWOLF[4]),
			))
		else:
			self.ui.label_sizeShapes.setHidden(True)


	def setShapeInitiaitve(self):
		if self.__character.species == "Werewolf":
			value = int(self.ui.label_initiative.text())
			self.ui.label_initiativeShapes.setHidden(False)
			self.ui.label_initiativeShapes.setText(", {}, {}, {}, {}".format(
				CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[1]),
				CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[2]),
				CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[3]),
				CalcShapes.initiative(value, Config.SHAPES_WEREWOLF[4]),
			))
		else:
			self.ui.label_initiativeShapes.setHidden(True)


	def setShapeSpeed(self):
		if self.__character.species == "Werewolf":
			value = int(self.ui.label_speed.text())
			self.ui.label_speedShapes.setHidden(False)
			self.ui.label_speedShapes.setText(", {}, {}, {}, {}".format(
				CalcShapes.speed(value, Config.SHAPES_WEREWOLF[1]),
				CalcShapes.speed(value, Config.SHAPES_WEREWOLF[2]),
				CalcShapes.speed(value, Config.SHAPES_WEREWOLF[3]),
				CalcShapes.speed(value, Config.SHAPES_WEREWOLF[4]),
			))
		else:
			self.ui.label_speedShapes.setHidden(True)


	def setShapeDefense(self):
		if self.__character.species == "Werewolf":
			wits = self.__character.traits["Attribute"]["Mental"]["Wits"].value
			dexterity = self.__character.traits["Attribute"]["Physical"]["Dexterity"].value
			self.ui.label_defenseShapes.setHidden(False)
			self.ui.label_defenseShapes.setText(", {}, {}, {}, {}".format(
				CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[1]),
				CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[2]),
				CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[3]),
				CalcShapes.defense(wits, dexterity, Config.SHAPES_WEREWOLF[4]),
			))
		else:
			self.ui.label_defenseShapes.setHidden(True)


	def setShapeHealth(self):
		if self.__character.species == "Werewolf":
			value = self.ui.dots_health.value
			self.ui.label_healthShapes.setHidden(False)
			self.ui.label_healthShapes.setText("{}, {}, {}, {}".format(
				CalcShapes.health(value, Config.SHAPES_WEREWOLF[1]),
				CalcShapes.health(value, Config.SHAPES_WEREWOLF[2]),
				CalcShapes.health(value, Config.SHAPES_WEREWOLF[3]),
				CalcShapes.health(value, Config.SHAPES_WEREWOLF[4]),
			))
		else:
			self.ui.label_healthShapes.setHidden(True)


	def hideSuper( self, species ):
		"""
		Verbirgt die übernatürlichen Eigenschaften, falls ein Mensch gewählt wird.
		"""

		if ( species == Config.SPECIES_INITIAL ):
			self.ui.label_powerstat.setHidden( True )
			self.ui.dots_powerstat.setHidden( True )

			self.ui.label_fuel.setHidden( True )
			self.ui.squares_fuel.setHidden( True )
			self.ui.label_fuelPerTurn.setHidden( True )
		else:
			self.ui.label_powerstat.setHidden( False )
			self.ui.dots_powerstat.setHidden( False )

			self.ui.label_fuel.setHidden( False )
			self.ui.squares_fuel.setHidden( False )
			self.ui.label_fuelPerTurn.setHidden( False )


	def renamePowerstatHeading(self, species):
		"""
		Benennt die Übernatürlichen Eigenschaften je nach Spezies um.
		"""

		self.ui.label_powerstat.setText( self.__storage.powerstatName(species) )
		self.ui.label_fuel.setText( self.__storage.fuelName(species) )


	def setFuel( self ):
		"""
		Diese Funktion paßt das Maximum der Charakterenergie an, wenn sich die Spezies oder der Powerstat-Wert des Charakters ändert.
		"""

		maximum = self.__storage.fuelMax( self.__character.species, self.__character.powerstat )
		self.ui.squares_fuel.maximum = maximum

		perTurn = self.__storage.fuelPerTurn( self.__character.species, self.__character.powerstat )
		self.ui.label_fuelPerTurn.setText( self.tr( "{}/Turn".format( perTurn ) ))


	def updateArmor( self, armor ):
		"""
		Schreibe die veränderte Rüstung in das Widget.
		"""

		general = 0
		firearms = 0

		if armor in self.__storage.armor:
			general = self.__storage.armor[armor]["general"]
			firearms = self.__storage.armor[armor]["firearms"]

		self.ui.label_armorGeneral.setNum(general)
		self.ui.label_armorFirearms.setNum(firearms)