From 65456aa5c61cf90b9fa362476c04dc766ec19d9a Mon Sep 17 00:00:00 2001 From: Dunestorm Date: Tue, 9 Jul 2024 22:00:56 +0100 Subject: [PATCH] LiquidGUI [1.1.0.0] Dev - Code cleanup & refactoring. - Platform specific code. --- globals.py | 3 +++ main.pyw | 37 ++++++++++++++++++++----------------- styles/Labels.py | 26 ++++++++++++++++++++++++++ styles/SubLabel.py | 9 --------- styles/SubLabelValue.py | 10 ---------- styles/__init__.py | 15 +++++++++++++++ 6 files changed, 64 insertions(+), 36 deletions(-) create mode 100644 globals.py create mode 100644 styles/Labels.py delete mode 100644 styles/SubLabel.py delete mode 100644 styles/SubLabelValue.py create mode 100644 styles/__init__.py diff --git a/globals.py b/globals.py new file mode 100644 index 0000000..9ebcf69 --- /dev/null +++ b/globals.py @@ -0,0 +1,3 @@ +import platform + +os_type = platform.system() \ No newline at end of file diff --git a/main.pyw b/main.pyw index 50bafe8..9bab045 100644 --- a/main.pyw +++ b/main.pyw @@ -1,29 +1,27 @@ +# Hard Dependencies. import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QProgressBar from PyQt6.QtCore import Qt, QTimer, QThreadPool from PyQt6.QtGui import QFont, QIcon from LiquidCTL_Helper import LiquidCTL_Helper +# Project Imports from MessageHandler import MessageHandler -import resources -from styles.SubLabel import SubLabel -from styles.SubLabelValue import SubLabelValue +from styles.Labels import * +import globals class MainWindow(QMainWindow): """ Main application window. """ def __init__(self): super(MainWindow, self).__init__() - self.setWindowTitle("LiquidGUI (v.1.1.0.0)") + self.setWindowTitle("LiquidGUI (v.1.1.0.0) DEV") self.setFixedSize(450, 385) self.lctl = LiquidCTL_Helper() - # Widgets ########################################## - self.lbl_device_name = QLabel(font=QFont("Calibre", - 14, - weight=QFont.Weight.Bold), - alignment=Qt.AlignmentFlag.AlignCenter) - + # Widgets ########################################## + self.lbl_device_name = MainLabel(None) + self.lbl_temp = SubLabel(value="💧 Liquid Temperature:") self.prg_temp = QProgressBar(textVisible=False, minimum=0, @@ -88,28 +86,33 @@ class MainWindow(QMainWindow): def main(): """ Initialize application and setup window parameters. """ + # Setup app and window. app = QApplication(sys.argv) icon = QIcon(":/icons/LiquidGUI.ico") app.setWindowIcon(icon) window = MainWindow() window.setWindowIcon(icon) - - # Show error and quit app if no devices are found + + # Show error and quit app if no devices are found. if window.lctl.TestConnectionState(): MessageHandler().ShowNoDevicesFoundError() sys.exit(1) - else: + + # Handle OS specific tweaks. + if globals.os_type == "Windows": + window.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) + try: + import resources import win32mica win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK) - window.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) except ImportError as e: print(f"ERROR: Unable to import {e.name}") - window.show() - app.setStyle("Breeze") - app.exec() + # Finally run the application. + window.show() + app.exec() if __name__ == "__main__": diff --git a/styles/Labels.py b/styles/Labels.py new file mode 100644 index 0000000..be2993d --- /dev/null +++ b/styles/Labels.py @@ -0,0 +1,26 @@ +from PyQt6.QtWidgets import QLabel +from PyQt6.QtGui import QFont +from PyQt6.QtCore import Qt +import styles + +class MainLabel(QLabel): + """ Formatting for the main label. """ + def __init__(self, value): + super().__init__() + self.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.setFont(QFont(styles.sublabel_font, 16, weight=QFont.Weight.Bold)) + self.setText(value) + +class SubLabel(QLabel): + """ Formatting for sub-labels. """ + def __init__(self, value): + super().__init__() + self.setFont(QFont(styles.mainlabel_font, 10, weight=QFont.Weight.Bold)) + self.setText(value) + +class SubLabelValue(QLabel): + """ Formatting for values. """ + def __init__(self): + super().__init__() + self.setAlignment(Qt.AlignmentFlag.AlignRight) + self.setFont(QFont(styles.sublabelvalue_font, 8)) \ No newline at end of file diff --git a/styles/SubLabel.py b/styles/SubLabel.py deleted file mode 100644 index d2f00f8..0000000 --- a/styles/SubLabel.py +++ /dev/null @@ -1,9 +0,0 @@ -from PyQt6.QtWidgets import QLabel -from PyQt6.QtGui import QFont - -class SubLabel(QLabel): - """ Formatting for sub-labels. """ - def __init__(self, value): - super().__init__() - self.setFont(QFont("Calibre", 10, weight=QFont.Weight.Bold)) - self.setText(value) \ No newline at end of file diff --git a/styles/SubLabelValue.py b/styles/SubLabelValue.py deleted file mode 100644 index 9e73d19..0000000 --- a/styles/SubLabelValue.py +++ /dev/null @@ -1,10 +0,0 @@ -from PyQt6.QtWidgets import QLabel -from PyQt6.QtGui import QFont -from PyQt6.QtCore import Qt - -class SubLabelValue(QLabel): - """ Formatting for values. """ - def __init__(self): - super().__init__() - self.setAlignment(Qt.AlignmentFlag.AlignRight) - self.setFont(QFont("Cascadia Code", 8)) \ No newline at end of file diff --git a/styles/__init__.py b/styles/__init__.py new file mode 100644 index 0000000..be123fe --- /dev/null +++ b/styles/__init__.py @@ -0,0 +1,15 @@ +from PyQt6.QtGui import QFont +import globals + +mainlabel_font = None +sublabel_font = None +sublabelvalue_font = None + +if globals.os_type == "Windows": + sublabelvalue_font = "Cascadia Code" + sublabel_font = "Calibre" + mainlabel_font = "Calibre" +elif globals.os_type == "Linux": + sublabelvalue_font = "Liberation Mono" + sublabel_font = "Cantarell" + mainlabel_font = "Cantarell" \ No newline at end of file