class ColorLayout(SliderContainerLayout):

    def getLayout(self):

        self.containerColorDissipation = SliderContainer("C. Dissipation", 'colorDissipation', self.fluidBoxName, "Color Dissipation")
        self.containerColorDiffusion = SliderContainer("C. Diffusion", 'colorDiffusion', self.fluidBoxName, "Color Diffusion")

        self.containerColorDissipation.addToLayout(self.gridLayout_Box, 1)
        self.containerColorDiffusion.addToLayout(self.gridLayout_Box, 2)

        self.sliderList.append(self.containerColorDissipation)
        self.sliderList.append(self.containerColorDiffusion)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box

    def resetButton_Event(self):
        self.reset(self.sliderList)

    def setAllValues(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()

    def setInitialVisibility(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()
class VelocityLayout(SliderContainerLayout):

    def getLayout(self):
        self.containerSwirl = SliderContainer("Swirl", 'velocitySwirl', self.fluidBoxName)
        self.containerNoise = SliderContainer("Noise", 'velocityNoise', self.fluidBoxName)

        self.containerSwirl.addToLayout(self.gridLayout_Box, 1)
        self.containerNoise.addToLayout(self.gridLayout_Box, 2)

        self.sliderList.append(self.containerSwirl)
        self.sliderList.append(self.containerNoise)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box

    def resetButton_Event(self):
        self.reset(self.sliderList)

    def setAllValues(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()

    def setInitialVisibility(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()
class DynamicSimulationLayout(SliderContainerLayout):

    def getLayout(self):

        self.containerGravity = SliderContainer("Gravity", 'gravity', self.fluidBoxName)
        self.containerViscosity = SliderContainer("Viscosity", 'viscosity', self.fluidBoxName)
        self.containerFriction = SliderContainer("Friction", 'friction', self.fluidBoxName)
        self.containerDamp = SliderContainer("Damp", 'velocityDamp', self.fluidBoxName)

        self.containerGravity.addToLayout(self.gridLayout_Box, 1)
        self.containerViscosity.addToLayout(self.gridLayout_Box, 2)
        self.containerFriction.addToLayout(self.gridLayout_Box, 3)
        self.containerDamp.addToLayout(self.gridLayout_Box, 4)

        self.sliderList.append(self.containerGravity)
        self.sliderList.append(self.containerViscosity)
        self.sliderList.append(self.containerFriction)
        self.sliderList.append(self.containerDamp)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box

    def resetButton_Event(self):
        self.reset(self.sliderList)

    def setAllValues(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()

    def setInitialVisibility(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()
    def getLayout(self):
        self.containerSwirl = SliderContainer("Swirl", 'velocitySwirl', self.fluidBoxName)
        self.containerNoise = SliderContainer("Noise", 'velocityNoise', self.fluidBoxName)

        self.containerSwirl.addToLayout(self.gridLayout_Box, 1)
        self.containerNoise.addToLayout(self.gridLayout_Box, 2)

        self.sliderList.append(self.containerSwirl)
        self.sliderList.append(self.containerNoise)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
    def getLayout(self):

        self.containerColorDissipation = SliderContainer("C. Dissipation", 'colorDissipation', self.fluidBoxName, "Color Dissipation")
        self.containerColorDiffusion = SliderContainer("C. Diffusion", 'colorDiffusion', self.fluidBoxName, "Color Diffusion")

        self.containerColorDissipation.addToLayout(self.gridLayout_Box, 1)
        self.containerColorDiffusion.addToLayout(self.gridLayout_Box, 2)

        self.sliderList.append(self.containerColorDissipation)
        self.sliderList.append(self.containerColorDiffusion)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
    def getLayout(self):

        self.containerFuelScale= SliderContainer("Fuel Scale", 'fuelScale', self.fluidBoxName)
        self.containerReactionSpeed = SliderContainer("Reac. Speed", 'reactionSpeed', self.fluidBoxName, "Reaction Speed")
        self.containerAirFuelRatio = SliderContainer("A./F. Ratio", 'airFuelRatio', self.fluidBoxName, "Air/Fuel Ratio")
        self.containerIgnition = SliderContainer("Ignit. Temp.", 'fuelIgnitionTemp', self.fluidBoxName, "Ignition Temperature")
        self.containerMaxReactionTemp = SliderContainer("Max Temp.", 'maxReactionTemp', self.fluidBoxName, "Max Temperature")
        self.containerHeatReleased = SliderContainer("Heat R.", 'heatReleased', self.fluidBoxName, "Heat Released")
        self.containerLightReleased = SliderContainer("Light R.", 'lightReleased', self.fluidBoxName, "Light Released")

        self.containerFuelScale.addToLayout(self.gridLayout_Box, 1)
        self.containerReactionSpeed.addToLayout(self.gridLayout_Box, 2)
        self.containerAirFuelRatio.addToLayout(self.gridLayout_Box, 3)
        self.containerIgnition.addToLayout(self.gridLayout_Box, 4)
        self.containerMaxReactionTemp.addToLayout(self.gridLayout_Box, 5)
        self.containerHeatReleased.addToLayout(self.gridLayout_Box, 6)
        self.containerLightReleased.addToLayout(self.gridLayout_Box, 7)

        self.sliderList.append(self.containerFuelScale)
        self.sliderList.append(self.containerReactionSpeed)
        self.sliderList.append(self.containerAirFuelRatio)
        self.sliderList.append(self.containerIgnition)
        self.sliderList.append(self.containerMaxReactionTemp)
        self.sliderList.append(self.containerHeatReleased)
        self.sliderList.append(self.containerLightReleased)

        self.gridLayout_Box.addWidget(self.resetButton,  8, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
    def getLayout(self):

        self.containerStrength = SliderContainer("Strength", 'turbulenceStrength', self.fluidBoxName)
        self.containerFrequency = SliderContainer("Frequency", 'turbulenceFrequency', self.fluidBoxName)
        self.containerSpeed = SliderContainer("Speed", 'turbulenceSpeed', self.fluidBoxName)

        self.containerStrength.addToLayout(self.gridLayout_Box, 1)
        self.containerFrequency.addToLayout(self.gridLayout_Box, 2)
        self.containerSpeed.addToLayout(self.gridLayout_Box, 3)

        self.sliderList.append(self.containerStrength)
        self.sliderList.append(self.containerFrequency)
        self.sliderList.append(self.containerSpeed)

        self.gridLayout_Box.addWidget(self.resetButton,  4, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
    def getLayout(self):

        self.containerGravity = SliderContainer("Gravity", 'gravity', self.fluidBoxName)
        self.containerViscosity = SliderContainer("Viscosity", 'viscosity', self.fluidBoxName)
        self.containerFriction = SliderContainer("Friction", 'friction', self.fluidBoxName)
        self.containerDamp = SliderContainer("Damp", 'velocityDamp', self.fluidBoxName)

        self.containerGravity.addToLayout(self.gridLayout_Box, 1)
        self.containerViscosity.addToLayout(self.gridLayout_Box, 2)
        self.containerFriction.addToLayout(self.gridLayout_Box, 3)
        self.containerDamp.addToLayout(self.gridLayout_Box, 4)

        self.sliderList.append(self.containerGravity)
        self.sliderList.append(self.containerViscosity)
        self.sliderList.append(self.containerFriction)
        self.sliderList.append(self.containerDamp)

        self.gridLayout_Box.addWidget(self.resetButton,  5, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
class TurbulenceLayout(SliderContainerLayout):

    def getLayout(self):

        self.containerStrength = SliderContainer("Strength", 'turbulenceStrength', self.fluidBoxName)
        self.containerFrequency = SliderContainer("Frequency", 'turbulenceFrequency', self.fluidBoxName)
        self.containerSpeed = SliderContainer("Speed", 'turbulenceSpeed', self.fluidBoxName)

        self.containerStrength.addToLayout(self.gridLayout_Box, 1)
        self.containerFrequency.addToLayout(self.gridLayout_Box, 2)
        self.containerSpeed.addToLayout(self.gridLayout_Box, 3)

        self.sliderList.append(self.containerStrength)
        self.sliderList.append(self.containerFrequency)
        self.sliderList.append(self.containerSpeed)

        self.gridLayout_Box.addWidget(self.resetButton,  4, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box

    def resetButton_Event(self):
        self.reset(self.sliderList)

    def setAllValues(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()

    def setInitialVisibility(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()
    def getLayout(self):

        self.containerDensityScale = SliderContainer("Density Scale", 'densityScale', self.fluidBoxName, "Density Scale")
        self.containerDensityBuoyancy = SliderContainer("Buoyancy", 'densityBuoyancy', self.fluidBoxName)
        self.containerDensityDissipation = SliderContainer("Dissipation", 'densityDissipation', self.fluidBoxName)
        self.containerDensityDiffusion = SliderContainer("Diffusion", 'densityDiffusion', self.fluidBoxName)
        self.containerDensityPressure = SliderContainer("D. Pressure", 'densityPressure', self.fluidBoxName, "Density Pressure")
        self.containerDensityPressureThreshold = SliderContainer("Press. Th.", 'densityPressureThreshold', self.fluidBoxName, "Density Pressure Threshold")
        self.containerDensityNoise = SliderContainer("Noise", 'densityNoise', self.fluidBoxName)
        self.containerDensityTension = SliderContainer("D. Tension", 'densityTension', self.fluidBoxName, "Density Tension")
        self.containerTensionForce = SliderContainer("Tension Force", 'tensionForce', self.fluidBoxName, "Tension Force")
        self.containerDensityGradientForce = SliderContainer("Gradient F.", 'densityGradientForce', self.fluidBoxName, "Gradient Force")

        self.containerDensityScale.addToLayout(self.gridLayout_Box, 1)
        self.containerDensityBuoyancy.addToLayout(self.gridLayout_Box, 2)
        self.containerDensityDissipation.addToLayout(self.gridLayout_Box, 3)
        self.containerDensityDiffusion.addToLayout(self.gridLayout_Box, 4)
        self.containerDensityPressure.addToLayout(self.gridLayout_Box, 5)
        self.containerDensityPressureThreshold.addToLayout(self.gridLayout_Box, 6)
        self.containerDensityNoise.addToLayout(self.gridLayout_Box, 7)
        self.containerDensityTension.addToLayout(self.gridLayout_Box, 8)
        self.containerTensionForce.addToLayout(self.gridLayout_Box, 9)
        self.containerDensityGradientForce.addToLayout(self.gridLayout_Box, 10)

        self.sliderList.append(self.containerDensityScale)
        self.sliderList.append(self.containerDensityBuoyancy)
        self.sliderList.append(self.containerDensityDissipation)
        self.sliderList.append(self.containerDensityDiffusion)
        self.sliderList.append(self.containerDensityPressure)
        self.sliderList.append(self.containerDensityPressureThreshold)
        self.sliderList.append(self.containerDensityNoise)
        self.sliderList.append(self.containerDensityTension)
        self.sliderList.append(self.containerTensionForce)
        self.sliderList.append(self.containerDensityGradientForce)

        self.gridLayout_Box.addWidget(self.resetButton,  11, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
    def getLayout(self):

        self.temperatureScale = SliderContainer("Temp. Scale", 'temperatureScale', self.fluidBoxName, "Temperature Scale")
        self.buoyancy = SliderContainer("Buoyancy", 'buoyancy', self.fluidBoxName)
        self.temperaturePressure = SliderContainer("Pressure", 'temperaturePressure', self.fluidBoxName)
        self.temperaturePressureThreshold = SliderContainer("Press. Th.", 'temperaturePressureThreshold', self.fluidBoxName, "Pressure Threshold")
        self.temperatureDissipation = SliderContainer("Dissipation", 'temperatureDissipation', self.fluidBoxName)
        self.temperatureDiffusion = SliderContainer("Diffusion", 'temperatureDiffusion', self.fluidBoxName)
        self.temperatureTurbulence = SliderContainer("Turbulence", 'temperatureTurbulence', self.fluidBoxName)
        self.temperatureNoise = SliderContainer("Noise", 'temperatureNoise', self.fluidBoxName)
        self.temperatureTension = SliderContainer("Tension", 'temperatureTension', self.fluidBoxName)

        self.temperatureScale.addToLayout(self.gridLayout_Box, 1)
        self.buoyancy.addToLayout(self.gridLayout_Box, 2)
        self.temperaturePressure.addToLayout(self.gridLayout_Box, 3)
        self.temperaturePressureThreshold.addToLayout(self.gridLayout_Box, 4)
        self.temperatureDissipation.addToLayout(self.gridLayout_Box, 5)
        self.temperatureDiffusion.addToLayout(self.gridLayout_Box, 6)
        self.temperatureTurbulence.addToLayout(self.gridLayout_Box, 7)
        self.temperatureNoise.addToLayout(self.gridLayout_Box, 8)
        self.temperatureTension.addToLayout(self.gridLayout_Box, 9)

        self.sliderList.append(self.temperatureScale)
        self.sliderList.append(self.buoyancy)
        self.sliderList.append(self.temperaturePressure)
        self.sliderList.append(self.temperaturePressureThreshold)
        self.sliderList.append(self.temperatureDissipation)
        self.sliderList.append(self.temperatureDiffusion)
        self.sliderList.append(self.temperatureTurbulence)
        self.sliderList.append(self.temperatureNoise)
        self.sliderList.append(self.temperatureTension)

        self.gridLayout_Box.addWidget(self.resetButton,  10, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box
class TemperatureLayout(SliderContainerLayout):

    def getLayout(self):

        self.temperatureScale = SliderContainer("Temp. Scale", 'temperatureScale', self.fluidBoxName, "Temperature Scale")
        self.buoyancy = SliderContainer("Buoyancy", 'buoyancy', self.fluidBoxName)
        self.temperaturePressure = SliderContainer("Pressure", 'temperaturePressure', self.fluidBoxName)
        self.temperaturePressureThreshold = SliderContainer("Press. Th.", 'temperaturePressureThreshold', self.fluidBoxName, "Pressure Threshold")
        self.temperatureDissipation = SliderContainer("Dissipation", 'temperatureDissipation', self.fluidBoxName)
        self.temperatureDiffusion = SliderContainer("Diffusion", 'temperatureDiffusion', self.fluidBoxName)
        self.temperatureTurbulence = SliderContainer("Turbulence", 'temperatureTurbulence', self.fluidBoxName)
        self.temperatureNoise = SliderContainer("Noise", 'temperatureNoise', self.fluidBoxName)
        self.temperatureTension = SliderContainer("Tension", 'temperatureTension', self.fluidBoxName)

        self.temperatureScale.addToLayout(self.gridLayout_Box, 1)
        self.buoyancy.addToLayout(self.gridLayout_Box, 2)
        self.temperaturePressure.addToLayout(self.gridLayout_Box, 3)
        self.temperaturePressureThreshold.addToLayout(self.gridLayout_Box, 4)
        self.temperatureDissipation.addToLayout(self.gridLayout_Box, 5)
        self.temperatureDiffusion.addToLayout(self.gridLayout_Box, 6)
        self.temperatureTurbulence.addToLayout(self.gridLayout_Box, 7)
        self.temperatureNoise.addToLayout(self.gridLayout_Box, 8)
        self.temperatureTension.addToLayout(self.gridLayout_Box, 9)

        self.sliderList.append(self.temperatureScale)
        self.sliderList.append(self.buoyancy)
        self.sliderList.append(self.temperaturePressure)
        self.sliderList.append(self.temperaturePressureThreshold)
        self.sliderList.append(self.temperatureDissipation)
        self.sliderList.append(self.temperatureDiffusion)
        self.sliderList.append(self.temperatureTurbulence)
        self.sliderList.append(self.temperatureNoise)
        self.sliderList.append(self.temperatureTension)

        self.gridLayout_Box.addWidget(self.resetButton,  10, 12-1, 1, 4-1)
        self.setAllValues(self.sliderList)  # Set all values to start position

        return self.gridLayout_Box

    def resetButton_Event(self):
        self.reset(self.sliderList)

    def initializeSliderDefaultValues(self):
        fluidContainerObj = ContainerValuesUtils(self.fluidBoxName)
        del fluidContainerObj

    def setAllValues(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()

    def setInitialVisibility(self, sliderList):
        for sliderItem in sliderList:
            sliderItem.resetValues()