Files
LiquidGUI/main.pyw
Dunestorm 160a52db66 LiquidGUI [1.1.0.0] DEV
- Code refactoring.
- Created main method on main file.
- Made MessageHander static
2023-08-20 12:38:17 +01:00

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()