diff --git a/ui/designer/tabs/tabDb/tabDb_Manage.ui b/ui/designer/tabs/tabDb/tabDb_Manage.ui index cbc2e06..d958a7c 100644 --- a/ui/designer/tabs/tabDb/tabDb_Manage.ui +++ b/ui/designer/tabs/tabDb/tabDb_Manage.ui @@ -31,6 +31,20 @@ + + + + importSt3Button + + + + + + + importSt3.description + + + diff --git a/ui/designer/tabs/tabDb/tabDb_Manage_ui.py b/ui/designer/tabs/tabDb/tabDb_Manage_ui.py index 03027cd..f8105f0 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.0 +## Created by: Qt User Interface Compiler version 6.5.1 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ @@ -37,6 +37,16 @@ class Ui_TabDb_Manage(object): self.formLayout.setWidget(0, QFormLayout.FieldRole, self.label) + self.importSt3Button = QPushButton(TabDb_Manage) + self.importSt3Button.setObjectName(u"importSt3Button") + + self.formLayout.setWidget(1, QFormLayout.LabelRole, self.importSt3Button) + + self.label_2 = QLabel(TabDb_Manage) + self.label_2.setObjectName(u"label_2") + + self.formLayout.setWidget(1, QFormLayout.FieldRole, self.label_2) + self.retranslateUi(TabDb_Manage) @@ -46,6 +56,8 @@ class Ui_TabDb_Manage(object): def retranslateUi(self, TabDb_Manage): self.syncArcSongDbButton.setText(QCoreApplication.translate("TabDb_Manage", u"syncArcSongDbButton", None)) 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)) pass # retranslateUi diff --git a/ui/implements/tabs/tabDb/tabDb_Manage.py b/ui/implements/tabs/tabDb/tabDb_Manage.py index 0bc14eb..2043828 100644 --- a/ui/implements/tabs/tabDb/tabDb_Manage.py +++ b/ui/implements/tabs/tabDb/tabDb_Manage.py @@ -2,6 +2,7 @@ import logging import traceback from arcaea_offline.database import Database +from arcaea_offline.external import St3ScoreSource from PySide6.QtCore import Slot from PySide6.QtWidgets import QFileDialog, QMessageBox, QWidget @@ -20,6 +21,10 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget): dbFile, filter = QFileDialog.getOpenFileName( self, None, "", "DB File (*.db);;*" ) + + if not dbFile: + return + try: Database().update_arcsong_db(dbFile) QMessageBox.information(self, "OK", "OK") @@ -28,3 +33,23 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget): QMessageBox.critical( self, "Sync Error", "\n".join(traceback.format_exception(e)) ) + + @Slot() + def on_importSt3Button_clicked(self): + dbFile, filter = QFileDialog.getOpenFileName(self, "Select st3 file") + + if not dbFile: + return + + try: + scores = St3ScoreSource(dbFile).get_score_items() + logger.info( + f"Got {len(scores)} items from {dbFile}, writing into database..." + ) + Database().import_external(scores) + QMessageBox.information(self, "OK", "OK") + except Exception as e: + logging.exception("import st3 error") + QMessageBox.critical( + self, "Import Error", "\n".join(traceback.format_exception(e)) + )