From c2be28e52ddb01c060172c53b255688a607729a2 Mon Sep 17 00:00:00 2001 From: Andrei Pylnev Date: Mon, 20 Apr 2026 13:42:32 +0300 Subject: [PATCH] mini refactor: reducing code duplication, removing deprecated code, improving type safety, enhancing error handling --- README.md | 4 +- core/__init__.py | 26 + core/amdctl.py | 48 +- core/ecwrite.py | 13 +- core/intelctl.py | 31 +- main.py | 159 +++--- ui/frontend.py | 1302 +++++++++++++++++----------------------------- 7 files changed, 586 insertions(+), 997 deletions(-) diff --git a/README.md b/README.md index 94e69d4..86b59c8 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ _[OPTIONAL]_ ## Usage: ### COMMAND LINE - - ```sudo``` is required in order to access the Super I/O EC registers and apply undervolt offsets. + - ```sudo``` is required to access the Super I/O EC registers and apply undervolt offsets. - From the command line run the main script as root: ```sh sudo -E python3 main.py @@ -86,7 +86,7 @@ Packages: ## -Hey! I'm an undergraduate student and would be awesome if you could support me! +Hey! I'm an undergraduate student, and it would be awesome if you could support me! [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/R6R71GROZE) diff --git a/core/__init__.py b/core/__init__.py index e69de29..0df5049 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -0,0 +1,26 @@ +from PyQt6.QtCore import QObject, QProcess, pyqtSignal + +class CommandRunner(QObject): + finished = pyqtSignal(str) + + def __init__(self): + super().__init__() + self.process = QProcess() + self.process.readyReadStandardOutput.connect(self._handle_output) + self.process.finished.connect(self._on_finished) + self.output = "" + + def run(self, cmd, args): + self.output = "" # Reset output + self.process.start(cmd, args) + self.process.waitForFinished() + + def _handle_output(self): + new_output = self.process.readAllStandardOutput().data().decode() + self.output += new_output + + def _on_finished(self): + self.finished.emit(self.output) + + def close(self): + self.process.close() \ No newline at end of file diff --git a/core/amdctl.py b/core/amdctl.py index 4d573a4..c2e2bc2 100644 --- a/core/amdctl.py +++ b/core/amdctl.py @@ -1,49 +1,18 @@ -from PyQt6.QtCore import QObject, QProcess, pyqtSignal - - -class CommandRunner(QObject): - finished = pyqtSignal(str) # Emits the full output when done - - def __init__(self): - super().__init__() - self.process = QProcess() - self.process.readyReadStandardOutput.connect(self._handle_output) - self.process.finished.connect(self._on_finished) - self.output = "" # Store output here - - def run(self, cmd, args): - self.output = "" # Reset output - self.process.start(cmd, args) - self.process.waitForFinished() - - def _handle_output(self): - new_output = self.process.readAllStandardOutput().data().decode() - self.output += new_output # Append to stored output - - def _on_finished(self): - self.finished.emit(self.output) # Emit the full output - - def close(self): - self.process.close() +from core import CommandRunner def checkUndervoltStatus(self): runner = CommandRunner() runner.run("amdctl", ["-m", "-g", "-c0"]) - underVoltStatus = runner.output - # remove the first 3 lines which are not needed - underVoltStatus = underVoltStatus.splitlines()[3:] - # we only want column 0, 5, 6, 7, 10 and 11 - underVoltStatus = "\n".join( + under_volt_status = runner.output + under_volt_status = under_volt_status.splitlines()[3:] + under_volt_status = "\n".join( f"{l[0]}\t{l[5]}\t{l[6].replace('.00', '')}\t{l[7]}\t{l[11]}" - for l in (line.split() for line in underVoltStatus) + for l in (line.split() for line in under_volt_status) if len(l) > 11 ) + self.undervolt = under_volt_status - self.undervolt = underVoltStatus - - -# Apply the undervoltage offsets values def applyUndervolt(self): runner = CommandRunner() core = self.undervolt_dropdown.currentIndex() @@ -53,9 +22,6 @@ def applyUndervolt(self): runner.run("amdctl", ["-m", f"-v{vid}"]) checkUndervoltStatus(self) - -# Global process better perf instead of creating and destroying every update cycle. -# Update the current VCore voltage_process = CommandRunner() @@ -72,9 +38,7 @@ def checkVoltage(self): if voltages: avg_v = sum(voltages) / len(voltages) - self.voltage = avg_v - if avg_v < self.minrecordedVoltage: self.minrecordedVoltage = avg_v if avg_v > self.maxrecordedVoltage: diff --git a/core/ecwrite.py b/core/ecwrite.py index ec6a099..06d962a 100644 --- a/core/ecwrite.py +++ b/core/ecwrite.py @@ -1,4 +1,5 @@ import os +import subprocess import sys @@ -13,8 +14,8 @@ def __init__(self): ) def _load_acpi_ec_module(self): - os.system("modprobe -r ec_sys") - os.system("modprobe ec_sys write_support=y") + subprocess.run(["modprobe", "-r", "ec_sys"], check=False) + subprocess.run(["modprobe", "ec_sys", "write_support=y"], check=False) if os.path.exists("/sys/kernel/debug/ec/ec0/io"): try: self.ec_file = open("/sys/kernel/debug/ec/ec0/io", "wb+") @@ -28,7 +29,7 @@ def _load_acpi_ec_module(self): "Failed to load 'ec_sys' module. Attempting to load 'acpi_ec' module." ) - os.system("modprobe acpi_ec") + subprocess.run(["modprobe", "acpi_ec"], check=False) if os.path.exists("/dev/ec"): self.ec_file = open("/dev/ec", "wb+") print("Loaded 'acpi_ec' module successfully.") @@ -41,6 +42,7 @@ def ec_write(self, address: int, value: int): self._handle_error( "EC file is not initialized. Ensure '_setup_ec()' was successful." ) + return self.ec_file.seek(address) self.ec_file.write(bytearray([value])) except Exception as e: @@ -52,6 +54,7 @@ def ec_refresh(self): self._handle_error( "EC file is not initialized. Ensure '_setup_ec()' was successful." ) + return self.ec_file.seek(0) self.buffer = self.ec_file.read() if not self.buffer: @@ -68,12 +71,14 @@ def ec_read(self, address: int) -> int: return self.buffer[address] except Exception as e: self._handle_error(f"Error reading from the EC buffer: {e}") + return 0 def shutdown_ec(self): if self.ec_file: self.ec_file.close() print("EC access successfully terminated.") - def _handle_error(self, message): + @staticmethod + def _handle_error(message): print(f"Error: {message}") sys.exit(1) diff --git a/core/intelctl.py b/core/intelctl.py index f40929b..e3dca19 100644 --- a/core/intelctl.py +++ b/core/intelctl.py @@ -1,30 +1,4 @@ -from PyQt6.QtCore import QObject, QProcess, pyqtSignal - - -class CommandRunner(QObject): - finished = pyqtSignal(str) # Emits the full output when done - - def __init__(self): - super().__init__() - self.process = QProcess() - self.process.readyReadStandardOutput.connect(self._handle_output) - self.process.finished.connect(self._on_finished) - self.output = "" # Store output here - - def run(self, cmd, args): - self.output = "" # Reset output - self.process.start(cmd, args) - self.process.waitForFinished() - - def _handle_output(self): - new_output = self.process.readAllStandardOutput().data().decode() - self.output += new_output # Append to stored output - - def _on_finished(self): - self.finished.emit(self.output) # Emit the full output - - def close(self): - self.process.close() +from PyQt6.QtCore import QProcess def checkUndervoltStatus(self): @@ -40,7 +14,7 @@ def applyUndervolt(self): def checkVoltage(self): ## https://askubuntu.com/questions/876286/how-to-monitor-the-vcore-voltage - voltage_process.start("sudo rdmsr 0x198 -a -u --bitfield 47:32") # All processors + voltage_process.start("sudo rdmsr 0x198 -a -u --bitfield 47:32") voltage_process.waitForFinished() voltage = voltage_process.readAll() @@ -56,4 +30,3 @@ def checkVoltage(self): self.minrecordedVoltage = voltage if voltage > self.maxrecordedVoltage: self.maxrecordedVoltage = voltage - diff --git a/main.py b/main.py index 9b7615e..5e172cb 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,8 @@ import enum import os import sys +from pathlib import Path +from typing import Tuple from PyQt6 import QtGui, QtWidgets from PyQt6.QtCore import Qt, QTimer @@ -15,17 +17,13 @@ sys.exit(1) CONFIG_FOLDER = "/etc/nitrosense/" -UPDATE_INTERVAL_MS = 1000 # 1 sec interval +UPDATE_INTERVAL_MS = 1000 - -## ------------------------------## -## -------Nitro Fan Mode------## class PFS(enum.Enum): Manual = 0 Auto = 1 Turbo = 2 - if CPU_TYPE == "AMD": from core.amdctl import applyUndervolt, checkUndervoltStatus, checkVoltage elif CPU_TYPE == "Intel": @@ -41,12 +39,34 @@ def applyUndervolt(self): def checkVoltage(self): self.voltage = "Voltage not supported for this CPU type." - -## ------------------------------## -## -------Main QT Window---------## - - class MainWindow(QtWidgets.QDialog, Ui_NitroSense): + turboEnabled: bool + cpufanspeed: int + gpufanspeed: int + cpuTemp: int + gpuTemp: int + sysTemp: int + voltage: float + undervolt: str + minrecordedVoltage: float + maxrecordedVoltage: float + selected_color: Tuple[int, int, int] + powerPluggedIn: int + onBatteryPower: int + displayOverdrive: bool + nitroMode: int + usbCharging: int + cpuMode: int + gpuMode: int + cpuFanMode: PFS + gpuFanMode: PFS + KB30Timeout: int + batteryChargeLimit: int + cpuFanSpeed: int + gpuFanSpeed: int + my_timer: QTimer + ECHandler: ECWrite + def __init__(self): super().__init__() self._initialize_variables() @@ -78,6 +98,9 @@ def _initialize_variables(self): self.gpuFanMode = PFS.Auto self.KB30Timeout = ECS.KB_30_AUTO_OFF.value self.batteryChargeLimit = ECS.BATTERYLIMITOFF.value + self.cpuFanSpeed = 0 + self.gpuFanSpeed = 0 + self.my_timer = QTimer() def _initialize_ec_handler(self): self.ECHandler = ECWrite() @@ -91,14 +114,9 @@ def _initialize_ui(self): self.loadConfig() self.setupGUI() - # ---------------------------------------------------- - # Initialise the frame, check all registers and set the appropriate widgets def setupGUI(self): - # when any of the radio buttons are clicked, also save the current settings - self.global_auto.clicked.connect(self.setDefaultMode) self.global_turbo.clicked.connect(self.setTurboMode) - self.cpu_auto.clicked.connect(self.cpuauto) self.cpu_manual.clicked.connect(self.cpusetmanual) self.cpu_turbo.clicked.connect(self.cpumax) @@ -110,20 +128,17 @@ def setupGUI(self): self.gpuManualSlider.valueChanged.connect(self.gpumanual) self.gpuManualSlider.setEnabled(True) self.exit_button.clicked.connect(self.shutdown) - self.undervolt_button.clicked.connect(lambda: applyUndervolt(self)) self.color_button.clicked.connect(lambda: self.saveAndRun(self.kbSelectColor)) self.apply_button.clicked.connect(lambda: self.saveAndRun(self.kbApplySettings)) self.save_button.clicked.connect(lambda: self.saveAndRun(self.kbSaveConfig)) self.load_button.clicked.connect(lambda: self.saveAndRun(self.kbLoadConfig)) - # Set the 30 sec backlight timer if self.KB30Timeout == int(ECS.KB_30_AUTO_OFF.value, 0): self.KBTimerCB.setChecked(False) else: self.KBTimerCB.setChecked(True) - # Set the USB charging indicator if self.usbCharging == int(ECS.USBCHARGINGON.value, 0): self.usbChargingCB.setChecked(True) elif self.usbCharging == int(ECS.USBCHARGINGOFF.value, 0): @@ -131,7 +146,6 @@ def setupGUI(self): else: print("Error read EC register for USB Charging: " + str(self.usbCharging)) - # Set the charge limit indicator if self.batteryChargeLimit == int(ECS.BATTERYLIMITON.value, 0): self.chargeLimit.setChecked(True) self.batteryChargeLimitValue.setText("On ") @@ -146,9 +160,6 @@ def setupGUI(self): self.setNitroMode() self.setFanMode() - - # ---------------------------------------------------- - self.quietModeCB.clicked["bool"].connect(self.setQuietMode) self.defaultModeCB.clicked["bool"].connect(self.setDefaultMode) self.extremeModeCB.clicked["bool"].connect(self.setExtremeMode) @@ -157,7 +168,6 @@ def setupGUI(self): self.usbChargingCB.clicked["bool"].connect(self.toggleUSBCharging) self.chargeLimit.clicked["bool"].connect(self.togglePowerLimit) - # Set the current fan and turbo mode def setFanMode(self): if self.cpuMode == int(ECS.CPU_AUTO_MODE.value, 0): self.cpuFanMode = PFS.Auto @@ -198,25 +208,13 @@ def setFanMode(self): self.nitroMode = int(ECS.EXTREMEMODE.value, 0) self.setTurboMode() - # Create a timer to update the UI def setUpdateUITimer(self): print("Setting up callback timer for %d(ms)" % UPDATE_INTERVAL_MS) - self.my_timer = QTimer() self.my_timer.timeout.connect(self.updateNitroStatus) self.my_timer.start(UPDATE_INTERVAL_MS) - # ---------------------------------------------------- - # Read the various EC registers and update the GUI def checkNitroStatus(self): # self.cb = self.ECHandler.ec_read(int(COOL_BOOST_CONTROL, 0)) == 1 - self.cpuMode = self.ECHandler.ec_read(int(ECS.CPU_FAN_MODE_CONTROL.value, 0)) - self.gpuMode = self.ECHandler.ec_read(int(ECS.GPU_FAN_MODE_CONTROL.value, 0)) - self.KB30Timeout = self.ECHandler.ec_read(int(ECS.KB_30_SEC_AUTO.value, 0)) - self.usbCharging = self.ECHandler.ec_read(int(ECS.POWEROFFUSBCHARGING.value, 0)) - self.nitroMode = self.ECHandler.ec_read(int(ECS.NITROMODE.value, 0)) - self.batteryChargeLimit = self.ECHandler.ec_read( - int(ECS.BATTERYCHARGELIMIT.value, 0) - ) self.cpuFanSpeed = self.ECHandler.ec_read( int(ECS.CPU_MANUAL_SPEED_CONTROL.value, 0) ) @@ -226,13 +224,14 @@ def checkNitroStatus(self): self.cpuManualSlider.setSliderPosition(int(self.cpuFanSpeed / 10)) self.gpuManualSlider.setSliderPosition(int(self.gpuFanSpeed / 10)) - # ---------------------------------------------------- - # Read the newest register updates def checkPowerTempFan(self): - # Refresh the EC registers first before reading values - # -optimisation, read EC registers once per update, prevents hangs/unresponsive GUI self.ECHandler.ec_refresh() + self._read_status_registers() + self._read_temperature_registers() + self._read_fan_speed_registers() + def _read_status_registers(self) -> None: + """Read CPU/GPU mode and battery status registers.""" self.cpuMode = self.ECHandler.ec_read(int(ECS.CPU_FAN_MODE_CONTROL.value, 0)) self.gpuMode = self.ECHandler.ec_read(int(ECS.GPU_FAN_MODE_CONTROL.value, 0)) self.powerPluggedIn = self.ECHandler.ec_read(int(ECS.POWERSTATUS.value, 0)) @@ -242,32 +241,32 @@ def checkPowerTempFan(self): int(ECS.BATTERYCHARGELIMIT.value, 0) ) + def _read_temperature_registers(self) -> None: + """Read CPU, GPU, and system temperature registers.""" self.cpuTemp = self.ECHandler.ec_read(int(ECS.CPUTEMP.value, 0)) self.gpuTemp = self.ECHandler.ec_read(int(ECS.GPUTEMP.value, 0)) self.sysTemp = self.ECHandler.ec_read(int(ECS.SYSTEMP.value, 0)) - cpufanspeedHighBits = self.ECHandler.ec_read( + def _read_fan_speed_registers(self) -> None: + """Read CPU and GPU fan speed registers.""" + cpu_fanspeed_high_bits = self.ECHandler.ec_read( int(ECS.CPUFANSPEEDHIGHBITS.value, 0) ) - cpufanspeedLowBits = self.ECHandler.ec_read( + cpu_fanspeed_low_bits = self.ECHandler.ec_read( int(ECS.CPUFANSPEEDLOWBITS.value, 0) ) - # example - # cpufanspeed = '0x068B' - # 1675 - self.cpufanspeed = cpufanspeedLowBits << 8 | cpufanspeedHighBits - gpufanspeedHighBits = self.ECHandler.ec_read( + self.cpufanspeed = cpu_fanspeed_low_bits << 8 | cpu_fanspeed_high_bits + + gpu_fanspeed_high_bits = self.ECHandler.ec_read( int(ECS.GPUFANSPEEDHIGHBITS.value, 0) ) - gpufanspeedLowBits = self.ECHandler.ec_read( + gpu_fanspeed_low_bits = self.ECHandler.ec_read( int(ECS.GPUFANSPEEDLOWBITS.value, 0) ) - self.gpufanspeed = gpufanspeedLowBits << 8 | gpufanspeedHighBits - # print("cpufanspeed: " + str(cpufanspeed)) - # print("gpufanspeed: " + gpufanspeed) - # ---------Radio Button callback functions------------ + self.gpufanspeed = gpu_fanspeed_low_bits << 8 | gpu_fanspeed_high_bits + def setQuietMode(self): self.ECHandler.ec_write( int(ECS.NITROMODE.value, 0), int(ECS.QUIETMODE.value, 0) @@ -295,10 +294,8 @@ def setTurboMode(self): def setGlobalAuto(self): if self.turboEnabled: self.turboEnabled = False - self.cpuauto() self.gpuauto() - self.global_auto.setChecked(True) self.cpu_auto.setChecked(True) self.gpu_auto.setChecked(True) @@ -306,10 +303,8 @@ def setGlobalAuto(self): def setGlobalTurbo(self): if not self.turboEnabled: self.turboEnabled = True - self.cpumax() self.gpumax() - self.global_turbo.setChecked(True) self.cpu_turbo.setChecked(True) self.gpu_turbo.setChecked(True) @@ -333,8 +328,6 @@ def cpusetmanual(self): self.cpuFanMode = PFS.Manual def cpumanual(self, level): - # print(str(level * 10), end=', ') - # print(hex(level * 10)) self.ECHandler.ec_write(int(ECS.CPU_MANUAL_SPEED_CONTROL.value, 0), level * 10) def gpuauto(self): @@ -356,11 +349,8 @@ def gpusetmanual(self): self.gpuFanMode = PFS.Manual def gpumanual(self, level): - # print(level * 10, end=', ') - # print(hex(level * 10)) self.ECHandler.ec_write(int(ECS.GPU_MANUAL_SPEED_CONTROL.value, 0), level * 10) - # Toggle 30 seconds keyboard backlight timer def togglekbauto(self, tog): if not tog: self.ECHandler.ec_write( @@ -371,7 +361,6 @@ def togglekbauto(self, tog): int(ECS.KB_30_SEC_AUTO.value, 0), int(ECS.KB_30_AUTO_ON.value, 0) ) - # USB charging whilst off def toggleUSBCharging(self, tog): if tog: self.ECHandler.ec_write( @@ -382,7 +371,6 @@ def toggleUSBCharging(self, tog): int(ECS.POWEROFFUSBCHARGING.value, 0), int(ECS.USBCHARGINGOFF.value, 0) ) - # Toggle Power Limit def togglePowerLimit(self, tog): if tog: self.ECHandler.ec_write( @@ -393,34 +381,28 @@ def togglePowerLimit(self, tog): int(ECS.BATTERYCHARGELIMIT.value, 0), int(ECS.BATTERYLIMITOFF.value, 0) ) - # ---------------------------------------------------- - - # Update the Battery status def setBatteryStatus(self): - batteryStat = "Discharging" + battery_stat = "Discharging" if self.onBatteryPower == int(ECS.BATTERYPLUGGEDINANDCHARGING.value, 0): - batteryStat = "Charging" + battery_stat = "Charging" elif self.onBatteryPower == int(ECS.BATTERYDRAINING.value, 0): - batteryStat = "Discharging" + battery_stat = "Discharging" elif self.onBatteryPower == int(ECS.BATTERYOFF.value, 0): - batteryStat = "Battery Not In Use" + battery_stat = "Battery Not In Use" else: print( "Error read EC register for Battery Status: " + str(hex(self.onBatteryPower)) ) - self.batteryStatusValue.setText(batteryStat) + self.batteryStatusValue.setText(battery_stat) - # Set the battery charge indicator if self.batteryChargeLimit == int(ECS.BATTERYLIMITON.value, 0): self.batteryChargeLimitValue.setText("On") elif self.batteryChargeLimit == int(ECS.BATTERYLIMITOFF.value, 0): self.batteryChargeLimitValue.setText("Off") - # Update the Nitro state def setNitroMode(self): - # print("nitroModeValue: " + str(self.nitroMode)) if self.nitroMode == int(ECS.QUIETMODE.value, 0): self.nitroModeValue.setText("Quiet\t") self.quietModeCB.setChecked(True) @@ -433,9 +415,7 @@ def setNitroMode(self): else: print("Error read EC register for Nitro Mode: " + str(self.nitroMode)) - # keyboard def kbSelectColor(self): - # open color dialog with current color selected color = QtWidgets.QColorDialog.getColor( initial=QtGui.QColor.fromRgb(*self.selected_color) ) @@ -449,13 +429,12 @@ def kbApplySettings(self): brightness = self.brightness_spin.value() direction = self.direction_combo.currentIndex() + 1 red, green, blue = self.selected_color - keyboard.set_mode(mode, zone, speed, brightness, direction, red, green, blue) def kbSaveConfig(self): if not os.path.exists(CONFIG_FOLDER + "rbg.conf"): - os.system(f"mkdir -p {CONFIG_FOLDER}") - os.system(f"touch {CONFIG_FOLDER + 'rbg.conf'}") + Path(CONFIG_FOLDER).mkdir(parents=True, exist_ok=True) + Path(CONFIG_FOLDER + 'rbg.conf').touch(exist_ok=True) path = f"{CONFIG_FOLDER + 'rbg.conf'}" with open(path, "w") as f: f.write(f"{self.mode_combo.currentIndex()}\n") @@ -486,8 +465,8 @@ def kbLoadConfig(self): def saveConfig(self): if not os.path.exists(CONFIG_FOLDER + "nitrosense.conf"): - os.system(f"mkdir -p {CONFIG_FOLDER}") - os.system(f"touch {CONFIG_FOLDER + 'nitrosense.conf'}") + Path(CONFIG_FOLDER).mkdir(parents=True, exist_ok=True) + Path(CONFIG_FOLDER + 'nitrosense.conf').touch(exist_ok=True) path = f"{CONFIG_FOLDER + 'nitrosense.conf'}" with open(path, "w") as f: f.write(f"{self.cpuMode}\n") @@ -517,21 +496,18 @@ def saveAndRun(self, function): function() self.saveConfig() - # Update the UI state def updateNitroStatus(self): checkVoltage(self) # print(self.voltage) - minmaxVoltages = ( + minmax_voltages = ( str("%1.2f" % self.minrecordedVoltage) + " / " + str("%1.2f" % self.maxrecordedVoltage) ) - # print(minmaxVoltages) - self.voltageValue.setText(str("%1.2f" % self.voltage)) - self.voltageMinMaxValue.setText(minmaxVoltages) + self.voltageValue.setText(str("%1.2f" % self.voltage)) + self.voltageMinMaxValue.setText(minmax_voltages) self.undervoltStatus.setText(self.undervolt) - self.checkPowerTempFan() if ( @@ -551,24 +527,19 @@ def updateNitroStatus(self): self.setBatteryStatus() self.setNitroMode() - # self.voltageChart.update(float("%1.2f" % self.voltage)) # self.cpuChart.update(self.cpuTemp) # self.gpuChart.update(self.gpuTemp) # self.sysChart.update(self.sysTemp) # self.cpuFanChart.update(self.cpufanspeed) # self.gpuFanChart.update(self.gpufanspeed) - # self.cpuFanSpeedValue.setText(str(self.cpufanspeed) + " RPM") self.gpuFanSpeedValue.setText(str(self.gpufanspeed) + " RPM") self.cpuTempValue.setText(str(self.cpuTemp) + "°") self.gpuTempValue.setText(str(self.gpuTemp) + "°") self.sysTempValue.setText(str(self.sysTemp) + "°") - # self.powerStatusValue.setText(str(self.powerPluggedIn)) - # ---------------------------------------------------- - # Exit the program cleanly def shutdown(self): print("Cleaning up..") self.ECHandler.shutdown_ec() @@ -579,14 +550,9 @@ def shutdown(self): app = QtWidgets.QApplication(sys.argv) application = MainWindow() app.setApplicationName("Linux NitroSense") -# Makes the window not resizeable application.setFixedSize(500, 700) - application.setWindowIcon(QtGui.QIcon("nitro-sense.ico")) -# Set global window opacity -# application.setWindowOpacity(0.97) -# Dark theme implementation palette = QPalette() palette.setColor(QPalette.ColorRole.Window, QColor(53, 53, 53)) palette.setColor(QPalette.ColorRole.WindowText, Qt.GlobalColor.white) @@ -602,6 +568,7 @@ def shutdown(self): palette.setColor(QPalette.ColorRole.Highlight, QColor(42, 130, 218)) palette.setColor(QPalette.ColorRole.HighlightedText, Qt.GlobalColor.black) palette.setColor(QPalette.ColorRole.NoRole, QColor(53, 53, 53)) + app.setPalette(palette) application.setPalette(palette) application.show() diff --git a/ui/frontend.py b/ui/frontend.py index 8eafef1..4ec0e72 100644 --- a/ui/frontend.py +++ b/ui/frontend.py @@ -1,299 +1,383 @@ -# Form implementation generated from reading ui file 'dialog.ui' -# -# Created by: PyQt6 UI code generator 6.9.0 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. +from PyQt6 import QtCore, QtGui, QtWidgets +class Ui_NitroSense(object): + def __init__(self): + self.quietModeCB = None + self.defaultModeCB = None + self.extremeModeCB = None + self.nitroModeValue = None + self.batteryChargeLimitValue = None + self.nitroModeLabel = None + self.batteryChargeLimitLabel = None + self.batteryStatusValue = None + self.batteryStatusLabel = None + self.powerStatusValue = None + self.formLayout_2 = None + self.predMode = None + self.horizontalLayout_7 = None + self.temp_box = None + self.gridLayout_2 = None + self.cpuTempValue = None + self.gpuTempValue = None + self.sysTempLabel = None + self.sysTempValue = None + self.gpuTempLabel = None + self.cpuTempLabel = None + self.fan_box = None + self.gridLayout_6 = None + self.gpuFanSpeedValue = None + self.gpuFanSpeedLabel = None + self.cpuFanSpeedLabel = None + self.cpuFanSpeedValue = None + self.KB_box = None + self.miscLayout = None + self.KBTimerCB = None + self.usbChargingCB = None + self.chargeLimit = None + self.undervolt_box = None + self.gridLayout_5 = None + self.voltageMinMaxValue = None + self.voltageMinMaxLabel = None + self.voltageValue = None + self.undervoltStatus = None + self.voltageLabel = None + self.horizontalLayout_2 = None + self.cpu_box = None + self.horizontalLayout_4 = None + self.verticalLayout_4 = None + self.cpu_auto = None + self.cpu_manual = None + self.cpu_turbo = None + self.cpuManualSlider = None + self.verticalLayout_6 = None + self.undervolt_dropdown = None + self.undervolt_button = None + self.global_box = None + self.globalLayout = None + self.global_auto = None + self.global_turbo = None + self.exit_button = None + self.gpu_box = None + self.horizontalLayout_5 = None + self.verticalLayout_5 = None + self.gpu_auto = None + self.gpu_manual = None + self.gpu_turbo = None + self.gpuManualSlider = None + self.keyboard_box = None + self.keyboardBoxLayout = None + self.verticalLayout_8 = None + self.formLayout = None + self.mode_label = None + self.mode_combo = None + self.zone_label = None + self.zone_combo = None + self.speed_label = None + self.speed_spin = None + self.brightness_label = None + self.brightness_spin = None + self.direction_label = None + self.direction_combo = None + self.color_button = None + self.apply_button = None + self.load_button = None + self.save_button = None + self.powerStatusLabel = None + self.verticalLayout_2 = None + self.verticalLayout_3 = None + self.horizontalLayout_3 = None + self.status_box = None + self.keyboard_tab = None + self.tab = None + self.verticalLayout_7 = None + self.verticalLayout_9 = None + self.fan_control_tab = None + self.verticalLayout = None -from PyQt6 import QtCore, QtGui, QtWidgets + @staticmethod + def _apply_size_policy(widget: QtWidgets.QWidget, + h_policy: QtWidgets.QSizePolicy.Policy, + v_policy: QtWidgets.QSizePolicy.Policy) -> None: + size_policy = QtWidgets.QSizePolicy(h_policy, v_policy) + size_policy.setHorizontalStretch(0) + size_policy.setVerticalStretch(0) + size_policy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth()) + widget.setSizePolicy(size_policy) + @staticmethod + def _create_font(family: str = "TT Squares", point_size: int = 11, + bold: bool = False, italic: bool = False) -> QtGui.QFont: + font = QtGui.QFont() + font.setFamily(family) + font.setPointSize(point_size) + font.setBold(bold) + font.setItalic(italic) + return font + + @staticmethod + def _setup_label(label: QtWidgets.QLabel, + font: QtGui.QFont = None, + size_policy: tuple = None, + object_name: str = "") -> None: + if size_policy: + h_policy, v_policy = size_policy + Ui_NitroSense._apply_size_policy(label, h_policy, v_policy) + if font: + label.setFont(font) + label.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + if object_name: + label.setObjectName(object_name) + + @staticmethod + def _setup_group_box(group_box: QtWidgets.QGroupBox, + h_policy: QtWidgets.QSizePolicy.Policy, + v_policy: QtWidgets.QSizePolicy.Policy, + font: QtGui.QFont = None, + object_name: str = "") -> None: + Ui_NitroSense._apply_size_policy(group_box, h_policy, v_policy) + if font: + group_box.setFont(font) + group_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + if object_name: + group_box.setObjectName(object_name) + + @staticmethod + def _setup_button_widget(widget: QtWidgets.QWidget, + font: QtGui.QFont = None, + object_name: str = "", + checked: bool = False) -> None: + Ui_NitroSense._apply_size_policy(widget, + QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred) + if font: + widget.setFont(font) + widget.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + if object_name: + widget.setObjectName(object_name) + if isinstance(widget, (QtWidgets.QRadioButton, QtWidgets.QCheckBox)): + widget.setChecked(checked) + + @staticmethod + def _setup_radio_button(radio_button: QtWidgets.QRadioButton, + font: QtGui.QFont = None, + object_name: str = "", + checked: bool = False) -> None: + Ui_NitroSense._setup_button_widget(radio_button, font, object_name, checked) + + @staticmethod + def _setup_checkbox(checkbox: QtWidgets.QCheckBox, + font: QtGui.QFont = None, + object_name: str = "", + checked: bool = False) -> None: + Ui_NitroSense._setup_button_widget(checkbox, font, object_name, checked) + + @staticmethod + def _setup_slider(slider: QtWidgets.QSlider, + font: QtGui.QFont = None, + object_name: str = "", + maximum: int = 20, + value: int = 20, + vertical: bool = True, + enabled: bool = False) -> None: + slider.setEnabled(enabled) + Ui_NitroSense._apply_size_policy(slider, + QtWidgets.QSizePolicy.Policy.Maximum, + QtWidgets.QSizePolicy.Policy.Maximum) + if vertical: + slider.setMaximumSize(QtCore.QSize(16777215, 180)) + else: + slider.setMaximumSize(QtCore.QSize(16777215, 16777215)) + if font: + slider.setFont(font) + slider.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + slider.setMaximum(maximum) + slider.setProperty("value", value) + slider.setTracking(True) + if vertical: + slider.setOrientation(QtCore.Qt.Orientation.Vertical) + slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove) + else: + slider.setOrientation(QtCore.Qt.Orientation.Horizontal) + slider.setTickPosition(QtWidgets.QSlider.TickPosition.NoTicks) + slider.setTickInterval(1) + if object_name: + slider.setObjectName(object_name) + + @staticmethod + def _apply_common_properties(widget: QtWidgets.QWidget, + h_policy: QtWidgets.QSizePolicy.Policy, + v_policy: QtWidgets.QSizePolicy.Policy, + font: QtGui.QFont = None, + object_name: str = "", + max_size: tuple = None) -> None: + Ui_NitroSense._apply_size_policy(widget, h_policy, v_policy) + if max_size: + widget.setMaximumSize(QtCore.QSize(*max_size)) + if font: + widget.setFont(font) + widget.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + widget.setStyleSheet("") + if object_name: + widget.setObjectName(object_name) + + @staticmethod + def _setup_combobox(combobox: QtWidgets.QComboBox, + h_policy: QtWidgets.QSizePolicy.Policy, + v_policy: QtWidgets.QSizePolicy.Policy, + font: QtGui.QFont = None, + object_name: str = "", + max_size: tuple = None) -> None: + Ui_NitroSense._apply_common_properties(combobox, h_policy, v_policy, font, object_name, max_size) + + @staticmethod + def _setup_pushbutton(button: QtWidgets.QPushButton, + h_policy: QtWidgets.QSizePolicy.Policy, + v_policy: QtWidgets.QSizePolicy.Policy, + font: QtGui.QFont = None, + object_name: str = "", + max_size: tuple = None) -> None: + Ui_NitroSense._apply_common_properties(button, h_policy, v_policy, font, object_name, max_size) -class Ui_NitroSense(object): def setupUi(self, NitroSense): NitroSense.setObjectName("NitroSense") NitroSense.resize(488, 688) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(NitroSense.sizePolicy().hasHeightForWidth()) - NitroSense.setSizePolicy(sizePolicy) + self._apply_size_policy(NitroSense, QtWidgets.QSizePolicy.Policy.Maximum, + QtWidgets.QSizePolicy.Policy.Maximum) NitroSense.setMaximumSize(QtCore.QSize(488, 688)) - NitroSense.setStyleSheet("* {;\n" -" color: white;\n" -" selection-background-color: rgb(255, 0, 0);\n" -"}\n" -"QWidget #tab, #monitoring_tab, #keyboard_tab {;\n" -" background-repeat: no-repeat;\n" -" background-position: top center;\n" -" background-color: #252525;\n" -"}\n" -"QPushButton, QComboButton, QComboBox {;\n" -" background-repeat: no-repeat;\n" -" background-position: top center;\n" -" background-color: #535353;\n" -"}\n" -"QGroupBox {\n" -" color: blue;\n" -" font: bold;\n" -" border: 1px solid silver;\n" -" border-radius: 6px;\n" -" margin-top: 6px;\n" -"}\n" -"\n" -"QGroupBox #monitoring_box {\n" -" border: 0px dotted gray;\n" -" margin: 0 0 0 0;\n" -" /* background-color: yellow; */\n" -"}\n" -"\n" -"QGroupBox #powerStatusLabel, #batteryStatusLabel, #batteryChargeLimitLabel, #nitroModeLabel, #cpuTempLabel, #gpuTempLabel, #sysTempLabel, #cpuFanSpeedLabel, #gpuFanSpeedLabel, #voltageLabel, #voltageMinMaxLabel, #voltageAverageLabel, #mode_label, #zone_label, #speed_label, #brightness_label, #direction_label, #undervolt_box {\n" -" color: gray;\n" -"}\n" -"QGroupBox::title {\n" -" subcontrol-origin: margin;\n" -" subcontrol-position: top center;\n" -" color: white;\n" -"}\n" -"QRadioButton::indicator {\n" -" border: 2px solid gray;\n" -"}\n" -"QRadioButton::indicator:checked {\n" -" background-color: red;\n" -"}\n" -"QCheckBox::indicator {\n" -" border: 2px solid gray;\n" -"}\n" -"QCheckBox::indicator:checked {\n" -" background-color: red;\n" -"}") + + NitroSense.setStyleSheet("""* { + color: white; + selection-background-color: rgb(255, 0, 0); + } + QWidget #tab, #monitoring_tab, #keyboard_tab { + background-repeat: no-repeat; + background-position: top center; + background-color: #252525; + } + QPushButton, QComboBox { + background-repeat: no-repeat; + background-position: top center; + background-color: #535353; + } + QGroupBox { + color: blue; + font: bold; + border: 1px solid silver; + border-radius: 6px; + margin-top: 6px; + } + QGroupBox #monitoring_box { + border: 0px dotted gray; + margin: 0 0 0 0; + } + QGroupBox #powerStatusLabel, #batteryStatusLabel, #batteryChargeLimitLabel, + #nitroModeLabel, #cpuTempLabel, #gpuTempLabel, #sysTempLabel, + #cpuFanSpeedLabel, #gpuFanSpeedLabel, #voltageLabel, #voltageMinMaxLabel, + #mode_label, #zone_label, #speed_label, #brightness_label, #direction_label, + #undervolt_box { + color: gray; + } + QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top center; + color: white; + } + QRadioButton::indicator { + border: 2px solid gray; + } + QRadioButton::indicator:checked { + background-color: red; + } + QCheckBox::indicator { + border: 2px solid gray; + } + QCheckBox::indicator:checked { + background-color: red; + }""") + self.verticalLayout = QtWidgets.QVBoxLayout(NitroSense) self.verticalLayout.setObjectName("verticalLayout") self.fan_control_tab = QtWidgets.QTabWidget(parent=NitroSense) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.fan_control_tab.sizePolicy().hasHeightForWidth()) - self.fan_control_tab.setSizePolicy(sizePolicy) + self._apply_size_policy(self.fan_control_tab, QtWidgets.QSizePolicy.Policy.Maximum, + QtWidgets.QSizePolicy.Policy.Maximum) self.fan_control_tab.setMinimumSize(QtCore.QSize(480, 680)) self.fan_control_tab.setMaximumSize(QtCore.QSize(480, 680)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.fan_control_tab.setFont(font) - self.fan_control_tab.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.fan_control_tab.setStyleSheet("") + self.fan_control_tab.setFont(self._create_font("TT Squares", 12)) self.fan_control_tab.setObjectName("fan_control_tab") self.tab = QtWidgets.QWidget() - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth()) - self.tab.setSizePolicy(sizePolicy) - self.tab.setMaximumSize(QtCore.QSize(480, 680)) - self.tab.setStyleSheet("") self.tab.setObjectName("tab") self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.tab) self.verticalLayout_9.setObjectName("verticalLayout_9") self.verticalLayout_7 = QtWidgets.QVBoxLayout() - self.verticalLayout_7.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetNoConstraint) self.verticalLayout_7.setContentsMargins(10, -1, 10, 10) self.verticalLayout_7.setSpacing(8) self.verticalLayout_7.setObjectName("verticalLayout_7") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() - self.horizontalLayout_3.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetNoConstraint) self.horizontalLayout_3.setContentsMargins(-1, -1, -1, 0) self.horizontalLayout_3.setSpacing(8) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.status_box = QtWidgets.QGroupBox(parent=self.tab) - self.status_box.setEnabled(True) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.status_box.sizePolicy().hasHeightForWidth()) - self.status_box.setSizePolicy(sizePolicy) + self._setup_group_box(self.status_box, QtWidgets.QSizePolicy.Policy.Maximum, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "status_box") self.status_box.setMaximumSize(QtCore.QSize(340, 125)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.status_box.setFont(font) - self.status_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.status_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter) - self.status_box.setObjectName("status_box") self.formLayout_2 = QtWidgets.QFormLayout(self.status_box) - self.formLayout_2.setLabelAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter) self.formLayout_2.setContentsMargins(4, 8, 4, 4) self.formLayout_2.setHorizontalSpacing(20) self.formLayout_2.setVerticalSpacing(0) self.formLayout_2.setObjectName("formLayout_2") self.powerStatusLabel = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.powerStatusLabel.sizePolicy().hasHeightForWidth()) - self.powerStatusLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.powerStatusLabel.setFont(font) - self.powerStatusLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.powerStatusLabel.setObjectName("powerStatusLabel") + self._setup_label(self.powerStatusLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="powerStatusLabel") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.powerStatusLabel) self.powerStatusValue = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.powerStatusValue.sizePolicy().hasHeightForWidth()) - self.powerStatusValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.powerStatusValue.setFont(font) - self.powerStatusValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.powerStatusValue.setObjectName("powerStatusValue") + self._setup_label(self.powerStatusValue, font=self._create_font("TT Squares", 11), + object_name="powerStatusValue") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.powerStatusValue) self.batteryStatusLabel = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.batteryStatusLabel.sizePolicy().hasHeightForWidth()) - self.batteryStatusLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.batteryStatusLabel.setFont(font) - self.batteryStatusLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.batteryStatusLabel.setObjectName("batteryStatusLabel") + self._setup_label(self.batteryStatusLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="batteryStatusLabel") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.batteryStatusLabel) self.batteryStatusValue = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.batteryStatusValue.sizePolicy().hasHeightForWidth()) - self.batteryStatusValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.batteryStatusValue.setFont(font) - self.batteryStatusValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.batteryStatusValue.setObjectName("batteryStatusValue") + self._setup_label(self.batteryStatusValue, font=self._create_font("TT Squares", 11), + object_name="batteryStatusValue") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.batteryStatusValue) self.batteryChargeLimitLabel = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.batteryChargeLimitLabel.sizePolicy().hasHeightForWidth()) - self.batteryChargeLimitLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.batteryChargeLimitLabel.setFont(font) - self.batteryChargeLimitLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.batteryChargeLimitLabel.setObjectName("batteryChargeLimitLabel") + self._setup_label(self.batteryChargeLimitLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="batteryChargeLimitLabel") self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.batteryChargeLimitLabel) self.batteryChargeLimitValue = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.batteryChargeLimitValue.sizePolicy().hasHeightForWidth()) - self.batteryChargeLimitValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.batteryChargeLimitValue.setFont(font) - self.batteryChargeLimitValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.batteryChargeLimitValue.setObjectName("batteryChargeLimitValue") + self._setup_label(self.batteryChargeLimitValue, font=self._create_font("TT Squares", 11), + object_name="batteryChargeLimitValue") self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.batteryChargeLimitValue) self.nitroModeLabel = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.nitroModeLabel.sizePolicy().hasHeightForWidth()) - self.nitroModeLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.nitroModeLabel.setFont(font) - self.nitroModeLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.nitroModeLabel.setObjectName("nitroModeLabel") + self._setup_label(self.nitroModeLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="nitroModeLabel") self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.nitroModeLabel) self.nitroModeValue = QtWidgets.QLabel(parent=self.status_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.nitroModeValue.sizePolicy().hasHeightForWidth()) - self.nitroModeValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.nitroModeValue.setFont(font) - self.nitroModeValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.nitroModeValue.setObjectName("nitroModeValue") + self._setup_label(self.nitroModeValue, font=self._create_font("TT Squares", 11), + object_name="nitroModeValue") self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.nitroModeValue) self.horizontalLayout_3.addWidget(self.status_box) self.predMode = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.predMode.sizePolicy().hasHeightForWidth()) - self.predMode.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.predMode.setFont(font) - self.predMode.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.predMode.setObjectName("predMode") + self._setup_group_box(self.predMode, QtWidgets.QSizePolicy.Policy.Maximum, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "predMode") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.predMode) self.verticalLayout_2.setContentsMargins(4, 10, 4, 4) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.quietModeCB = QtWidgets.QRadioButton(parent=self.predMode) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.quietModeCB.sizePolicy().hasHeightForWidth()) - self.quietModeCB.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.quietModeCB.setFont(font) - self.quietModeCB.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.quietModeCB.setObjectName("quietModeCB") + self._setup_radio_button(self.quietModeCB, font=self._create_font("TT Squares", 11), + object_name="quietModeCB") self.verticalLayout_2.addWidget(self.quietModeCB) self.defaultModeCB = QtWidgets.QRadioButton(parent=self.predMode) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.defaultModeCB.sizePolicy().hasHeightForWidth()) - self.defaultModeCB.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.defaultModeCB.setFont(font) - self.defaultModeCB.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.defaultModeCB.setChecked(True) - self.defaultModeCB.setObjectName("defaultModeCB") + self._setup_radio_button(self.defaultModeCB, font=self._create_font("TT Squares", 11), + object_name="defaultModeCB", checked=True) self.verticalLayout_2.addWidget(self.defaultModeCB) self.extremeModeCB = QtWidgets.QRadioButton(parent=self.predMode) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.extremeModeCB.sizePolicy().hasHeightForWidth()) - self.extremeModeCB.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.extremeModeCB.setFont(font) - self.extremeModeCB.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.extremeModeCB.setObjectName("extremeModeCB") + self._setup_radio_button(self.extremeModeCB, font=self._create_font("TT Squares", 11), + object_name="extremeModeCB") self.verticalLayout_2.addWidget(self.extremeModeCB) self.horizontalLayout_3.addWidget(self.predMode) self.verticalLayout_7.addLayout(self.horizontalLayout_3) @@ -302,346 +386,120 @@ def setupUi(self, NitroSense): self.horizontalLayout_7.setSpacing(8) self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.temp_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.temp_box.sizePolicy().hasHeightForWidth()) - self.temp_box.setSizePolicy(sizePolicy) - self.temp_box.setMaximumSize(QtCore.QSize(16777215, 16777215)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.temp_box.setFont(font) - self.temp_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.temp_box.setObjectName("temp_box") + self._setup_group_box(self.temp_box, QtWidgets.QSizePolicy.Policy.Minimum, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "temp_box") self.gridLayout_2 = QtWidgets.QGridLayout(self.temp_box) self.gridLayout_2.setContentsMargins(-1, 10, -1, -1) self.gridLayout_2.setSpacing(0) self.gridLayout_2.setObjectName("gridLayout_2") + self.cpuTempLabel = QtWidgets.QLabel(parent=self.temp_box) + self._setup_label(self.cpuTempLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="cpuTempLabel") + self.gridLayout_2.addWidget(self.cpuTempLabel, 0, 0, 1, 1) self.cpuTempValue = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpuTempValue.sizePolicy().hasHeightForWidth()) - self.cpuTempValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpuTempValue.setFont(font) - self.cpuTempValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpuTempValue.setObjectName("cpuTempValue") + self._setup_label(self.cpuTempValue, font=self._create_font("TT Squares", 11), + object_name="cpuTempValue") self.gridLayout_2.addWidget(self.cpuTempValue, 0, 1, 1, 1) + self.gpuTempLabel = QtWidgets.QLabel(parent=self.temp_box) + self._setup_label(self.gpuTempLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="gpuTempLabel") + self.gridLayout_2.addWidget(self.gpuTempLabel, 2, 0, 1, 1) self.gpuTempValue = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpuTempValue.sizePolicy().hasHeightForWidth()) - self.gpuTempValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpuTempValue.setFont(font) - self.gpuTempValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpuTempValue.setObjectName("gpuTempValue") + self._setup_label(self.gpuTempValue, font=self._create_font("TT Squares", 11), + object_name="gpuTempValue") self.gridLayout_2.addWidget(self.gpuTempValue, 2, 1, 1, 1) self.sysTempLabel = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sysTempLabel.sizePolicy().hasHeightForWidth()) - self.sysTempLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.sysTempLabel.setFont(font) - self.sysTempLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.sysTempLabel.setObjectName("sysTempLabel") + self._setup_label(self.sysTempLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="sysTempLabel") self.gridLayout_2.addWidget(self.sysTempLabel, 4, 0, 1, 1) self.sysTempValue = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sysTempValue.sizePolicy().hasHeightForWidth()) - self.sysTempValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.sysTempValue.setFont(font) - self.sysTempValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.sysTempValue.setObjectName("sysTempValue") + self._setup_label(self.sysTempValue, font=self._create_font("TT Squares", 11), + object_name="sysTempValue") self.gridLayout_2.addWidget(self.sysTempValue, 4, 1, 1, 1) - self.gpuTempLabel = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpuTempLabel.sizePolicy().hasHeightForWidth()) - self.gpuTempLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.gpuTempLabel.setFont(font) - self.gpuTempLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpuTempLabel.setObjectName("gpuTempLabel") - self.gridLayout_2.addWidget(self.gpuTempLabel, 2, 0, 1, 1) - self.cpuTempLabel = QtWidgets.QLabel(parent=self.temp_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpuTempLabel.sizePolicy().hasHeightForWidth()) - self.cpuTempLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.cpuTempLabel.setFont(font) - self.cpuTempLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpuTempLabel.setObjectName("cpuTempLabel") - self.gridLayout_2.addWidget(self.cpuTempLabel, 0, 0, 1, 1) self.horizontalLayout_7.addWidget(self.temp_box) self.fan_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.fan_box.sizePolicy().hasHeightForWidth()) - self.fan_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.fan_box.setFont(font) - self.fan_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.fan_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop) - self.fan_box.setObjectName("fan_box") + self._setup_group_box(self.fan_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "fan_box") self.gridLayout_6 = QtWidgets.QGridLayout(self.fan_box) self.gridLayout_6.setContentsMargins(-1, 10, 4, -1) self.gridLayout_6.setVerticalSpacing(0) self.gridLayout_6.setObjectName("gridLayout_6") - self.gpuFanSpeedValue = QtWidgets.QLabel(parent=self.fan_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpuFanSpeedValue.sizePolicy().hasHeightForWidth()) - self.gpuFanSpeedValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpuFanSpeedValue.setFont(font) - self.gpuFanSpeedValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpuFanSpeedValue.setObjectName("gpuFanSpeedValue") - self.gridLayout_6.addWidget(self.gpuFanSpeedValue, 2, 1, 1, 1) - self.gpuFanSpeedLabel = QtWidgets.QLabel(parent=self.fan_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpuFanSpeedLabel.sizePolicy().hasHeightForWidth()) - self.gpuFanSpeedLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.gpuFanSpeedLabel.setFont(font) - self.gpuFanSpeedLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpuFanSpeedLabel.setObjectName("gpuFanSpeedLabel") - self.gridLayout_6.addWidget(self.gpuFanSpeedLabel, 2, 0, 1, 1) self.cpuFanSpeedLabel = QtWidgets.QLabel(parent=self.fan_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpuFanSpeedLabel.sizePolicy().hasHeightForWidth()) - self.cpuFanSpeedLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - self.cpuFanSpeedLabel.setFont(font) - self.cpuFanSpeedLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpuFanSpeedLabel.setObjectName("cpuFanSpeedLabel") + self._setup_label(self.cpuFanSpeedLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="cpuFanSpeedLabel") self.gridLayout_6.addWidget(self.cpuFanSpeedLabel, 0, 0, 1, 1) self.cpuFanSpeedValue = QtWidgets.QLabel(parent=self.fan_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpuFanSpeedValue.sizePolicy().hasHeightForWidth()) - self.cpuFanSpeedValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpuFanSpeedValue.setFont(font) - self.cpuFanSpeedValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpuFanSpeedValue.setObjectName("cpuFanSpeedValue") + self._setup_label(self.cpuFanSpeedValue, font=self._create_font("TT Squares", 11), + object_name="cpuFanSpeedValue") self.gridLayout_6.addWidget(self.cpuFanSpeedValue, 0, 1, 1, 1) + self.gpuFanSpeedLabel = QtWidgets.QLabel(parent=self.fan_box) + self._setup_label(self.gpuFanSpeedLabel, font=self._create_font("TT Squares", 11, bold=True), + object_name="gpuFanSpeedLabel") + self.gridLayout_6.addWidget(self.gpuFanSpeedLabel, 2, 0, 1, 1) + self.gpuFanSpeedValue = QtWidgets.QLabel(parent=self.fan_box) + self._setup_label(self.gpuFanSpeedValue, font=self._create_font("TT Squares", 11), + object_name="gpuFanSpeedValue") + self.gridLayout_6.addWidget(self.gpuFanSpeedValue, 2, 1, 1, 1) self.horizontalLayout_7.addWidget(self.fan_box) self.KB_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.KB_box.sizePolicy().hasHeightForWidth()) - self.KB_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.KB_box.setFont(font) - self.KB_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.KB_box.setObjectName("KB_box") + self._setup_group_box(self.KB_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "KB_box") self.miscLayout = QtWidgets.QVBoxLayout(self.KB_box) self.miscLayout.setContentsMargins(-1, 10, -1, -1) self.miscLayout.setObjectName("miscLayout") self.KBTimerCB = QtWidgets.QCheckBox(parent=self.KB_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.KBTimerCB.sizePolicy().hasHeightForWidth()) - self.KBTimerCB.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.KBTimerCB.setFont(font) - self.KBTimerCB.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.KBTimerCB.setObjectName("KBTimerCB") + self._setup_checkbox(self.KBTimerCB, font=self._create_font("TT Squares", 11), + object_name="KBTimerCB") self.miscLayout.addWidget(self.KBTimerCB) self.usbChargingCB = QtWidgets.QCheckBox(parent=self.KB_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.usbChargingCB.sizePolicy().hasHeightForWidth()) - self.usbChargingCB.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.usbChargingCB.setFont(font) - self.usbChargingCB.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.usbChargingCB.setObjectName("usbChargingCB") + self._setup_checkbox(self.usbChargingCB, font=self._create_font("TT Squares", 11), + object_name="usbChargingCB") self.miscLayout.addWidget(self.usbChargingCB) self.chargeLimit = QtWidgets.QCheckBox(parent=self.KB_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.chargeLimit.sizePolicy().hasHeightForWidth()) - self.chargeLimit.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.chargeLimit.setFont(font) - self.chargeLimit.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.chargeLimit.setChecked(True) - self.chargeLimit.setObjectName("chargeLimit") + self._setup_checkbox(self.chargeLimit, font=self._create_font("TT Squares", 11), + object_name="chargeLimit", checked=True) self.miscLayout.addWidget(self.chargeLimit) self.horizontalLayout_7.addWidget(self.KB_box) self.verticalLayout_7.addLayout(self.horizontalLayout_7) self.undervolt_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.undervolt_box.sizePolicy().hasHeightForWidth()) - self.undervolt_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.undervolt_box.setFont(font) - self.undervolt_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.undervolt_box.setStyleSheet("") - self.undervolt_box.setObjectName("undervolt_box") + self._setup_group_box(self.undervolt_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "undervolt_box") self.gridLayout_5 = QtWidgets.QGridLayout(self.undervolt_box) self.gridLayout_5.setContentsMargins(-1, 10, -1, -1) self.gridLayout_5.setObjectName("gridLayout_5") - self.voltageMinMaxValue = QtWidgets.QLabel(parent=self.undervolt_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.voltageMinMaxValue.sizePolicy().hasHeightForWidth()) - self.voltageMinMaxValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.voltageMinMaxValue.setFont(font) - self.voltageMinMaxValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.voltageMinMaxValue.setObjectName("voltageMinMaxValue") - self.gridLayout_5.addWidget(self.voltageMinMaxValue, 0, 3, 1, 1) - self.voltageMinMaxLabel = QtWidgets.QLabel(parent=self.undervolt_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.voltageMinMaxLabel.sizePolicy().hasHeightForWidth()) - self.voltageMinMaxLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.voltageMinMaxLabel.setFont(font) - self.voltageMinMaxLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.voltageMinMaxLabel.setObjectName("voltageMinMaxLabel") - self.gridLayout_5.addWidget(self.voltageMinMaxLabel, 0, 2, 1, 1) + self.voltageLabel = QtWidgets.QLabel(parent=self.undervolt_box) + self._setup_label(self.voltageLabel, font=self._create_font("TT Squares", 11), + object_name="voltageLabel") + self.gridLayout_5.addWidget(self.voltageLabel, 0, 0, 1, 1) self.voltageValue = QtWidgets.QLabel(parent=self.undervolt_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.voltageValue.sizePolicy().hasHeightForWidth()) - self.voltageValue.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.voltageValue.setFont(font) - self.voltageValue.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.voltageValue.setObjectName("voltageValue") + self._setup_label(self.voltageValue, font=self._create_font("TT Squares", 11), + object_name="voltageValue") self.gridLayout_5.addWidget(self.voltageValue, 0, 1, 1, 1) + self.voltageMinMaxLabel = QtWidgets.QLabel(parent=self.undervolt_box) + self._setup_label(self.voltageMinMaxLabel, font=self._create_font("TT Squares", 11), + object_name="voltageMinMaxLabel") + self.gridLayout_5.addWidget(self.voltageMinMaxLabel, 0, 2, 1, 1) + self.voltageMinMaxValue = QtWidgets.QLabel(parent=self.undervolt_box) + self._setup_label(self.voltageMinMaxValue, font=self._create_font("TT Squares", 11), + object_name="voltageMinMaxValue") + self.gridLayout_5.addWidget(self.voltageMinMaxValue, 0, 3, 1, 1) self.undervoltStatus = QtWidgets.QTextBrowser(parent=self.undervolt_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.undervoltStatus.sizePolicy().hasHeightForWidth()) - self.undervoltStatus.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(8) - self.undervoltStatus.setFont(font) - self.undervoltStatus.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + self.undervoltStatus.setFont(self._create_font("TT Squares", 8)) self.undervoltStatus.setStyleSheet("background-color: rgb(25, 25, 25);") self.undervoltStatus.setObjectName("undervoltStatus") self.gridLayout_5.addWidget(self.undervoltStatus, 4, 0, 1, 4) - self.voltageLabel = QtWidgets.QLabel(parent=self.undervolt_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.voltageLabel.sizePolicy().hasHeightForWidth()) - self.voltageLabel.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.voltageLabel.setFont(font) - self.voltageLabel.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.voltageLabel.setObjectName("voltageLabel") - self.gridLayout_5.addWidget(self.voltageLabel, 0, 0, 1, 1) - self.voltageLabel.raise_() - self.voltageMinMaxLabel.raise_() - self.voltageValue.raise_() - self.voltageMinMaxValue.raise_() - self.undervoltStatus.raise_() self.verticalLayout_7.addWidget(self.undervolt_box) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setContentsMargins(0, -1, -1, -1) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.cpu_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpu_box.sizePolicy().hasHeightForWidth()) - self.cpu_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.cpu_box.setFont(font) - self.cpu_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpu_box.setObjectName("cpu_box") + self._setup_group_box(self.cpu_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "cpu_box") self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.cpu_box) self.horizontalLayout_4.setContentsMargins(-1, 10, -1, -1) self.horizontalLayout_4.setObjectName("horizontalLayout_4") @@ -649,67 +507,22 @@ def setupUi(self, NitroSense): self.verticalLayout_4.setContentsMargins(-1, 50, -1, 50) self.verticalLayout_4.setObjectName("verticalLayout_4") self.cpu_auto = QtWidgets.QRadioButton(parent=self.cpu_box) - self.cpu_auto.setEnabled(True) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpu_auto.sizePolicy().hasHeightForWidth()) - self.cpu_auto.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpu_auto.setFont(font) - self.cpu_auto.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpu_auto.setChecked(True) - self.cpu_auto.setObjectName("cpu_auto") + self._setup_radio_button(self.cpu_auto, font=self._create_font("TT Squares", 11), + object_name="cpu_auto", checked=True) self.verticalLayout_4.addWidget(self.cpu_auto) self.cpu_manual = QtWidgets.QRadioButton(parent=self.cpu_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpu_manual.sizePolicy().hasHeightForWidth()) - self.cpu_manual.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpu_manual.setFont(font) - self.cpu_manual.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpu_manual.setObjectName("cpu_manual") + self._setup_radio_button(self.cpu_manual, font=self._create_font("TT Squares", 11), + object_name="cpu_manual") self.verticalLayout_4.addWidget(self.cpu_manual) self.cpu_turbo = QtWidgets.QRadioButton(parent=self.cpu_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpu_turbo.sizePolicy().hasHeightForWidth()) - self.cpu_turbo.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpu_turbo.setFont(font) - self.cpu_turbo.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpu_turbo.setObjectName("cpu_turbo") + self._setup_radio_button(self.cpu_turbo, font=self._create_font("TT Squares", 11), + object_name="cpu_turbo") self.verticalLayout_4.addWidget(self.cpu_turbo) self.horizontalLayout_4.addLayout(self.verticalLayout_4) self.cpuManualSlider = QtWidgets.QSlider(parent=self.cpu_box) - self.cpuManualSlider.setEnabled(False) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cpuManualSlider.sizePolicy().hasHeightForWidth()) - self.cpuManualSlider.setSizePolicy(sizePolicy) - self.cpuManualSlider.setMaximumSize(QtCore.QSize(16777215, 180)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.cpuManualSlider.setFont(font) - self.cpuManualSlider.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.cpuManualSlider.setMaximum(20) - self.cpuManualSlider.setProperty("value", 20) - self.cpuManualSlider.setTracking(True) - self.cpuManualSlider.setOrientation(QtCore.Qt.Orientation.Vertical) - self.cpuManualSlider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove) - self.cpuManualSlider.setTickInterval(1) - self.cpuManualSlider.setObjectName("cpuManualSlider") + self._setup_slider(self.cpuManualSlider, font=self._create_font("TT Squares", 11), + object_name="cpuManualSlider", maximum=20, value=20, + vertical=True, enabled=False) self.horizontalLayout_4.addWidget(self.cpuManualSlider) self.horizontalLayout_2.addWidget(self.cpu_box) self.verticalLayout_3 = QtWidgets.QVBoxLayout() @@ -719,120 +532,55 @@ def setupUi(self, NitroSense): self.verticalLayout_6 = QtWidgets.QVBoxLayout() self.verticalLayout_6.setObjectName("verticalLayout_6") self.undervolt_dropdown = QtWidgets.QComboBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.undervolt_dropdown.sizePolicy().hasHeightForWidth()) - self.undervolt_dropdown.setSizePolicy(sizePolicy) - self.undervolt_dropdown.setMaximumSize(QtCore.QSize(200, 30)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.undervolt_dropdown.setFont(font) - self.undervolt_dropdown.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.undervolt_dropdown.setStyleSheet("") - self.undervolt_dropdown.setIconSize(QtCore.QSize(16, 16)) - self.undervolt_dropdown.setObjectName("undervolt_dropdown") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") - self.undervolt_dropdown.addItem("") + self._setup_combobox(self.undervolt_dropdown, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Maximum, + self._create_font("TT Squares", 11), + object_name="undervolt_dropdown", max_size=(200, 30)) + self.undervolt_dropdown.addItem("0mV") + self.undervolt_dropdown.addItem("-100mV") + self.undervolt_dropdown.addItem("-200mV") + self.undervolt_dropdown.addItem("-300mV") + self.undervolt_dropdown.addItem("-400mV") + self.undervolt_dropdown.addItem("-500mV") + self.undervolt_dropdown.addItem("-600mV") + self.undervolt_dropdown.addItem("-700mV") self.verticalLayout_6.addWidget(self.undervolt_dropdown) self.undervolt_button = QtWidgets.QPushButton(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.undervolt_button.sizePolicy().hasHeightForWidth()) - self.undervolt_button.setSizePolicy(sizePolicy) - self.undervolt_button.setMaximumSize(QtCore.QSize(200, 30)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.undervolt_button.setFont(font) - self.undervolt_button.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.undervolt_button.setStyleSheet("") - self.undervolt_button.setObjectName("undervolt_button") + self._setup_pushbutton(self.undervolt_button, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Maximum, + self._create_font("TT Squares", 11), + object_name="undervolt_button", max_size=(200, 30)) self.verticalLayout_6.addWidget(self.undervolt_button) self.verticalLayout_3.addLayout(self.verticalLayout_6) self.global_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.global_box.sizePolicy().hasHeightForWidth()) - self.global_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.global_box.setFont(font) - self.global_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.global_box.setObjectName("global_box") + self._setup_group_box(self.global_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "global_box") self.globalLayout = QtWidgets.QVBoxLayout(self.global_box) self.globalLayout.setContentsMargins(-1, 10, -1, -1) self.globalLayout.setSpacing(2) self.globalLayout.setObjectName("globalLayout") self.global_auto = QtWidgets.QRadioButton(parent=self.global_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.global_auto.sizePolicy().hasHeightForWidth()) - self.global_auto.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.global_auto.setFont(font) - self.global_auto.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.global_auto.setChecked(True) - self.global_auto.setObjectName("global_auto") + self._setup_radio_button(self.global_auto, font=self._create_font("TT Squares", 11), + object_name="global_auto", checked=True) self.globalLayout.addWidget(self.global_auto) self.global_turbo = QtWidgets.QRadioButton(parent=self.global_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.global_turbo.sizePolicy().hasHeightForWidth()) - self.global_turbo.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.global_turbo.setFont(font) - self.global_turbo.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.global_turbo.setObjectName("global_turbo") + self._setup_radio_button(self.global_turbo, font=self._create_font("TT Squares", 11), + object_name="global_turbo") self.globalLayout.addWidget(self.global_turbo) self.verticalLayout_3.addWidget(self.global_box) self.exit_button = QtWidgets.QPushButton(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.exit_button.sizePolicy().hasHeightForWidth()) - self.exit_button.setSizePolicy(sizePolicy) + self._apply_size_policy(self.exit_button, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Maximum) self.exit_button.setMaximumSize(QtCore.QSize(16777215, 30)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.exit_button.setFont(font) - self.exit_button.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) + self.exit_button.setFont(self._create_font("TT Squares", 11)) self.exit_button.setObjectName("exit_button") self.verticalLayout_3.addWidget(self.exit_button) self.horizontalLayout_2.addLayout(self.verticalLayout_3) self.gpu_box = QtWidgets.QGroupBox(parent=self.tab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpu_box.sizePolicy().hasHeightForWidth()) - self.gpu_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - font.setBold(True) - font.setItalic(False) - self.gpu_box.setFont(font) - self.gpu_box.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpu_box.setObjectName("gpu_box") + self._setup_group_box(self.gpu_box, QtWidgets.QSizePolicy.Policy.Preferred, + QtWidgets.QSizePolicy.Policy.Preferred, + self._create_font("TT Squares", 11, bold=True), "gpu_box") self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.gpu_box) self.horizontalLayout_5.setContentsMargins(-1, 10, -1, -1) self.horizontalLayout_5.setSpacing(4) @@ -842,91 +590,37 @@ def setupUi(self, NitroSense): self.verticalLayout_5.setSpacing(0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.gpu_auto = QtWidgets.QRadioButton(parent=self.gpu_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpu_auto.sizePolicy().hasHeightForWidth()) - self.gpu_auto.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpu_auto.setFont(font) - self.gpu_auto.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpu_auto.setChecked(True) - self.gpu_auto.setObjectName("gpu_auto") + self._setup_radio_button(self.gpu_auto, font=self._create_font("TT Squares", 11), + object_name="gpu_auto", checked=True) self.verticalLayout_5.addWidget(self.gpu_auto) self.gpu_manual = QtWidgets.QRadioButton(parent=self.gpu_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpu_manual.sizePolicy().hasHeightForWidth()) - self.gpu_manual.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpu_manual.setFont(font) - self.gpu_manual.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpu_manual.setObjectName("gpu_manual") + self._setup_radio_button(self.gpu_manual, font=self._create_font("TT Squares", 11), + object_name="gpu_manual") self.verticalLayout_5.addWidget(self.gpu_manual) self.gpu_turbo = QtWidgets.QRadioButton(parent=self.gpu_box) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpu_turbo.sizePolicy().hasHeightForWidth()) - self.gpu_turbo.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpu_turbo.setFont(font) - self.gpu_turbo.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpu_turbo.setObjectName("gpu_turbo") + self._setup_radio_button(self.gpu_turbo, font=self._create_font("TT Squares", 11), + object_name="gpu_turbo") self.verticalLayout_5.addWidget(self.gpu_turbo) self.horizontalLayout_5.addLayout(self.verticalLayout_5) self.gpuManualSlider = QtWidgets.QSlider(parent=self.gpu_box) - self.gpuManualSlider.setEnabled(False) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gpuManualSlider.sizePolicy().hasHeightForWidth()) - self.gpuManualSlider.setSizePolicy(sizePolicy) - self.gpuManualSlider.setMaximumSize(QtCore.QSize(16777215, 180)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(11) - self.gpuManualSlider.setFont(font) - self.gpuManualSlider.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)) - self.gpuManualSlider.setMaximum(20) - self.gpuManualSlider.setProperty("value", 20) - self.gpuManualSlider.setTracking(True) - self.gpuManualSlider.setOrientation(QtCore.Qt.Orientation.Vertical) - self.gpuManualSlider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove) - self.gpuManualSlider.setTickInterval(1) - self.gpuManualSlider.setObjectName("gpuManualSlider") + self._setup_slider(self.gpuManualSlider, font=self._create_font("TT Squares", 11), + object_name="gpuManualSlider", maximum=20, value=20, + vertical=True, enabled=False) self.horizontalLayout_5.addWidget(self.gpuManualSlider) self.horizontalLayout_2.addWidget(self.gpu_box) - spacerItem = QtWidgets.QSpacerItem(0, 266, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Maximum) - self.horizontalLayout_2.addItem(spacerItem) + spacer_item = QtWidgets.QSpacerItem(0, 266, QtWidgets.QSizePolicy.Policy.Minimum, + QtWidgets.QSizePolicy.Policy.Maximum) + self.horizontalLayout_2.addItem(spacer_item) self.verticalLayout_7.addLayout(self.horizontalLayout_2) self.verticalLayout_9.addLayout(self.verticalLayout_7) self.fan_control_tab.addTab(self.tab, "") self.keyboard_tab = QtWidgets.QWidget() - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.keyboard_tab.sizePolicy().hasHeightForWidth()) - self.keyboard_tab.setSizePolicy(sizePolicy) + self.keyboard_tab.setObjectName("keyboard_tab") self.keyboard_tab.setMinimumSize(QtCore.QSize(480, 680)) self.keyboard_tab.setMaximumSize(QtCore.QSize(480, 680)) - self.keyboard_tab.setStyleSheet("") - self.keyboard_tab.setObjectName("keyboard_tab") self.keyboard_box = QtWidgets.QGroupBox(parent=self.keyboard_tab) self.keyboard_box.setGeometry(QtCore.QRect(4, 4, 461, 631)) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - font.setBold(True) - font.setItalic(False) - self.keyboard_box.setFont(font) + self.keyboard_box.setFont(self._create_font("TT Squares", 12, bold=True)) self.keyboard_box.setObjectName("keyboard_box") self.keyboardBoxLayout = QtWidgets.QVBoxLayout(self.keyboard_box) self.keyboardBoxLayout.setObjectName("keyboardBoxLayout") @@ -934,136 +628,94 @@ def setupUi(self, NitroSense): self.verticalLayout_8.setContentsMargins(-1, 0, -1, 0) self.verticalLayout_8.setObjectName("verticalLayout_8") self.formLayout = QtWidgets.QFormLayout() - self.formLayout.setLabelAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter) - self.formLayout.setFormAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop) + self.formLayout.setLabelAlignment(QtCore.Qt.AlignmentFlag.AlignLeading | + QtCore.Qt.AlignmentFlag.AlignLeft | + QtCore.Qt.AlignmentFlag.AlignVCenter) self.formLayout.setContentsMargins(8, 8, 8, -1) self.formLayout.setHorizontalSpacing(40) self.formLayout.setVerticalSpacing(4) self.formLayout.setObjectName("formLayout") self.mode_label = QtWidgets.QLabel(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.mode_label.setFont(font) + self.mode_label.setFont(self._create_font("TT Squares", 12)) self.mode_label.setObjectName("mode_label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.mode_label) self.mode_combo = QtWidgets.QComboBox(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.mode_combo.setFont(font) + self.mode_combo.setFont(self._create_font("TT Squares", 12)) self.mode_combo.setObjectName("mode_combo") - self.mode_combo.addItem("") - self.mode_combo.addItem("") - self.mode_combo.addItem("") - self.mode_combo.addItem("") - self.mode_combo.addItem("") - self.mode_combo.addItem("") + self.mode_combo.addItem("Static") + self.mode_combo.addItem("Breath") + self.mode_combo.addItem("Neon") + self.mode_combo.addItem("Wave") + self.mode_combo.addItem("Shifting") + self.mode_combo.addItem("Zoom") self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.mode_combo) self.zone_label = QtWidgets.QLabel(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.zone_label.setFont(font) + self.zone_label.setFont(self._create_font("TT Squares", 12)) self.zone_label.setObjectName("zone_label") self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.zone_label) self.zone_combo = QtWidgets.QComboBox(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.zone_combo.setFont(font) + self.zone_combo.setFont(self._create_font("TT Squares", 12)) self.zone_combo.setObjectName("zone_combo") - self.zone_combo.addItem("") - self.zone_combo.addItem("") - self.zone_combo.addItem("") - self.zone_combo.addItem("") - self.zone_combo.addItem("") + self.zone_combo.addItem("all") + self.zone_combo.addItem("1") + self.zone_combo.addItem("2") + self.zone_combo.addItem("3") + self.zone_combo.addItem("4") self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.zone_combo) self.speed_label = QtWidgets.QLabel(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.speed_label.setFont(font) + self.speed_label.setFont(self._create_font("TT Squares", 12)) self.speed_label.setObjectName("speed_label") self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.speed_label) self.speed_spin = QtWidgets.QSlider(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.speed_spin.setFont(font) + self.speed_spin.setFont(self._create_font("TT Squares", 12)) self.speed_spin.setMaximum(9) self.speed_spin.setOrientation(QtCore.Qt.Orientation.Horizontal) self.speed_spin.setTickInterval(1) self.speed_spin.setObjectName("speed_spin") self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.speed_spin) self.brightness_label = QtWidgets.QLabel(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.brightness_label.setFont(font) + self.brightness_label.setFont(self._create_font("TT Squares", 12)) self.brightness_label.setObjectName("brightness_label") self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.brightness_label) self.brightness_spin = QtWidgets.QSlider(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.brightness_spin.setFont(font) + self.brightness_spin.setFont(self._create_font("TT Squares", 12)) self.brightness_spin.setMaximum(100) self.brightness_spin.setOrientation(QtCore.Qt.Orientation.Horizontal) self.brightness_spin.setTickInterval(1) self.brightness_spin.setObjectName("brightness_spin") self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.brightness_spin) self.direction_label = QtWidgets.QLabel(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.direction_label.setFont(font) + self.direction_label.setFont(self._create_font("TT Squares", 12)) self.direction_label.setObjectName("direction_label") self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.LabelRole, self.direction_label) self.direction_combo = QtWidgets.QComboBox(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.direction_combo.setFont(font) + self.direction_combo.setFont(self._create_font("TT Squares", 12)) self.direction_combo.setObjectName("direction_combo") - self.direction_combo.addItem("") - self.direction_combo.addItem("") + self.direction_combo.addItem("Left to right") + self.direction_combo.addItem("Right to left") self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.direction_combo) self.color_button = QtWidgets.QPushButton(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.color_button.setFont(font) + self.color_button.setFont(self._create_font("TT Squares", 12)) self.color_button.setObjectName("color_button") self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.LabelRole, self.color_button) self.verticalLayout_8.addLayout(self.formLayout) self.apply_button = QtWidgets.QPushButton(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.apply_button.setFont(font) + self.apply_button.setFont(self._create_font("TT Squares", 12)) self.apply_button.setObjectName("apply_button") self.verticalLayout_8.addWidget(self.apply_button) self.save_button = QtWidgets.QPushButton(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.save_button.setFont(font) + self.save_button.setFont(self._create_font("TT Squares", 12)) self.save_button.setObjectName("save_button") self.verticalLayout_8.addWidget(self.save_button) self.load_button = QtWidgets.QPushButton(parent=self.keyboard_box) - font = QtGui.QFont() - font.setFamily("TT Squares") - font.setPointSize(12) - self.load_button.setFont(font) + self.load_button.setFont(self._create_font("TT Squares", 12)) self.load_button.setObjectName("load_button") self.verticalLayout_8.addWidget(self.load_button) self.keyboardBoxLayout.addLayout(self.verticalLayout_8) self.fan_control_tab.addTab(self.keyboard_tab, "") self.verticalLayout.addWidget(self.fan_control_tab) - self.retranslateUi(NitroSense) - self.fan_control_tab.setCurrentIndex(1) + self.fan_control_tab.setCurrentIndex(0) # 0 = Home QtCore.QMetaObject.connectSlotsByName(NitroSense) def retranslateUi(self, NitroSense): @@ -1083,26 +735,26 @@ def retranslateUi(self, NitroSense): self.defaultModeCB.setText(_translate("NitroSense", "Default")) self.extremeModeCB.setText(_translate("NitroSense", "Extreme")) self.temp_box.setTitle(_translate("NitroSense", "Temps")) + self.cpuTempLabel.setText(_translate("NitroSense", "CPU:")) self.cpuTempValue.setText(_translate("NitroSense", "100°")) + self.gpuTempLabel.setText(_translate("NitroSense", "GPU:")) self.gpuTempValue.setText(_translate("NitroSense", "100°")) self.sysTempLabel.setText(_translate("NitroSense", "SYS:")) self.sysTempValue.setText(_translate("NitroSense", "100°")) - self.gpuTempLabel.setText(_translate("NitroSense", "GPU:")) - self.cpuTempLabel.setText(_translate("NitroSense", "CPU:")) self.fan_box.setTitle(_translate("NitroSense", "Fan RPM")) - self.gpuFanSpeedValue.setText(_translate("NitroSense", "5660 RPM")) - self.gpuFanSpeedLabel.setText(_translate("NitroSense", "GPU:")) self.cpuFanSpeedLabel.setText(_translate("NitroSense", "CPU:")) self.cpuFanSpeedValue.setText(_translate("NitroSense", "5660 RPM")) + self.gpuFanSpeedLabel.setText(_translate("NitroSense", "GPU:")) + self.gpuFanSpeedValue.setText(_translate("NitroSense", "5660 RPM")) self.KB_box.setTitle(_translate("NitroSense", "Misc")) self.KBTimerCB.setText(_translate("NitroSense", "KB Timeout")) self.usbChargingCB.setText(_translate("NitroSense", "USB Charging")) self.chargeLimit.setText(_translate("NitroSense", "Charge Limit")) self.undervolt_box.setTitle(_translate("NitroSense", "Undervolt")) - self.voltageMinMaxValue.setText(_translate("NitroSense", "0.00")) - self.voltageMinMaxLabel.setText(_translate("NitroSense", "Min / Max:")) - self.voltageValue.setText(_translate("NitroSense", "0.00")) self.voltageLabel.setText(_translate("NitroSense", "Voltage:")) + self.voltageValue.setText(_translate("NitroSense", "0.00")) + self.voltageMinMaxLabel.setText(_translate("NitroSense", "Min / Max:")) + self.voltageMinMaxValue.setText(_translate("NitroSense", "0.00")) self.cpu_box.setTitle(_translate("NitroSense", "CPU Fan")) self.cpu_auto.setText(_translate("NitroSense", "Auto")) self.cpu_manual.setText(_translate("NitroSense", "Manual")) @@ -1124,7 +776,8 @@ def retranslateUi(self, NitroSense): self.gpu_auto.setText(_translate("NitroSense", "Auto")) self.gpu_manual.setText(_translate("NitroSense", "Manual")) self.gpu_turbo.setText(_translate("NitroSense", "Max speed")) - self.fan_control_tab.setTabText(self.fan_control_tab.indexOf(self.tab), _translate("NitroSense", "Home")) + self.fan_control_tab.setTabText(self.fan_control_tab.indexOf(self.tab), + _translate("NitroSense", "Home")) self.keyboard_box.setTitle(_translate("NitroSense", "Keyboard")) self.mode_label.setText(_translate("NitroSense", "Mode:")) self.mode_combo.setItemText(0, _translate("NitroSense", "Static")) @@ -1148,4 +801,5 @@ def retranslateUi(self, NitroSense): self.apply_button.setText(_translate("NitroSense", "Apply")) self.save_button.setText(_translate("NitroSense", "Save")) self.load_button.setText(_translate("NitroSense", "Load")) - self.fan_control_tab.setTabText(self.fan_control_tab.indexOf(self.keyboard_tab), _translate("NitroSense", "Keyboard")) + self.fan_control_tab.setTabText(self.fan_control_tab.indexOf(self.keyboard_tab), + _translate("NitroSense", "Keyboard")) \ No newline at end of file