diff --git a/ui/designer/tabs/tabDb/tabDb_Manage.ui b/ui/designer/tabs/tabDb/tabDb_Manage.ui index d958a7c..200969e 100644 --- a/ui/designer/tabs/tabDb/tabDb_Manage.ui +++ b/ui/designer/tabs/tabDb/tabDb_Manage.ui @@ -45,6 +45,27 @@ + + + + Qt::Horizontal + + + + + + + exportScoresButton + + + + + + + exportScores.description + + + diff --git a/ui/designer/tabs/tabDb/tabDb_Manage_ui.py b/ui/designer/tabs/tabDb/tabDb_Manage_ui.py index f8105f0..7c5b07b 100644 --- a/ui/designer/tabs/tabDb/tabDb_Manage_ui.py +++ b/ui/designer/tabs/tabDb/tabDb_Manage_ui.py @@ -3,7 +3,7 @@ ################################################################################ ## Form generated from reading UI file 'tabDb_Manage.ui' ## -## Created by: Qt User Interface Compiler version 6.5.1 +## Created by: Qt User Interface Compiler version 6.5.2 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ @@ -15,8 +15,8 @@ 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, QFormLayout, QLabel, QPushButton, - QSizePolicy, QWidget) +from PySide6.QtWidgets import (QApplication, QFormLayout, QFrame, QLabel, + QPushButton, QSizePolicy, QWidget) class Ui_TabDb_Manage(object): def setupUi(self, TabDb_Manage): @@ -47,6 +47,23 @@ class Ui_TabDb_Manage(object): self.formLayout.setWidget(1, QFormLayout.FieldRole, self.label_2) + self.line = QFrame(TabDb_Manage) + self.line.setObjectName(u"line") + self.line.setFrameShape(QFrame.HLine) + self.line.setFrameShadow(QFrame.Sunken) + + self.formLayout.setWidget(2, QFormLayout.SpanningRole, self.line) + + self.exportScoresButton = QPushButton(TabDb_Manage) + self.exportScoresButton.setObjectName(u"exportScoresButton") + + self.formLayout.setWidget(3, QFormLayout.LabelRole, self.exportScoresButton) + + self.label_3 = QLabel(TabDb_Manage) + self.label_3.setObjectName(u"label_3") + + self.formLayout.setWidget(3, QFormLayout.FieldRole, self.label_3) + self.retranslateUi(TabDb_Manage) @@ -58,6 +75,8 @@ class Ui_TabDb_Manage(object): self.label.setText(QCoreApplication.translate("TabDb_Manage", u"syncArcSongDb.description", None)) self.importSt3Button.setText(QCoreApplication.translate("TabDb_Manage", u"importSt3Button", None)) self.label_2.setText(QCoreApplication.translate("TabDb_Manage", u"importSt3.description", None)) + self.exportScoresButton.setText(QCoreApplication.translate("TabDb_Manage", u"exportScoresButton", None)) + self.label_3.setText(QCoreApplication.translate("TabDb_Manage", u"exportScores.description", None)) pass # retranslateUi diff --git a/ui/implements/tabs/tabDb/tabDb_Manage.py b/ui/implements/tabs/tabDb/tabDb_Manage.py index 59c78c5..2de997c 100644 --- a/ui/implements/tabs/tabDb/tabDb_Manage.py +++ b/ui/implements/tabs/tabDb/tabDb_Manage.py @@ -1,10 +1,11 @@ +import json import logging import traceback from arcaea_offline.database import Database from arcaea_offline.external.arcaea.st3 import St3ScoreParser from arcaea_offline.external.arcsong import ArcsongDbParser -from PySide6.QtCore import Slot +from PySide6.QtCore import QDir, Slot from PySide6.QtWidgets import QFileDialog, QMessageBox, QWidget from ui.designer.tabs.tabDb.tabDb_Manage_ui import Ui_TabDb_Manage @@ -61,3 +62,18 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget): QMessageBox.critical( self, "Import Error", "\n".join(traceback.format_exception(e)) ) + + @Slot() + def on_exportScoresButton_clicked(self): + scores = Database().export_scores() + version = Database().version() + content = json.dumps(scores, ensure_ascii=False) + + exportLocation, _filter = QFileDialog.getSaveFileName( + self, + "Save your scores to...", + QDir.current().filePath(f"arcaea-offline-scores-v{version}.json"), + "JSON (*.json);;*", + ) + with open(exportLocation, "w", encoding="utf-8") as f: + f.write(content)