import os import sys from PyQt6.QtCore import Qt from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QHBoxLayout from src.version import * class AboutDialog(QDialog): def __init__(self): super().__init__() self.setWindowTitle(f"About {APP_NAME}") # Create the layout layout = QVBoxLayout() # App Icon icon_name = 'Server.png' # todo: temp icon - replace with final later icon_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'resources', icon_name) icon_label = QLabel(self) icon_pixmap = QPixmap(icon_path) icon_label.setPixmap(icon_pixmap) icon_layout = QHBoxLayout() icon_layout.addStretch() icon_layout.addWidget(icon_label) icon_layout.addStretch() layout.addLayout(icon_layout) # Application name name_label = QLabel(f"

{APP_NAME}

") layout.addWidget(name_label) # Description description_label = QLabel(APP_DESCRIPTION) layout.addWidget(description_label) # Version version_label = QLabel(f"Version: {APP_VERSION}") layout.addWidget(version_label) # Contributors contributors_label = QLabel(f"Copyright © {APP_COPYRIGHT_YEAR} {APP_AUTHOR}") layout.addWidget(contributors_label) # License license_label = QLabel(f"Released under {APP_LICENSE}") layout.addWidget(license_label) # Add an "OK" button to close the dialog button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok) button_box.accepted.connect(self.accept) layout.addWidget(button_box) # Set the layout for the dialog self.setLayout(layout) # Make the dialog non-resizable self.setWindowFlags(self.windowFlags() & ~Qt.WindowType.WindowContextHelpButtonHint) self.setFixedSize(self.sizeHint()) if __name__ == '__main__': # lazy load GUI frameworks from PyQt6.QtWidgets import QApplication # load application app: QApplication = QApplication(sys.argv) window: AboutDialog = AboutDialog() window.show() app.exec()