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))
+ )