diff --git a/ui/designer/tabs/tabDb/tabDb_Manage.ui b/ui/designer/tabs/tabDb/tabDb_Manage.ui
index f9f0ab2..d000119 100644
--- a/ui/designer/tabs/tabDb/tabDb_Manage.ui
+++ b/ui/designer/tabs/tabDb/tabDb_Manage.ui
@@ -6,8 +6,8 @@
0
0
- 630
- 528
+ 580
+ 521
@@ -17,70 +17,21 @@
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
- -
-
-
- syncArcSongDbButton
-
-
-
- -
-
-
- syncArcSongDb.description
-
-
-
- -
-
-
- importSt3Button
-
-
-
- -
-
-
- importSt3.description
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- exportScoresButton
-
-
-
- -
-
-
- exportScores.description
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
+
-
importPacklistButton
- -
+
-
+
+
+ importPacklist.description
+
+
+
+ -
importSonglistButton
@@ -88,69 +39,129 @@
-
-
-
- importPacklist.description
-
-
-
- -
importSonglist.description
- -
-
-
- exportArcsongJsonButton
-
-
-
- -
-
-
- exportArcsongJson.description
-
-
-
- -
+
-
importApkButton
- -
+
-
importApk.description
+ -
+
+
+
+ 12
+ false
+
+
+
+ chartInfoGroup
+
+
+
-
+
+
+ syncArcSongDbButton
+
+
+
+ -
+
+
+ syncArcSongDb.description
+
+
+
+ -
+
+
+
+ 12
+ false
+
+
+
+ importScoreGroup
+
+
+
+ -
+
+
+ importSt3Button
+
+
+
+ -
+
+
+ importSt3.description
+
+
+
+ -
importOnlineButton
- -
+
-
importOnline.description
- -
+
-
+
+
+
+ 12
+ false
+
+
+
+ exportScoreGroup
+
+
+
+ -
+
+
+ exportScoresButton
+
+
+
+ -
+
+
+ exportScores.description
+
+
+
+ -
exportSmartRteB30Button
- -
+
-
exportSmartRteB30.description
@@ -163,6 +174,110 @@
+ -
+
+
+
+ 12
+ false
+
+
+
+ miscGroup
+
+
+
+ -
+
+
+ exportArcsongJsonButton
+
+
+
+ -
+
+
+ exportArcsongJson.description
+
+
+
+ -
+
+
+
+ 12
+ false
+
+
+
+ packSongInfoGroup
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 20
+
+
+
+
diff --git a/ui/designer/tabs/tabDb/tabDb_Manage_ui.py b/ui/designer/tabs/tabDb/tabDb_Manage_ui.py
index 3ad1dff..0c4cb1a 100644
--- a/ui/designer/tabs/tabDb/tabDb_Manage_ui.py
+++ b/ui/designer/tabs/tabDb/tabDb_Manage_ui.py
@@ -15,123 +15,158 @@ 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, QFrame, QLabel,
- QPushButton, QSizePolicy, QWidget)
+from PySide6.QtWidgets import (QApplication, QFormLayout, QLabel, QPushButton,
+ QSizePolicy, QSpacerItem, QWidget)
class Ui_TabDb_Manage(object):
def setupUi(self, TabDb_Manage):
if not TabDb_Manage.objectName():
TabDb_Manage.setObjectName(u"TabDb_Manage")
- TabDb_Manage.resize(630, 528)
+ TabDb_Manage.resize(580, 521)
TabDb_Manage.setWindowTitle(u"TabDb_Manage")
self.formLayout = QFormLayout(TabDb_Manage)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
- self.syncArcSongDbButton = QPushButton(TabDb_Manage)
- self.syncArcSongDbButton.setObjectName(u"syncArcSongDbButton")
-
- self.formLayout.setWidget(0, QFormLayout.LabelRole, self.syncArcSongDbButton)
-
- self.label = QLabel(TabDb_Manage)
- self.label.setObjectName(u"label")
-
- self.formLayout.setWidget(0, QFormLayout.FieldRole, self.label)
-
- self.importSt3Button = QPushButton(TabDb_Manage)
- self.importSt3Button.setObjectName(u"importSt3Button")
-
- self.formLayout.setWidget(5, QFormLayout.LabelRole, self.importSt3Button)
-
- self.label_2 = QLabel(TabDb_Manage)
- self.label_2.setObjectName(u"label_2")
-
- self.formLayout.setWidget(5, 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(7, QFormLayout.SpanningRole, self.line)
-
- self.exportScoresButton = QPushButton(TabDb_Manage)
- self.exportScoresButton.setObjectName(u"exportScoresButton")
-
- self.formLayout.setWidget(8, QFormLayout.LabelRole, self.exportScoresButton)
-
- self.label_3 = QLabel(TabDb_Manage)
- self.label_3.setObjectName(u"label_3")
-
- self.formLayout.setWidget(8, QFormLayout.FieldRole, self.label_3)
-
- self.line_2 = QFrame(TabDb_Manage)
- self.line_2.setObjectName(u"line_2")
- self.line_2.setFrameShape(QFrame.HLine)
- self.line_2.setFrameShadow(QFrame.Sunken)
-
- self.formLayout.setWidget(1, QFormLayout.SpanningRole, self.line_2)
-
self.importPacklistButton = QPushButton(TabDb_Manage)
self.importPacklistButton.setObjectName(u"importPacklistButton")
- self.formLayout.setWidget(2, QFormLayout.LabelRole, self.importPacklistButton)
-
- self.importSonglistButton = QPushButton(TabDb_Manage)
- self.importSonglistButton.setObjectName(u"importSonglistButton")
-
- self.formLayout.setWidget(3, QFormLayout.LabelRole, self.importSonglistButton)
+ self.formLayout.setWidget(1, QFormLayout.LabelRole, self.importPacklistButton)
self.label_4 = QLabel(TabDb_Manage)
self.label_4.setObjectName(u"label_4")
- self.formLayout.setWidget(2, QFormLayout.FieldRole, self.label_4)
+ self.formLayout.setWidget(1, QFormLayout.FieldRole, self.label_4)
+
+ self.importSonglistButton = QPushButton(TabDb_Manage)
+ self.importSonglistButton.setObjectName(u"importSonglistButton")
+
+ self.formLayout.setWidget(2, QFormLayout.LabelRole, self.importSonglistButton)
self.label_5 = QLabel(TabDb_Manage)
self.label_5.setObjectName(u"label_5")
- self.formLayout.setWidget(3, QFormLayout.FieldRole, self.label_5)
-
- self.exportArcsongJsonButton = QPushButton(TabDb_Manage)
- self.exportArcsongJsonButton.setObjectName(u"exportArcsongJsonButton")
-
- self.formLayout.setWidget(9, QFormLayout.LabelRole, self.exportArcsongJsonButton)
-
- self.label_6 = QLabel(TabDb_Manage)
- self.label_6.setObjectName(u"label_6")
-
- self.formLayout.setWidget(9, QFormLayout.FieldRole, self.label_6)
+ self.formLayout.setWidget(2, QFormLayout.FieldRole, self.label_5)
self.importApkButton = QPushButton(TabDb_Manage)
self.importApkButton.setObjectName(u"importApkButton")
- self.formLayout.setWidget(4, QFormLayout.LabelRole, self.importApkButton)
+ self.formLayout.setWidget(3, QFormLayout.LabelRole, self.importApkButton)
self.label_7 = QLabel(TabDb_Manage)
self.label_7.setObjectName(u"label_7")
- self.formLayout.setWidget(4, QFormLayout.FieldRole, self.label_7)
+ self.formLayout.setWidget(3, QFormLayout.FieldRole, self.label_7)
+
+ self.label_11 = QLabel(TabDb_Manage)
+ self.label_11.setObjectName(u"label_11")
+ font = QFont()
+ font.setPointSize(12)
+ font.setBold(False)
+ self.label_11.setFont(font)
+
+ self.formLayout.setWidget(5, QFormLayout.SpanningRole, self.label_11)
+
+ self.syncArcSongDbButton = QPushButton(TabDb_Manage)
+ self.syncArcSongDbButton.setObjectName(u"syncArcSongDbButton")
+
+ self.formLayout.setWidget(6, QFormLayout.LabelRole, self.syncArcSongDbButton)
+
+ self.label = QLabel(TabDb_Manage)
+ self.label.setObjectName(u"label")
+
+ self.formLayout.setWidget(6, QFormLayout.FieldRole, self.label)
+
+ self.label_12 = QLabel(TabDb_Manage)
+ self.label_12.setObjectName(u"label_12")
+ self.label_12.setFont(font)
+
+ self.formLayout.setWidget(8, QFormLayout.SpanningRole, self.label_12)
+
+ self.importSt3Button = QPushButton(TabDb_Manage)
+ self.importSt3Button.setObjectName(u"importSt3Button")
+
+ self.formLayout.setWidget(9, QFormLayout.LabelRole, self.importSt3Button)
+
+ self.label_2 = QLabel(TabDb_Manage)
+ self.label_2.setObjectName(u"label_2")
+
+ self.formLayout.setWidget(9, QFormLayout.FieldRole, self.label_2)
self.importOnlineButton = QPushButton(TabDb_Manage)
self.importOnlineButton.setObjectName(u"importOnlineButton")
- self.formLayout.setWidget(6, QFormLayout.LabelRole, self.importOnlineButton)
+ self.formLayout.setWidget(10, QFormLayout.LabelRole, self.importOnlineButton)
self.label_8 = QLabel(TabDb_Manage)
self.label_8.setObjectName(u"label_8")
- self.formLayout.setWidget(6, QFormLayout.FieldRole, self.label_8)
+ self.formLayout.setWidget(10, QFormLayout.FieldRole, self.label_8)
+
+ self.label_13 = QLabel(TabDb_Manage)
+ self.label_13.setObjectName(u"label_13")
+ self.label_13.setFont(font)
+
+ self.formLayout.setWidget(12, QFormLayout.SpanningRole, self.label_13)
+
+ self.exportScoresButton = QPushButton(TabDb_Manage)
+ self.exportScoresButton.setObjectName(u"exportScoresButton")
+
+ self.formLayout.setWidget(13, QFormLayout.LabelRole, self.exportScoresButton)
+
+ self.label_3 = QLabel(TabDb_Manage)
+ self.label_3.setObjectName(u"label_3")
+
+ self.formLayout.setWidget(13, QFormLayout.FieldRole, self.label_3)
self.exportSmartRteB30Button = QPushButton(TabDb_Manage)
self.exportSmartRteB30Button.setObjectName(u"exportSmartRteB30Button")
- self.formLayout.setWidget(10, QFormLayout.LabelRole, self.exportSmartRteB30Button)
+ self.formLayout.setWidget(14, QFormLayout.LabelRole, self.exportSmartRteB30Button)
self.label_9 = QLabel(TabDb_Manage)
self.label_9.setObjectName(u"label_9")
self.label_9.setOpenExternalLinks(True)
self.label_9.setTextInteractionFlags(Qt.LinksAccessibleByKeyboard|Qt.LinksAccessibleByMouse)
- self.formLayout.setWidget(10, QFormLayout.FieldRole, self.label_9)
+ self.formLayout.setWidget(14, QFormLayout.FieldRole, self.label_9)
+
+ self.label_14 = QLabel(TabDb_Manage)
+ self.label_14.setObjectName(u"label_14")
+ self.label_14.setFont(font)
+
+ self.formLayout.setWidget(16, QFormLayout.SpanningRole, self.label_14)
+
+ self.exportArcsongJsonButton = QPushButton(TabDb_Manage)
+ self.exportArcsongJsonButton.setObjectName(u"exportArcsongJsonButton")
+
+ self.formLayout.setWidget(17, QFormLayout.LabelRole, self.exportArcsongJsonButton)
+
+ self.label_6 = QLabel(TabDb_Manage)
+ self.label_6.setObjectName(u"label_6")
+
+ self.formLayout.setWidget(17, QFormLayout.FieldRole, self.label_6)
+
+ self.label_10 = QLabel(TabDb_Manage)
+ self.label_10.setObjectName(u"label_10")
+ self.label_10.setFont(font)
+
+ self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_10)
+
+ self.verticalSpacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+ self.formLayout.setItem(4, QFormLayout.LabelRole, self.verticalSpacer)
+
+ self.verticalSpacer_2 = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+ self.formLayout.setItem(7, QFormLayout.LabelRole, self.verticalSpacer_2)
+
+ self.verticalSpacer_3 = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+ self.formLayout.setItem(11, QFormLayout.LabelRole, self.verticalSpacer_3)
+
+ self.verticalSpacer_4 = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+ self.formLayout.setItem(15, QFormLayout.LabelRole, self.verticalSpacer_4)
self.retranslateUi(TabDb_Manage)
@@ -140,24 +175,28 @@ class Ui_TabDb_Manage(object):
# setupUi
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))
- self.exportScoresButton.setText(QCoreApplication.translate("TabDb_Manage", u"exportScoresButton", None))
- self.label_3.setText(QCoreApplication.translate("TabDb_Manage", u"exportScores.description", None))
self.importPacklistButton.setText(QCoreApplication.translate("TabDb_Manage", u"importPacklistButton", None))
- self.importSonglistButton.setText(QCoreApplication.translate("TabDb_Manage", u"importSonglistButton", None))
self.label_4.setText(QCoreApplication.translate("TabDb_Manage", u"importPacklist.description", None))
+ self.importSonglistButton.setText(QCoreApplication.translate("TabDb_Manage", u"importSonglistButton", None))
self.label_5.setText(QCoreApplication.translate("TabDb_Manage", u"importSonglist.description", None))
- self.exportArcsongJsonButton.setText(QCoreApplication.translate("TabDb_Manage", u"exportArcsongJsonButton", None))
- self.label_6.setText(QCoreApplication.translate("TabDb_Manage", u"exportArcsongJson.description", None))
self.importApkButton.setText(QCoreApplication.translate("TabDb_Manage", u"importApkButton", None))
self.label_7.setText(QCoreApplication.translate("TabDb_Manage", u"importApk.description", None))
+ self.label_11.setText(QCoreApplication.translate("TabDb_Manage", u"chartInfoGroup", None))
+ self.syncArcSongDbButton.setText(QCoreApplication.translate("TabDb_Manage", u"syncArcSongDbButton", None))
+ self.label.setText(QCoreApplication.translate("TabDb_Manage", u"syncArcSongDb.description", None))
+ self.label_12.setText(QCoreApplication.translate("TabDb_Manage", u"importScoreGroup", None))
+ self.importSt3Button.setText(QCoreApplication.translate("TabDb_Manage", u"importSt3Button", None))
+ self.label_2.setText(QCoreApplication.translate("TabDb_Manage", u"importSt3.description", None))
self.importOnlineButton.setText(QCoreApplication.translate("TabDb_Manage", u"importOnlineButton", None))
self.label_8.setText(QCoreApplication.translate("TabDb_Manage", u"importOnline.description", None))
+ self.label_13.setText(QCoreApplication.translate("TabDb_Manage", u"exportScoreGroup", None))
+ self.exportScoresButton.setText(QCoreApplication.translate("TabDb_Manage", u"exportScoresButton", None))
+ self.label_3.setText(QCoreApplication.translate("TabDb_Manage", u"exportScores.description", None))
self.exportSmartRteB30Button.setText(QCoreApplication.translate("TabDb_Manage", u"exportSmartRteB30Button", None))
self.label_9.setText(QCoreApplication.translate("TabDb_Manage", u"exportSmartRteB30.description", None))
+ self.label_14.setText(QCoreApplication.translate("TabDb_Manage", u"miscGroup", None))
+ self.exportArcsongJsonButton.setText(QCoreApplication.translate("TabDb_Manage", u"exportArcsongJsonButton", None))
+ self.label_6.setText(QCoreApplication.translate("TabDb_Manage", u"exportArcsongJson.description", None))
+ self.label_10.setText(QCoreApplication.translate("TabDb_Manage", u"packSongInfoGroup", None))
pass
# retranslateUi
-
diff --git a/ui/resources/lang/en_US.ts b/ui/resources/lang/en_US.ts
index 86ecfc3..21f5c38 100644
--- a/ui/resources/lang/en_US.ts
+++ b/ui/resources/lang/en_US.ts
@@ -672,92 +672,117 @@ validation
TabDb_Manage
-
+
syncArcSongDbButton
Sync arcsong.db
-
+
syncArcSongDb.description
Update chart info
-
+
+ importScoreGroup
+ Import Score
+
+
+
importSt3Button
- Import from Game Save
+ Game Save Database
-
+
importSt3.description
- Import scores from your game save
+ Import scores from your game save database
-
- exportScoresButton
+
+ exportScoreGroup
Export Scores
-
- exportScores.description
- Export all your scores to a JSON file
+
+ exportScoresButton
+ D.E.F. V2
-
+
+ exportScores.description
+ Export all your scores in <i>Arcaea Offline Data Exchange Format V2</i> formed JSON file
+
+
+
+ miscGroup
+ Miscellaneous
+
+
+
importPacklistButton
Import packlist
-
+
importSonglistButton
Import songlist
-
+
importPacklist.description
Import packlist file
-
+
importSonglist.description
Import songlist file
-
+
exportArcsongJsonButton
Export arcsong.json
-
+
exportArcsongJson.description
- Export arcsong.json file
+ Export arcsong.json file based on the information in database
-
+
importApkButton
Import from APK
-
+
+ packSongInfoGroup
+ Pack/Song Info
+
+
+
importApk.description
Import packlist and songlist from .apk file
-
+
+ chartInfoGroup
+ Chart Info
+
+
+
importOnlineButton
- Import from Arcaea Online
+ Arcaea Online
-
+
importOnline.description
- Import scores from the result of Arcaea Online API
+ Import scores from the Arcaea Online API result
-
+
exportSmartRteB30Button
- Export Scores (CSV, SmartRTE B30)
+ SmartRTE B30
-
+
exportSmartRteB30.description
Export all your scores to <a href="https://smartrte.github.io/b30gen.html">smartrte.github.io</a> compatible CSV file
@@ -840,27 +865,27 @@ validation
Delete Selected Scores
-
+
quickSelectComboBox.idEarlier
Earlier ID
-
+
quickSelectComboBox.dateEarlier
Earlier date
-
+
quickSelectComboBox.columnsIntegral
More complete data
-
+
deleteSelectionDialog.content {}
Deleting {} scores from database, this cannot be undone!<br>Confirm?
-
+
scan_noColumnsDialog.content
You haven't selected any column! Are you sure to continue?
diff --git a/ui/resources/lang/zh_CN.ts b/ui/resources/lang/zh_CN.ts
index 08e3d24..55d368b 100644
--- a/ui/resources/lang/zh_CN.ts
+++ b/ui/resources/lang/zh_CN.ts
@@ -671,92 +671,117 @@
TabDb_Manage
-
+
syncArcSongDbButton
同步 arcsong.db
-
+
syncArcSongDb.description
更新谱面信息
-
- importSt3Button
- 导入本地存档
+
+ importScoreGroup
+ 导入分数
-
+
+ importSt3Button
+ 存档文件
+
+
+
importSt3.description
遏卡抑五年,天降飞龙,姿容极度美艳。白衣仙女以妙法擒之,与之相恋。<br>来年,恶人携联结万邦之力来袭,仙女龙妃以根源之术,呼唤神通叁式之威,退敌千里,永护宝库安宁。
-
- exportScoresButton
+
+ exportScoreGroup
导出分数
-
- exportScores.description
- 将所有分数导出为 JSON 文件
+
+ exportScoresButton
+ 数据交换格式 V2
-
+
+ exportScores.description
+ 将所有分数导出为 <i>Arcaea Offline 数据交换格式 V2</i> JSON 文件
+
+
+
+ miscGroup
+ 杂项
+
+
+
importPacklistButton
导入 packlist
-
+
importSonglistButton
导入 songlist
-
+
importPacklist.description
导入 packlist 文件
-
+
importSonglist.description
导入 songlist 文件
-
+
exportArcsongJsonButton
导出 arcsong.json
-
+
exportArcsongJson.description
- 导出 arcsong.json 文件
+ 基于数据库信息导出 arcsong.json 文件
-
+
importApkButton
从 APK 导入
-
+
+ packSongInfoGroup
+ 曲包、歌曲信息
+
+
+
importApk.description
从 .apk 文件导入 packlist 和 songlist
-
- importOnlineButton
- 从 Arcaea Online 导入
+
+ chartInfoGroup
+ 谱面信息
-
+
+ importOnlineButton
+ Arcaea Online
+
+
+
importOnline.description
从 Arcaea Online 的 API 结果导入分数
-
+
exportSmartRteB30Button
- 导出分数(CSV,SmartRTE B30)
+ SmartRTE B30
-
+
exportSmartRteB30.description
将所有分数导出为兼容 <a href="https://smartrte.github.io/b30gen.html">smartrte.github.io</a> 的 CSV 文件
@@ -839,27 +864,27 @@
删除已选分数
-
+
quickSelectComboBox.idEarlier
ID 更早
-
+
quickSelectComboBox.dateEarlier
时间更早
-
+
quickSelectComboBox.columnsIntegral
数据更完整
-
+
deleteSelectionDialog.content {}
将从数据库中删除 {} 个分数。此操作无法撤销!<br>确认吗?
-
+
scan_noColumnsDialog.content
还未选择任何字段!确定继续吗?