示例#1
0
    def initialize_fans(self):
        """Initialize fans to the initial slider values."""

        grid.set_fan(ser=self.ser,
                     fan=1,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan1.value()),
                     lock=self.lock)
        grid.set_fan(ser=self.ser,
                     fan=2,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan2.value()),
                     lock=self.lock)
        grid.set_fan(ser=self.ser,
                     fan=3,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan3.value()),
                     lock=self.lock)
        grid.set_fan(ser=self.ser,
                     fan=4,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan4.value()),
                     lock=self.lock)
        grid.set_fan(ser=self.ser,
                     fan=5,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan5.value()),
                     lock=self.lock)
        grid.set_fan(ser=self.ser,
                     fan=6,
                     voltage=grid.calculate_voltage(
                         self.ui.lcdNumberFan6.value()),
                     lock=self.lock)
示例#2
0
    def setup_ui_logic(self):
        """Define QT signal and slot connections and initializes UI values."""

        # Update "Fan percentage" LCD values from horizontal sliders initial value
        self.ui.lcdNumberFan1.display(self.ui.horizontalSliderFan1.value())
        self.ui.lcdNumberFan2.display(self.ui.horizontalSliderFan2.value())
        self.ui.lcdNumberFan3.display(self.ui.horizontalSliderFan3.value())
        self.ui.lcdNumberFan4.display(self.ui.horizontalSliderFan4.value())
        self.ui.lcdNumberFan5.display(self.ui.horizontalSliderFan5.value())
        self.ui.lcdNumberFan6.display(self.ui.horizontalSliderFan6.value())

        # Update "fan labels" from "Fan Config" tab
        self.ui.groupBoxFan1.setTitle(self.ui.lineEditFan1.text())
        self.ui.groupBoxFan2.setTitle(self.ui.lineEditFan2.text())
        self.ui.groupBoxFan3.setTitle(self.ui.lineEditFan3.text())
        self.ui.groupBoxFan4.setTitle(self.ui.lineEditFan4.text())
        self.ui.groupBoxFan5.setTitle(self.ui.lineEditFan5.text())
        self.ui.groupBoxFan6.setTitle(self.ui.lineEditFan6.text())

        self.ui.groupBoxCurrentFan1.setTitle(self.ui.lineEditFan1.text())
        self.ui.groupBoxCurrentFan2.setTitle(self.ui.lineEditFan2.text())
        self.ui.groupBoxCurrentFan3.setTitle(self.ui.lineEditFan3.text())
        self.ui.groupBoxCurrentFan4.setTitle(self.ui.lineEditFan4.text())
        self.ui.groupBoxCurrentFan5.setTitle(self.ui.lineEditFan5.text())
        self.ui.groupBoxCurrentFan6.setTitle(self.ui.lineEditFan6.text())

        self.ui.groupBoxConfigFan1.setTitle(self.ui.lineEditFan1.text())
        self.ui.groupBoxConfigFan2.setTitle(self.ui.lineEditFan2.text())
        self.ui.groupBoxConfigFan3.setTitle(self.ui.lineEditFan3.text())
        self.ui.groupBoxConfigFan4.setTitle(self.ui.lineEditFan4.text())
        self.ui.groupBoxConfigFan5.setTitle(self.ui.lineEditFan5.text())
        self.ui.groupBoxConfigFan6.setTitle(self.ui.lineEditFan6.text())

        #  Connect events from sliders to update "Fan percentage" LCD value
        self.ui.horizontalSliderFan1.valueChanged.connect(
            self.ui.lcdNumberFan1.display)
        self.ui.horizontalSliderFan2.valueChanged.connect(
            self.ui.lcdNumberFan2.display)
        self.ui.horizontalSliderFan3.valueChanged.connect(
            self.ui.lcdNumberFan3.display)
        self.ui.horizontalSliderFan4.valueChanged.connect(
            self.ui.lcdNumberFan4.display)
        self.ui.horizontalSliderFan5.valueChanged.connect(
            self.ui.lcdNumberFan5.display)
        self.ui.horizontalSliderFan6.valueChanged.connect(
            self.ui.lcdNumberFan6.display)

        # Connect "Manual/Automatic" fan control radio button
        self.ui.radioButtonManual.toggled.connect(self.disable_enable_sliders)

        # Connect "Simulated temperatures" checkbox
        self.ui.checkBoxSimulateTemp.stateChanged.connect(
            self.simulate_temperatures)

        # Connect "Restart Communication" button
        self.ui.pushButtonRestart.clicked.connect(self.restart)

        # Connect "Add CPU sensors" button
        self.ui.pushButtonAddCPUSensor.clicked.connect(self.add_cpu_sensors)

        # Connect "Add GPU sensors" button
        self.ui.pushButtonAddGPUSensor.clicked.connect(self.add_gpu_sensors)

        # Connect "Remove CPU sensors" button
        self.ui.pushButtonRemoveCPUSensor.clicked.connect(
            self.remove_cpu_sensors)

        # Connect "Remove GPU sensors" button
        self.ui.pushButtonRemoveGPUSensor.clicked.connect(
            self.remove_gpu_sensors)

        # Connect event from changed serial port combo box
        self.ui.comboBoxComPorts.currentIndexChanged.connect(
            self.init_communication)

        # Connect event from changed polling interval combo box
        self.ui.comboBoxPolling.currentIndexChanged.connect(
            self.init_communication)

        # Update fan voltage (speed) based on changes to the horizontal sliders
        #
        # "grid.calculate_voltage" converts the percent value to valid voltages supported by the Grid
        # "lambda" is needed to send four arguments (serial object, fan id, fan voltage and lock object)
        self.ui.horizontalSliderFan1.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=1,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan1.value()),
            lock=self.lock))

        self.ui.horizontalSliderFan2.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=2,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan2.value()),
            lock=self.lock))

        self.ui.horizontalSliderFan3.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=3,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan3.value()),
            lock=self.lock))

        self.ui.horizontalSliderFan4.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=4,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan4.value()),
            lock=self.lock))

        self.ui.horizontalSliderFan5.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=5,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan5.value()),
            lock=self.lock))

        self.ui.horizontalSliderFan6.valueChanged.connect(lambda: grid.set_fan(
            ser=self.ser,
            fan=6,
            voltage=grid.calculate_voltage(self.ui.lcdNumberFan6.value()),
            lock=self.lock))

        # Connect "Change value" events from "Fan config" tab (all "spin boxes") to verify that the values are valid
        for fan in range(1, 7):
            getattr(self.ui, "spinBoxMinSpeedFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)
            getattr(self.ui, "spinBoxStartIncreaseSpeedFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)
            getattr(self.ui, "spinBoxIntermediateSpeedFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)
            getattr(self.ui, "spinBoxMaxSpeedFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)
            getattr(self.ui, "spinBoxIntermediateTempFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)
            getattr(self.ui, "spinBoxMaxTempFan" +
                    str(fan)).valueChanged.connect(self.validate_fan_config)

        # Connect fan rpm signal (from polling thread) to fan rpm label
        self.thread.rpm_signal_fan1.connect(self.ui.labelRPMFan1.setText)
        self.thread.rpm_signal_fan2.connect(self.ui.labelRPMFan2.setText)
        self.thread.rpm_signal_fan3.connect(self.ui.labelRPMFan3.setText)
        self.thread.rpm_signal_fan4.connect(self.ui.labelRPMFan4.setText)
        self.thread.rpm_signal_fan5.connect(self.ui.labelRPMFan5.setText)
        self.thread.rpm_signal_fan6.connect(self.ui.labelRPMFan6.setText)

        # Connect fan voltage signal (from polling thread) to fan voltage value
        self.thread.voltage_signal_fan1.connect(self.ui.labelVFan1.setText)
        self.thread.voltage_signal_fan2.connect(self.ui.labelVFan2.setText)
        self.thread.voltage_signal_fan3.connect(self.ui.labelVFan3.setText)
        self.thread.voltage_signal_fan4.connect(self.ui.labelVFan4.setText)
        self.thread.voltage_signal_fan5.connect(self.ui.labelVFan5.setText)
        self.thread.voltage_signal_fan6.connect(self.ui.labelVFan6.setText)

        # Connect pixmap signal (from polling thread) for updating the fan status icon
        # "lambda" is needed to transmit two arguments, "icon resource name" from the signal (x) and fan id
        self.thread.pixmap_signal_fan1.connect(
            lambda x: self.change_fan_icon(x, 1))
        self.thread.pixmap_signal_fan2.connect(
            lambda x: self.change_fan_icon(x, 2))
        self.thread.pixmap_signal_fan3.connect(
            lambda x: self.change_fan_icon(x, 3))
        self.thread.pixmap_signal_fan4.connect(
            lambda x: self.change_fan_icon(x, 4))
        self.thread.pixmap_signal_fan5.connect(
            lambda x: self.change_fan_icon(x, 5))
        self.thread.pixmap_signal_fan6.connect(
            lambda x: self.change_fan_icon(x, 6))

        # Connect CPU and GPU temperature signals (from polling thread) to GPU and CPU LCD values
        self.thread.cpu_temp_signal.connect(
            self.ui.lcdNumberCurrentCPU.display)
        self.thread.gpu_temp_signal.connect(
            self.ui.lcdNumberCurrentGPU.display)

        # Connect update signal to fan update function
        self.thread.update_signal.connect(self.update_fan_speed)

        # Connect CPU and GPU temperature signals (from polling thread) to function for updating HWMon status
        self.thread.hwmon_status_signal.connect(
            self.ui.labelHWMonStatus.setText)

        # Connect exception signal to show exception message from running thread
        # This is needed as it's not possible to show a message box widget from the QThread directly
        self.thread.exception_signal.connect(self.thread_exception_handling)