# -*- coding: utf-8 -*- """ Copyright (c) 2025 - 2026 KenanZhu. All rights reserved. This software is provided "as is", without any warranty of any kind. You may use, modify, and distribute this file under the terms of the MIT License. See the LICENSE file for details. """ import platform from PySide6.QtGui import ( QIcon, QFont ) from PySide6.QtWidgets import ( QDialog, QApplication ) from PySide6.QtCore import ( QTimer, Qt ) from gui.ALVersionInfo import ( AL_VERSION, AL_COMMIT_SHA, AL_COMMIT_DATE, AL_BUILD_DATE ) from gui.resources.ui.Ui_ALAboutDialog import Ui_ALAboutDialog from gui.resources import ALResource class ALAboutDialog(QDialog, Ui_ALAboutDialog): def __init__( self, parent = None ): super().__init__(parent) self.setupUi(self) self.modifyUi() self.connectSignals() def modifyUi( self ): self.LogoIconLabel.setPixmap(QIcon(":/res/icon/icons/AutoLibrary_32x32.ico").pixmap(48, 48)) info_text = self.generateAboutText() self.AboutInfoBrowser.setHtml(info_text) browser_font = self.AboutInfoBrowser.font() browser_font.setFamily("Courier New") self.AboutInfoBrowser.setFont(browser_font) self.AboutInfoBrowser.setTextInteractionFlags(Qt.TextBrowserInteraction) def connectSignals( self ): self.CopyButton.clicked.connect(self.copyAboutInfo) def generateAboutText( self ) -> str: os_info = self.getOSInfo() about_text = f"""

Version Information:

Version: {AL_VERSION}
Commit SHA: {AL_COMMIT_SHA}
Commit date: {AL_COMMIT_DATE}
Build date: {AL_BUILD_DATE}
Python version: {platform.python_version()}
Qt version: {self.getQtVersion()}

System Information:

Processor: {platform.processor()}
Operating system: {os_info['system']}
System version: {os_info['version']}
System architecture: {os_info['architecture']}

Project Information:

License: MIT License
Project repository: https://www.github.com/KenanZhu/AutoLibrary
Project website: https://www.autolibrary.kenanzhu.com

Author Information:

Developer: KenanZhu
Contact: nanoki_zh@163.com
GitHub: https://www.github.com/KenanZhu
""" return about_text def getOSInfo( self ): system = platform.system() version = platform.version() architecture = platform.architecture()[0] if system == "Windows": try: version = platform.win32_ver()[1] except: pass elif system == "Darwin": try: version = platform.mac_ver()[0] except: pass elif system == "Linux": try: import distro # try to get Linux distro info version = f"{distro.name()} {distro.version()}" except ImportError: pass return { 'system': system, 'version': version, 'architecture': architecture } def getQtVersion( self ): try: from PySide6.QtCore import qVersion return qVersion() except: return "Unknown" def copyAboutInfo( self ): about_text = self.AboutInfoBrowser.toPlainText() clipboard = QApplication.clipboard() clipboard.setText(about_text) original_text = self.CopyButton.text() self.CopyButton.setText("已复制") QTimer.singleShot(2000, lambda: self.CopyButton.setText(original_text))