- Code refactoring. - Created main method on main file. - Made MessageHander static
100 lines
3.8 KiB
Python
100 lines
3.8 KiB
Python
import sys
|
|
import qdarktheme
|
|
import win32mica
|
|
import resources
|
|
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QProgressBar, QPushButton
|
|
from PySide6.QtCore import Qt, QTimer, QThreadPool
|
|
from PySide6.QtGui import QFont, QIcon
|
|
from LiquidCTL_Helper import LiquidCTL_Helper
|
|
from MessageHandler import MessageHandler
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self, lctl):
|
|
super(MainWindow, self).__init__()
|
|
self.setWindowTitle("LiquidGUI (v.1.1.0.0)")
|
|
self.setFixedSize(450, 350)
|
|
self.setWindowFlags(Qt.WindowType.Dialog)
|
|
|
|
self.lctl = lctl
|
|
|
|
# Widgets ##########################################
|
|
self.lbl_device_name = QLabel(font=QFont("Calibri", 16, weight=QFont.Weight.Bold),
|
|
alignment=Qt.AlignmentFlag.AlignCenter)
|
|
self.lbl_temp = QLabel("Liquid Temperature:")
|
|
self.prg_temp = QProgressBar(format="%v°C",
|
|
minimum=0,
|
|
maximum=50)
|
|
self.lbl_fanSpeed = QLabel("Fan Speed:")
|
|
self.prg_fanSpeed = QProgressBar(format="%v rpm",
|
|
minimum=520,
|
|
maximum=1700)
|
|
self.lbl_pumpSpeed = QLabel("Pump Speed:")
|
|
self.prg_pumpSpeed = QProgressBar(format="%v rpm",
|
|
minimum=1900,
|
|
maximum=2700)
|
|
self.btn_maxFanSpeed = QPushButton(text="Max Fan Speed")
|
|
self.btn_maxFanSpeed.clicked.connect(self.max_fan_speed)
|
|
self.lbl_fwVers = QLabel(alignment=Qt.AlignmentFlag.AlignRight)
|
|
|
|
|
|
# Layout ##########################################
|
|
widget = QWidget(self)
|
|
layout = QVBoxLayout(widget)
|
|
layout.addWidget(self.lbl_device_name)
|
|
layout.addWidget(self.lbl_temp)
|
|
layout.addWidget(self.prg_temp)
|
|
layout.addWidget(self.lbl_fanSpeed)
|
|
layout.addWidget(self.prg_fanSpeed)
|
|
layout.addWidget(self.lbl_pumpSpeed)
|
|
layout.addWidget(self.prg_pumpSpeed)
|
|
layout.addWidget(self.lbl_fwVers)
|
|
layout.addWidget(self.btn_maxFanSpeed)
|
|
layout.setSpacing(10)
|
|
|
|
self.setLayout(layout)
|
|
self.setCentralWidget(widget)
|
|
self.setContentsMargins(40, 20, 40, 20)
|
|
|
|
# Threading #######################################
|
|
self.thread_manager = QThreadPool()
|
|
|
|
self.timer = QTimer()
|
|
self.timer.setInterval(1000)
|
|
self.timer.timeout.connect(lambda: self.thread_manager.start(self.lctl.Update))
|
|
self.timer.timeout.connect(self.update_widgets)
|
|
self.timer.start()
|
|
|
|
def update_widgets(self):
|
|
self.lbl_device_name.setText(self.lctl.device_name)
|
|
self.prg_temp.setValue(self.lctl.device_temp)
|
|
self.prg_fanSpeed.setValue(self.lctl.device_fanSpeed)
|
|
self.prg_pumpSpeed.setValue(self.lctl.device_pumpSpeed)
|
|
if self.lctl.device_fwVers != None:
|
|
self.lbl_fwVers.setText(f"Firmware: v{self.lctl.device_fwVers}")
|
|
|
|
def max_fan_speed(self):
|
|
self.lctl.SetFanSpeed(100)
|
|
|
|
|
|
def main():
|
|
app = QApplication(sys.argv)
|
|
icon = QIcon(":/icons/LiquidGUI.ico")
|
|
app.setWindowIcon(icon)
|
|
|
|
window = MainWindow(LiquidCTL_Helper())
|
|
window.setWindowIcon(icon)
|
|
window.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
|
|
|
qdarktheme.setup_theme("dark", custom_colors={"background": "#00000000"})
|
|
win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK)
|
|
|
|
# Show error and quit app if no devices are found
|
|
if window.lctl.TestConnectionState() == True:
|
|
MessageHandler.ShowNoDevicesFoundError()
|
|
sys.exit(1)
|
|
else:
|
|
window.show()
|
|
app.exec()
|
|
|
|
if __name__ == "__main__":
|
|
main() |