From 0f53cb8d5b8d4e180f3dca74f7a1632a9727b4ca Mon Sep 17 00:00:00 2001 From: 283375 Date: Thu, 21 Sep 2023 23:45:40 +0800 Subject: [PATCH] impr: `TabAbout` version info --- .gitignore | 2 + prebuild.py | 54 ++++++++++ ui/designer/tabs/tabAbout.ui | 11 +- ui/designer/tabs/tabAbout_ui.py | 180 +++++++++++++++++--------------- ui/implements/tabs/tabAbout.py | 10 +- ui/resources/resources.qrc | 2 + 6 files changed, 169 insertions(+), 90 deletions(-) create mode 100644 prebuild.py diff --git a/.gitignore b/.gitignore index 6c889b2..2195cba 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ __debug* arcaea_offline.db arcaea_offline.ini +ui/resources/VERSION + # Qt compiled stuff *.qm *_rc.py diff --git a/prebuild.py b/prebuild.py new file mode 100644 index 0000000..daac526 --- /dev/null +++ b/prebuild.py @@ -0,0 +1,54 @@ +import os +from importlib import metadata +from pathlib import Path + +# fill VERSION file +versionFile = Path("ui/resources/VERSION") +assert versionFile.exists() + +# detect pip +pipName = None +possiblePipNames = ["pip3", "pip"] +for possiblePipName in possiblePipNames: + result = os.popen(possiblePipName).read() + if ( + " [options]" in result + and "install" in result + and "--upgrade" in result + ): + pipName = possiblePipName + break + +versionTexts = [] + +# if possiblePipName: +# pipFreezeLines = os.popen(f"{possiblePipName} freeze").read().split("\n") +# text = [ +# pipFreezeResult +# for pipFreezeResult in pipFreezeLines +# if ( +# "arcaea-offline" in pipFreezeResult +# or "PySide6" in pipFreezeResult +# or "exif" in pipFreezeResult +# or "opencv-python" in pipFreezeResult +# or "SQLAlchemy" in pipFreezeResult +# ) +# ] +# versionTexts.append("\n".join(text)) + +importLibTexts = [ + f"{module}=={metadata.version(module)}" + for module in [ + "arcaea-offline", + "arcaea-offline-ocr", + "exif", + "opencv-python", + "PySide6", + "SQLAlchemy", + "SQLAlchemy-Utils", + ] +] +versionTexts.append("\n".join(importLibTexts)) + +with versionFile.open("w", encoding="utf-8") as vf: + vf.write("\n".join(versionTexts)) diff --git a/ui/designer/tabs/tabAbout.ui b/ui/designer/tabs/tabAbout.ui index 1e1d116..8819043 100644 --- a/ui/designer/tabs/tabAbout.ui +++ b/ui/designer/tabs/tabAbout.ui @@ -6,8 +6,8 @@ 0 0 - 587 - 431 + 550 + 400 @@ -80,6 +80,13 @@ + + + + Version Info + + + diff --git a/ui/designer/tabs/tabAbout_ui.py b/ui/designer/tabs/tabAbout_ui.py index e99a355..b753a04 100644 --- a/ui/designer/tabs/tabAbout_ui.py +++ b/ui/designer/tabs/tabAbout_ui.py @@ -1,87 +1,93 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'tabAbout.ui' -## -## Created by: Qt User Interface Compiler version 6.5.0 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QPushButton, - QSizePolicy, QSpacerItem, QVBoxLayout, QWidget) - -class Ui_TabAbout(object): - def setupUi(self, TabAbout): - if not TabAbout.objectName(): - TabAbout.setObjectName(u"TabAbout") - TabAbout.resize(587, 431) - TabAbout.setWindowTitle(u"TabAbout") - self.verticalLayout = QVBoxLayout(TabAbout) - self.verticalLayout.setObjectName(u"verticalLayout") - self.logoLabel = QLabel(TabAbout) - self.logoLabel.setObjectName(u"logoLabel") - sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.logoLabel.sizePolicy().hasHeightForWidth()) - self.logoLabel.setSizePolicy(sizePolicy) - self.logoLabel.setText(u"") - self.logoLabel.setAlignment(Qt.AlignCenter) - - self.verticalLayout.addWidget(self.logoLabel) - - self.label = QLabel(TabAbout) - self.label.setObjectName(u"label") - font = QFont() - font.setPointSize(14) - self.label.setFont(font) - self.label.setText(u"arcaea-offline-pyside-ui") - self.label.setAlignment(Qt.AlignBottom|Qt.AlignHCenter) - - self.verticalLayout.addWidget(self.label) - - self.label_2 = QLabel(TabAbout) - self.label_2.setObjectName(u"label_2") - self.label_2.setText(u"A part of arcaea-offline project") - self.label_2.setAlignment(Qt.AlignHCenter|Qt.AlignTop) - self.label_2.setOpenExternalLinks(True) - - self.verticalLayout.addWidget(self.label_2) - - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName(u"horizontalLayout") - self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - - self.horizontalLayout.addItem(self.horizontalSpacer) - - self.aboutQtButton = QPushButton(TabAbout) - self.aboutQtButton.setObjectName(u"aboutQtButton") - - self.horizontalLayout.addWidget(self.aboutQtButton) - - self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - - self.horizontalLayout.addItem(self.horizontalSpacer_2) - - - self.verticalLayout.addLayout(self.horizontalLayout) - - - self.retranslateUi(TabAbout) - - QMetaObject.connectSlotsByName(TabAbout) - # setupUi - - def retranslateUi(self, TabAbout): - self.aboutQtButton.setText(QCoreApplication.translate("TabAbout", u"About Qt", None)) - pass - # retranslateUi - +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'tabAbout.ui' +## +## Created by: Qt User Interface Compiler version 6.5.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QPushButton, + QSizePolicy, QSpacerItem, QVBoxLayout, QWidget) + +class Ui_TabAbout(object): + def setupUi(self, TabAbout): + if not TabAbout.objectName(): + TabAbout.setObjectName(u"TabAbout") + TabAbout.resize(550, 400) + TabAbout.setWindowTitle(u"TabAbout") + self.verticalLayout = QVBoxLayout(TabAbout) + self.verticalLayout.setObjectName(u"verticalLayout") + self.logoLabel = QLabel(TabAbout) + self.logoLabel.setObjectName(u"logoLabel") + sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.logoLabel.sizePolicy().hasHeightForWidth()) + self.logoLabel.setSizePolicy(sizePolicy) + self.logoLabel.setText(u"") + self.logoLabel.setAlignment(Qt.AlignCenter) + + self.verticalLayout.addWidget(self.logoLabel) + + self.label = QLabel(TabAbout) + self.label.setObjectName(u"label") + font = QFont() + font.setPointSize(14) + self.label.setFont(font) + self.label.setText(u"arcaea-offline-pyside-ui") + self.label.setAlignment(Qt.AlignBottom|Qt.AlignHCenter) + + self.verticalLayout.addWidget(self.label) + + self.label_2 = QLabel(TabAbout) + self.label_2.setObjectName(u"label_2") + self.label_2.setText(u"A part of arcaea-offline project") + self.label_2.setAlignment(Qt.AlignHCenter|Qt.AlignTop) + self.label_2.setOpenExternalLinks(True) + + self.verticalLayout.addWidget(self.label_2) + + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer) + + self.aboutQtButton = QPushButton(TabAbout) + self.aboutQtButton.setObjectName(u"aboutQtButton") + + self.horizontalLayout.addWidget(self.aboutQtButton) + + self.versionInfoButton = QPushButton(TabAbout) + self.versionInfoButton.setObjectName(u"versionInfoButton") + + self.horizontalLayout.addWidget(self.versionInfoButton) + + self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer_2) + + + self.verticalLayout.addLayout(self.horizontalLayout) + + + self.retranslateUi(TabAbout) + + QMetaObject.connectSlotsByName(TabAbout) + # setupUi + + def retranslateUi(self, TabAbout): + self.aboutQtButton.setText(QCoreApplication.translate("TabAbout", u"About Qt", None)) + self.versionInfoButton.setText(QCoreApplication.translate("TabAbout", u"Version Info", None)) + pass + # retranslateUi + diff --git a/ui/implements/tabs/tabAbout.py b/ui/implements/tabs/tabAbout.py index 9d92956..3bf6612 100644 --- a/ui/implements/tabs/tabAbout.py +++ b/ui/implements/tabs/tabAbout.py @@ -1,4 +1,4 @@ -from PySide6.QtCore import Qt, Slot +from PySide6.QtCore import QFile, Qt, Slot from PySide6.QtGui import QPixmap from PySide6.QtWidgets import QMessageBox, QWidget @@ -21,3 +21,11 @@ class TabAbout(Ui_TabAbout, QWidget): @Slot() def on_aboutQtButton_clicked(self): QMessageBox.aboutQt(self) + + @Slot() + def on_versionInfoButton_clicked(self): + versionFile = QFile(":/VERSION") + versionFile.open(QFile.OpenModeFlag.ReadOnly) + versionText = str(versionFile.readAll(), encoding="utf-8") + versionFile.close() + QMessageBox.information(self, None, versionText) diff --git a/ui/resources/resources.qrc b/ui/resources/resources.qrc index 741263a..787ed2e 100644 --- a/ui/resources/resources.qrc +++ b/ui/resources/resources.qrc @@ -1,6 +1,8 @@ + VERSION + images/icon.png images/logo.png images/stepCalculator/stamina.png