mirror of
https://github.com/283375/arcaea-offline-pyside-ui.git
synced 2025-04-18 16:50:17 +00:00
feat: TabTools_Andreal
This commit is contained in:
parent
44915f6d19
commit
d29104744d
@ -62,7 +62,7 @@
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageType_infoRadioButton">
|
||||
<property name="text">
|
||||
<string>/a</string>
|
||||
<string notr="true">/a</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
@ -72,14 +72,14 @@
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageType_best30RadioButton">
|
||||
<property name="text">
|
||||
<string>/a b30</string>
|
||||
<string notr="true">/a b30</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageType_bestRadioButton">
|
||||
<property name="text">
|
||||
<string>/a info</string>
|
||||
<string notr="true">/a info</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -113,6 +113,47 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QWidget" name="chartHolderWidget" native="true">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="chartSelectButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>chart.selectButton</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="chartSelectLabel">
|
||||
<property name="text">
|
||||
<string notr="true">...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
@ -137,6 +178,47 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QWidget" name="horizontalWidget_2" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageFormat_jpgRadioButton">
|
||||
<property name="text">
|
||||
<string notr="true">JPG</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageFormat_pngRadioButton">
|
||||
<property name="text">
|
||||
<string notr="true">PNG</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="jpgQualityFormLabel">
|
||||
<property name="text">
|
||||
@ -144,6 +226,53 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QWidget" name="jpgQualityHolderWidget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QSlider" name="jpgQualitySlider">
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>90</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="jpgQualitySpinBox">
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>90</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
@ -200,158 +329,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QWidget" name="horizontalWidget_2" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageFormat_jpgRadioButton">
|
||||
<property name="text">
|
||||
<string notr="true">JPG</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="imageFormat_pngRadioButton">
|
||||
<property name="text">
|
||||
<string notr="true">PNG</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>preview</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QLabel" name="previewLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QLabel { color: red }</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QWidget" name="jpgQualityHolderWidget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QSlider" name="jpgQualitySlider">
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>90</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="jpgQualitySpinBox">
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>90</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QWidget" name="chartHolderWidget" native="true">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="chartSelectButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>chart.selectButton</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="chartSelectLabel">
|
||||
<property name="text">
|
||||
<string notr="true">...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
|
@ -62,17 +62,20 @@ class Ui_TabTools_Andreal(object):
|
||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.imageType_infoRadioButton = QRadioButton(self.horizontalWidget)
|
||||
self.imageType_infoRadioButton.setObjectName(u"imageType_infoRadioButton")
|
||||
self.imageType_infoRadioButton.setText(u"/a")
|
||||
self.imageType_infoRadioButton.setChecked(True)
|
||||
|
||||
self.horizontalLayout.addWidget(self.imageType_infoRadioButton)
|
||||
|
||||
self.imageType_best30RadioButton = QRadioButton(self.horizontalWidget)
|
||||
self.imageType_best30RadioButton.setObjectName(u"imageType_best30RadioButton")
|
||||
self.imageType_best30RadioButton.setText(u"/a b30")
|
||||
|
||||
self.horizontalLayout.addWidget(self.imageType_best30RadioButton)
|
||||
|
||||
self.imageType_bestRadioButton = QRadioButton(self.horizontalWidget)
|
||||
self.imageType_bestRadioButton.setObjectName(u"imageType_bestRadioButton")
|
||||
self.imageType_bestRadioButton.setText(u"/a info")
|
||||
|
||||
self.horizontalLayout.addWidget(self.imageType_bestRadioButton)
|
||||
|
||||
@ -93,6 +96,27 @@ class Ui_TabTools_Andreal(object):
|
||||
|
||||
self.formLayout.setWidget(3, QFormLayout.LabelRole, self.chartFormLabel)
|
||||
|
||||
self.chartHolderWidget = QWidget(TabTools_Andreal)
|
||||
self.chartHolderWidget.setObjectName(u"chartHolderWidget")
|
||||
self.chartHolderWidget.setEnabled(False)
|
||||
self.horizontalLayout_8 = QHBoxLayout(self.chartHolderWidget)
|
||||
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
|
||||
self.horizontalLayout_8.setContentsMargins(0, 0, 0, 0)
|
||||
self.chartSelectButton = QPushButton(self.chartHolderWidget)
|
||||
self.chartSelectButton.setObjectName(u"chartSelectButton")
|
||||
self.chartSelectButton.setMaximumSize(QSize(100, 100))
|
||||
|
||||
self.horizontalLayout_8.addWidget(self.chartSelectButton)
|
||||
|
||||
self.chartSelectLabel = QLabel(self.chartHolderWidget)
|
||||
self.chartSelectLabel.setObjectName(u"chartSelectLabel")
|
||||
self.chartSelectLabel.setText(u"...")
|
||||
|
||||
self.horizontalLayout_8.addWidget(self.chartSelectLabel)
|
||||
|
||||
|
||||
self.formLayout.setWidget(3, QFormLayout.FieldRole, self.chartHolderWidget)
|
||||
|
||||
self.label_5 = QLabel(TabTools_Andreal)
|
||||
self.label_5.setObjectName(u"label_5")
|
||||
|
||||
@ -109,11 +133,62 @@ class Ui_TabTools_Andreal(object):
|
||||
|
||||
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_6)
|
||||
|
||||
self.horizontalWidget_2 = QWidget(TabTools_Andreal)
|
||||
self.horizontalWidget_2.setObjectName(u"horizontalWidget_2")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.horizontalWidget_2.sizePolicy().hasHeightForWidth())
|
||||
self.horizontalWidget_2.setSizePolicy(sizePolicy)
|
||||
self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget_2)
|
||||
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
||||
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||
self.imageFormat_jpgRadioButton = QRadioButton(self.horizontalWidget_2)
|
||||
self.imageFormat_jpgRadioButton.setObjectName(u"imageFormat_jpgRadioButton")
|
||||
self.imageFormat_jpgRadioButton.setText(u"JPG")
|
||||
self.imageFormat_jpgRadioButton.setChecked(True)
|
||||
|
||||
self.horizontalLayout_2.addWidget(self.imageFormat_jpgRadioButton)
|
||||
|
||||
self.imageFormat_pngRadioButton = QRadioButton(self.horizontalWidget_2)
|
||||
self.imageFormat_pngRadioButton.setObjectName(u"imageFormat_pngRadioButton")
|
||||
self.imageFormat_pngRadioButton.setText(u"PNG")
|
||||
|
||||
self.horizontalLayout_2.addWidget(self.imageFormat_pngRadioButton)
|
||||
|
||||
|
||||
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.horizontalWidget_2)
|
||||
|
||||
self.jpgQualityFormLabel = QLabel(TabTools_Andreal)
|
||||
self.jpgQualityFormLabel.setObjectName(u"jpgQualityFormLabel")
|
||||
|
||||
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.jpgQualityFormLabel)
|
||||
|
||||
self.jpgQualityHolderWidget = QWidget(TabTools_Andreal)
|
||||
self.jpgQualityHolderWidget.setObjectName(u"jpgQualityHolderWidget")
|
||||
self.horizontalLayout_3 = QHBoxLayout(self.jpgQualityHolderWidget)
|
||||
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
||||
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
||||
self.jpgQualitySlider = QSlider(self.jpgQualityHolderWidget)
|
||||
self.jpgQualitySlider.setObjectName(u"jpgQualitySlider")
|
||||
self.jpgQualitySlider.setMinimum(10)
|
||||
self.jpgQualitySlider.setMaximum(100)
|
||||
self.jpgQualitySlider.setValue(90)
|
||||
self.jpgQualitySlider.setOrientation(Qt.Horizontal)
|
||||
|
||||
self.horizontalLayout_3.addWidget(self.jpgQualitySlider)
|
||||
|
||||
self.jpgQualitySpinBox = QSpinBox(self.jpgQualityHolderWidget)
|
||||
self.jpgQualitySpinBox.setObjectName(u"jpgQualitySpinBox")
|
||||
self.jpgQualitySpinBox.setMinimum(10)
|
||||
self.jpgQualitySpinBox.setMaximum(100)
|
||||
self.jpgQualitySpinBox.setValue(90)
|
||||
|
||||
self.horizontalLayout_3.addWidget(self.jpgQualitySpinBox)
|
||||
|
||||
|
||||
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.jpgQualityHolderWidget)
|
||||
|
||||
self.horizontalLayout_5 = QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
|
||||
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
|
||||
@ -145,95 +220,6 @@ class Ui_TabTools_Andreal(object):
|
||||
|
||||
self.formLayout.setLayout(7, QFormLayout.SpanningRole, self.horizontalLayout_5)
|
||||
|
||||
self.horizontalWidget_2 = QWidget(TabTools_Andreal)
|
||||
self.horizontalWidget_2.setObjectName(u"horizontalWidget_2")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.horizontalWidget_2.sizePolicy().hasHeightForWidth())
|
||||
self.horizontalWidget_2.setSizePolicy(sizePolicy)
|
||||
self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget_2)
|
||||
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
||||
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||
self.imageFormat_jpgRadioButton = QRadioButton(self.horizontalWidget_2)
|
||||
self.imageFormat_jpgRadioButton.setObjectName(u"imageFormat_jpgRadioButton")
|
||||
self.imageFormat_jpgRadioButton.setText(u"JPG")
|
||||
self.imageFormat_jpgRadioButton.setChecked(True)
|
||||
|
||||
self.horizontalLayout_2.addWidget(self.imageFormat_jpgRadioButton)
|
||||
|
||||
self.imageFormat_pngRadioButton = QRadioButton(self.horizontalWidget_2)
|
||||
self.imageFormat_pngRadioButton.setObjectName(u"imageFormat_pngRadioButton")
|
||||
self.imageFormat_pngRadioButton.setText(u"PNG")
|
||||
|
||||
self.horizontalLayout_2.addWidget(self.imageFormat_pngRadioButton)
|
||||
|
||||
|
||||
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.horizontalWidget_2)
|
||||
|
||||
self.label_8 = QLabel(TabTools_Andreal)
|
||||
self.label_8.setObjectName(u"label_8")
|
||||
|
||||
self.formLayout.setWidget(8, QFormLayout.LabelRole, self.label_8)
|
||||
|
||||
self.previewLabel = QLabel(TabTools_Andreal)
|
||||
self.previewLabel.setObjectName(u"previewLabel")
|
||||
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
|
||||
sizePolicy1.setHorizontalStretch(0)
|
||||
sizePolicy1.setVerticalStretch(0)
|
||||
sizePolicy1.setHeightForWidth(self.previewLabel.sizePolicy().hasHeightForWidth())
|
||||
self.previewLabel.setSizePolicy(sizePolicy1)
|
||||
self.previewLabel.setStyleSheet(u"QLabel { color: red }")
|
||||
self.previewLabel.setText(u"")
|
||||
|
||||
self.formLayout.setWidget(8, QFormLayout.FieldRole, self.previewLabel)
|
||||
|
||||
self.jpgQualityHolderWidget = QWidget(TabTools_Andreal)
|
||||
self.jpgQualityHolderWidget.setObjectName(u"jpgQualityHolderWidget")
|
||||
self.horizontalLayout_3 = QHBoxLayout(self.jpgQualityHolderWidget)
|
||||
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
||||
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
||||
self.jpgQualitySlider = QSlider(self.jpgQualityHolderWidget)
|
||||
self.jpgQualitySlider.setObjectName(u"jpgQualitySlider")
|
||||
self.jpgQualitySlider.setMinimum(10)
|
||||
self.jpgQualitySlider.setMaximum(100)
|
||||
self.jpgQualitySlider.setValue(90)
|
||||
self.jpgQualitySlider.setOrientation(Qt.Horizontal)
|
||||
|
||||
self.horizontalLayout_3.addWidget(self.jpgQualitySlider)
|
||||
|
||||
self.jpgQualitySpinBox = QSpinBox(self.jpgQualityHolderWidget)
|
||||
self.jpgQualitySpinBox.setObjectName(u"jpgQualitySpinBox")
|
||||
self.jpgQualitySpinBox.setMinimum(10)
|
||||
self.jpgQualitySpinBox.setMaximum(100)
|
||||
self.jpgQualitySpinBox.setValue(90)
|
||||
|
||||
self.horizontalLayout_3.addWidget(self.jpgQualitySpinBox)
|
||||
|
||||
|
||||
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.jpgQualityHolderWidget)
|
||||
|
||||
self.chartHolderWidget = QWidget(TabTools_Andreal)
|
||||
self.chartHolderWidget.setObjectName(u"chartHolderWidget")
|
||||
self.chartHolderWidget.setEnabled(False)
|
||||
self.horizontalLayout_8 = QHBoxLayout(self.chartHolderWidget)
|
||||
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
|
||||
self.horizontalLayout_8.setContentsMargins(0, 0, 0, 0)
|
||||
self.chartSelectButton = QPushButton(self.chartHolderWidget)
|
||||
self.chartSelectButton.setObjectName(u"chartSelectButton")
|
||||
self.chartSelectButton.setMaximumSize(QSize(100, 100))
|
||||
|
||||
self.horizontalLayout_8.addWidget(self.chartSelectButton)
|
||||
|
||||
self.chartSelectLabel = QLabel(self.chartHolderWidget)
|
||||
self.chartSelectLabel.setObjectName(u"chartSelectLabel")
|
||||
self.chartSelectLabel.setText(u"...")
|
||||
|
||||
self.horizontalLayout_8.addWidget(self.chartSelectLabel)
|
||||
|
||||
|
||||
self.formLayout.setWidget(3, QFormLayout.FieldRole, self.chartHolderWidget)
|
||||
|
||||
|
||||
self.retranslateUi(TabTools_Andreal)
|
||||
self.imageFormat_jpgRadioButton.toggled.connect(self.jpgQualityHolderWidget.setEnabled)
|
||||
@ -246,19 +232,15 @@ class Ui_TabTools_Andreal(object):
|
||||
self.label.setText(QCoreApplication.translate("TabTools_Andreal", u"andrealFolder", None))
|
||||
self.label_2.setText(QCoreApplication.translate("TabTools_Andreal", u"andrealExecutable", None))
|
||||
self.label_3.setText(QCoreApplication.translate("TabTools_Andreal", u"imageType", None))
|
||||
self.imageType_infoRadioButton.setText(QCoreApplication.translate("TabTools_Andreal", u"/a", None))
|
||||
self.imageType_best30RadioButton.setText(QCoreApplication.translate("TabTools_Andreal", u"/a b30", None))
|
||||
self.imageType_bestRadioButton.setText(QCoreApplication.translate("TabTools_Andreal", u"/a info", None))
|
||||
self.imageTypeWhatIsThisButton.setText(QCoreApplication.translate("TabTools_Andreal", u"imageTypeWhatIsThisButton", None))
|
||||
self.chartFormLabel.setText(QCoreApplication.translate("TabTools_Andreal", u"chart", None))
|
||||
self.chartSelectButton.setText(QCoreApplication.translate("TabTools_Andreal", u"chart.selectButton", None))
|
||||
self.label_5.setText(QCoreApplication.translate("TabTools_Andreal", u"imageVersion", None))
|
||||
self.label_6.setText(QCoreApplication.translate("TabTools_Andreal", u"imageFormat", None))
|
||||
self.jpgQualityFormLabel.setText(QCoreApplication.translate("TabTools_Andreal", u"jpgQuality", None))
|
||||
self.exportJsonButton.setText(QCoreApplication.translate("TabTools_Andreal", u"exportJsonButton", None))
|
||||
self.generatePreviewButton.setText(QCoreApplication.translate("TabTools_Andreal", u"generatePreviewButton", None))
|
||||
self.generateImageButton.setText(QCoreApplication.translate("TabTools_Andreal", u"generateImageButton", None))
|
||||
self.label_8.setText(QCoreApplication.translate("TabTools_Andreal", u"preview", None))
|
||||
self.chartSelectButton.setText(QCoreApplication.translate("TabTools_Andreal", u"chart.selectButton", None))
|
||||
pass
|
||||
# retranslateUi
|
||||
|
||||
|
@ -74,6 +74,9 @@ class AndrealHelper(QObject):
|
||||
return base64.b64decode(b64result)
|
||||
|
||||
def request(self, jsonPath: str, arguments: list[str]):
|
||||
logger.debug(
|
||||
f"{self.__class__.__name__} received request {jsonPath=} {arguments=}"
|
||||
)
|
||||
runnable = AndrealExecuteRunnable(self.andrealExecutable, jsonPath, arguments)
|
||||
runnable.signals.error.connect(self.error)
|
||||
runnable.signals.completed.connect(self.ready)
|
||||
|
@ -7,10 +7,18 @@ from arcaea_offline.external.andreal.api_data import (
|
||||
AndrealImageGeneratorApiDataConverter,
|
||||
)
|
||||
from arcaea_offline.models import Chart
|
||||
from arcaea_offline.utils.rating import rating_class_to_short_text
|
||||
from PySide6.QtCore import QDir, QFileInfo, Qt, Slot
|
||||
from PySide6.QtGui import QImage
|
||||
from PySide6.QtWidgets import QButtonGroup, QFileDialog, QLabel, QMessageBox, QWidget
|
||||
from PySide6.QtCore import QCoreApplication, QDir, QFileInfo, Qt, Slot
|
||||
from PySide6.QtGui import QGuiApplication, QImage, QPainter, QPaintEvent, QPixmap
|
||||
from PySide6.QtWidgets import (
|
||||
QButtonGroup,
|
||||
QDialog,
|
||||
QDialogButtonBox,
|
||||
QFileDialog,
|
||||
QLabel,
|
||||
QMessageBox,
|
||||
QVBoxLayout,
|
||||
QWidget,
|
||||
)
|
||||
|
||||
from ui.designer.tabs.tabTools.tabTools_Andreal_ui import Ui_TabTools_Andreal
|
||||
from ui.extends.shared.settings import ANDREAL_EXECUTABLE, ANDREAL_FOLDER
|
||||
@ -22,7 +30,36 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PreviewLabel(QLabel):
|
||||
...
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setWindowFlag(Qt.WindowType.Window, True)
|
||||
|
||||
def show(self):
|
||||
super().show()
|
||||
# center the window
|
||||
width = self.width()
|
||||
height = self.height()
|
||||
screen = QGuiApplication.primaryScreen()
|
||||
screenWidth = screen.size().width()
|
||||
screenHeight = screen.size().height()
|
||||
self.setGeometry(
|
||||
max(0, screenWidth / 2 - width / 2),
|
||||
max(0, screenHeight / 2 - height / 2),
|
||||
min(width, screenWidth),
|
||||
min(height, screenHeight),
|
||||
)
|
||||
|
||||
def paintEvent(self, e: QPaintEvent) -> None:
|
||||
size = self.size()
|
||||
painter = QPainter(self)
|
||||
scaledPixmap = self.pixmap().scaled(
|
||||
size,
|
||||
Qt.AspectRatioMode.KeepAspectRatio,
|
||||
Qt.TransformationMode.SmoothTransformation,
|
||||
)
|
||||
x = (size.width() - scaledPixmap.width()) / 2
|
||||
y = (size.height() - scaledPixmap.height()) / 2
|
||||
painter.drawPixmap(x, y, scaledPixmap)
|
||||
|
||||
|
||||
class ChartSelectorDialog(ChartSelector):
|
||||
@ -32,6 +69,27 @@ class ChartSelectorDialog(ChartSelector):
|
||||
self.setSongIdSelectorMode(SongIdSelectorMode.Chart)
|
||||
|
||||
|
||||
class ImageTypeWhatIsThisDialog(QDialog):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.verticalLayout = QVBoxLayout(self)
|
||||
|
||||
self.label = QLabel(
|
||||
# fmt: off
|
||||
QCoreApplication.translate('TabTools_Andreal', 'imageWhatIsThisDialog.description')
|
||||
# fmt: on
|
||||
)
|
||||
|
||||
self.verticalLayout.addWidget(self.label)
|
||||
|
||||
self.buttonBox = QDialogButtonBox(Qt.Orientation.Horizontal)
|
||||
self.buttonBox.addButton(QDialogButtonBox.StandardButton.Ok)
|
||||
self.buttonBox.accepted.connect(self.close)
|
||||
self.buttonBox.rejected.connect(self.close)
|
||||
|
||||
self.verticalLayout.addWidget(self.buttonBox)
|
||||
|
||||
|
||||
class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
@ -51,6 +109,7 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
self.andrealFolderSelector.connectSettings(ANDREAL_FOLDER)
|
||||
self.andrealExecutableSelector.connectSettings(ANDREAL_EXECUTABLE)
|
||||
|
||||
self.generatePreviewButton.clicked.connect(self.requestPreview)
|
||||
self.generateImageButton.clicked.connect(self.requestGenerate)
|
||||
|
||||
self.infoChart: Chart | None = None
|
||||
@ -59,10 +118,17 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
self.generateJsonPath = None
|
||||
self.generateImageFormat = None
|
||||
|
||||
self.andrealHelper.error.connect(self.previewError)
|
||||
self.andrealHelper.ready.connect(self.previewReady)
|
||||
self.andrealHelper.finished.connect(self.previewFinished)
|
||||
self.andrealHelper.error.connect(self.generateError)
|
||||
self.andrealHelper.ready.connect(self.generateReady)
|
||||
self.andrealHelper.finished.connect(self.generateFinished)
|
||||
|
||||
self.imageTypeWhatIsThisButton.clicked.connect(
|
||||
lambda: ImageTypeWhatIsThisDialog(self).show()
|
||||
)
|
||||
|
||||
self.imageTypeButtonGroup = QButtonGroup(self)
|
||||
self.imageTypeButtonGroup.addButton(self.imageType_infoRadioButton, 0)
|
||||
self.imageTypeButtonGroup.addButton(self.imageType_bestRadioButton, 1)
|
||||
@ -75,12 +141,24 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
self.imageTypeButtonGroup.idToggled.connect(self.fillImageVersionComboBox)
|
||||
self.fillImageVersionComboBox()
|
||||
|
||||
self.chartSelectorDialog = ChartSelectorDialog(self)
|
||||
self.chartSelectorDialog.valueChanged.connect(self.chartValueUpdated)
|
||||
self.chartSelectButton.clicked.connect(self.chartSelectorDialog.show)
|
||||
|
||||
def setHelperPaths(self):
|
||||
if selectedFiles := self.andrealFolderSelector.selectedFiles():
|
||||
self.andrealHelper.andrealFolder = selectedFiles[0]
|
||||
if selectedFiles := self.andrealExecutableSelector.selectedFiles():
|
||||
self.andrealHelper.andrealExecutable = selectedFiles[0]
|
||||
|
||||
def chartValueUpdated(self):
|
||||
chart = self.chartSelectorDialog.value()
|
||||
self.infoChart = chart
|
||||
if chart:
|
||||
self.chartSelectLabel.setText(
|
||||
f"{chart.title}({chart.song_id}), {chart.rating_class}"
|
||||
)
|
||||
|
||||
def imageFormat(self):
|
||||
buttonId = self.imageFormatButtonGroup.checkedId()
|
||||
return ["jpg", "png"][buttonId] if buttonId > -1 else None
|
||||
@ -146,6 +224,7 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
return
|
||||
|
||||
jsonContentDict = {}
|
||||
try:
|
||||
with self.db.sessionmaker() as session:
|
||||
converter = AndrealImageGeneratorApiDataConverter(session)
|
||||
if imageType == "info":
|
||||
@ -156,7 +235,12 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
)
|
||||
elif imageType == "best30":
|
||||
jsonContentDict = converter.user_best30()
|
||||
return json.dumps(jsonContentDict, ensure_ascii=False)
|
||||
except Exception as e:
|
||||
logger.exception("getAndrealJsonContent error")
|
||||
QMessageBox.critical(self, None, str(e))
|
||||
return (
|
||||
json.dumps(jsonContentDict, ensure_ascii=False) if jsonContentDict else None
|
||||
)
|
||||
|
||||
def getAndrealJsonFileName(self):
|
||||
if not self.requestComplete():
|
||||
@ -167,12 +251,7 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
|
||||
fileNameParts = ["andreal", imageType]
|
||||
if imageType == "best":
|
||||
fileNameParts.extend(
|
||||
[
|
||||
self.infoChart.song_id,
|
||||
rating_class_to_short_text(self.infoChart.rating_class).lower(),
|
||||
]
|
||||
)
|
||||
fileNameParts.extend([self.infoChart.song_id, self.infoChart.rating_class])
|
||||
fileNameParts.append(timestamp)
|
||||
fileNameParts = [str(i) for i in fileNameParts]
|
||||
fileName = "-".join(fileNameParts)
|
||||
@ -199,14 +278,15 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
|
||||
def requestGenerate(self):
|
||||
jsonPath = self.getTempAndrealJsonPath()
|
||||
if not jsonPath:
|
||||
jsonContent = self.getAndrealJsonContent()
|
||||
if not jsonPath or not jsonContent:
|
||||
return
|
||||
|
||||
self.generateImageButton.setEnabled(False)
|
||||
self.generateJsonPath = jsonPath
|
||||
self.generateImageFormat = self.imageFormat()
|
||||
with open(jsonPath, "w", encoding="utf-8") as jf:
|
||||
jf.write(self.getAndrealJsonContent())
|
||||
jf.write(jsonContent)
|
||||
|
||||
self.andrealHelper.request(jsonPath, self.getAndrealArguments(jsonPath))
|
||||
|
||||
@ -237,3 +317,46 @@ class TabTools_Andreal(Ui_TabTools_Andreal, QWidget):
|
||||
if not saveFileName:
|
||||
return
|
||||
qImage.save(saveFileName, self.generateImageFormat)
|
||||
|
||||
def requestPreview(self):
|
||||
jsonPath = self.getTempAndrealJsonPath()
|
||||
jsonContent = self.getAndrealJsonContent()
|
||||
if not jsonPath or not jsonContent:
|
||||
return
|
||||
|
||||
self.generatePreviewButton.setEnabled(False)
|
||||
self.previewJsonPath = jsonPath
|
||||
with open(jsonPath, "w", encoding="utf-8") as jf:
|
||||
jf.write(jsonContent)
|
||||
|
||||
self.andrealHelper.request(
|
||||
jsonPath, self.getAndrealArguments(jsonPath, preview=True)
|
||||
)
|
||||
|
||||
def previewFinished(self):
|
||||
self.generatePreviewButton.setEnabled(True)
|
||||
|
||||
def previewError(self, jsonPath: str, errorMsg: str):
|
||||
if jsonPath != self.previewJsonPath:
|
||||
return
|
||||
QMessageBox.critical(self, "Preview Error", errorMsg)
|
||||
|
||||
def previewReady(self, jsonPath: str, imageBytes: bytes):
|
||||
if jsonPath != self.previewJsonPath:
|
||||
return
|
||||
|
||||
if not imageBytes:
|
||||
QMessageBox.critical(self, "Preview Error", "Empty bytes received.")
|
||||
return
|
||||
|
||||
qImage = QImage.fromData(imageBytes)
|
||||
|
||||
filePathParts = jsonPath.split(".")
|
||||
filePathParts.pop()
|
||||
filePath = ".".join(filePathParts)
|
||||
fileName = QFileInfo(filePath).fileName()
|
||||
|
||||
previewLabel = PreviewLabel(self)
|
||||
previewLabel.setPixmap(QPixmap.fromImage(qImage))
|
||||
previewLabel.setWindowTitle(f"preview {fileName}")
|
||||
previewLabel.show()
|
||||
|
@ -464,18 +464,18 @@ validation</translation>
|
||||
<context>
|
||||
<name>Settings</name>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="76"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="79"/>
|
||||
<source>andreal.title</source>
|
||||
<translation>Andreal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="78"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="81"/>
|
||||
<source>andreal.andrealFolder.label</source>
|
||||
<translation>Andreal folder</translation>
|
||||
<translation>Andreal data folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="79"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="82"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="85"/>
|
||||
<location filename="../../implements/settings/settingsGeneral.py" line="107"/>
|
||||
<location filename="../../implements/settings/settingsOcr.py" line="137"/>
|
||||
<location filename="../../implements/settings/settingsOcr.py" line="140"/>
|
||||
@ -485,7 +485,7 @@ validation</translation>
|
||||
<translation>Reset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="81"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="84"/>
|
||||
<source>andreal.andrealExecutable.label</source>
|
||||
<translation>Andreal executable</translation>
|
||||
</message>
|
||||
@ -762,6 +762,79 @@ validation</translation>
|
||||
<source>tab.stepCalculator</source>
|
||||
<translation>Step Calculator</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabToolsEntry.ui" line="34"/>
|
||||
<source>tab.andreal</source>
|
||||
<translation>Andreal Image Generator</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabTools_Andreal</name>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="23"/>
|
||||
<source>andrealFolder</source>
|
||||
<translation>Andreal data folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="33"/>
|
||||
<source>andrealExecutable</source>
|
||||
<translation>Andreal executable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="43"/>
|
||||
<source>imageType</source>
|
||||
<translation>Image type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="102"/>
|
||||
<source>imageTypeWhatIsThisButton</source>
|
||||
<translation>What is /a?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="112"/>
|
||||
<source>chart</source>
|
||||
<translation>Select a Chart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="143"/>
|
||||
<source>chart.selectButton</source>
|
||||
<translation>Select...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="160"/>
|
||||
<source>imageVersion</source>
|
||||
<translation>Image version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="177"/>
|
||||
<source>imageFormat</source>
|
||||
<translation>Image format</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="225"/>
|
||||
<source>jpgQuality</source>
|
||||
<translation>JPG quality</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="294"/>
|
||||
<source>exportJsonButton</source>
|
||||
<translation>Export Request Data to JSON</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="301"/>
|
||||
<source>generatePreviewButton</source>
|
||||
<translation>Generate Preview</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="313"/>
|
||||
<source>generateImageButton</source>
|
||||
<translation>Generate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/tabs/tabTools/tabTools_Andreal.py" line="81"/>
|
||||
<source>imageWhatIsThisDialog.description</source>
|
||||
<translation>Generate image of...<ul><li>/a - the most recent score</li><li>/a b30 - best30 image</li><li>/a info - best score of the selected chart</li></ul></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabTools_InfoLookup</name>
|
||||
|
@ -463,18 +463,18 @@
|
||||
<context>
|
||||
<name>Settings</name>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="76"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="79"/>
|
||||
<source>andreal.title</source>
|
||||
<translation>Andreal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="78"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="81"/>
|
||||
<source>andreal.andrealFolder.label</source>
|
||||
<translation>Andreal 文件夹</translation>
|
||||
<translation>Andreal 数据文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="79"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="82"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="85"/>
|
||||
<location filename="../../implements/settings/settingsGeneral.py" line="107"/>
|
||||
<location filename="../../implements/settings/settingsOcr.py" line="137"/>
|
||||
<location filename="../../implements/settings/settingsOcr.py" line="140"/>
|
||||
@ -484,7 +484,7 @@
|
||||
<translation>重置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="81"/>
|
||||
<location filename="../../implements/settings/settingsAndreal.py" line="84"/>
|
||||
<source>andreal.andrealExecutable.label</source>
|
||||
<translation>Andreal 可执行文件</translation>
|
||||
</message>
|
||||
@ -761,6 +761,79 @@
|
||||
<source>tab.stepCalculator</source>
|
||||
<translation>步数计算器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabToolsEntry.ui" line="34"/>
|
||||
<source>tab.andreal</source>
|
||||
<translation>Andreal 图片生成</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabTools_Andreal</name>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="23"/>
|
||||
<source>andrealFolder</source>
|
||||
<translation>Andreal 数据文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="33"/>
|
||||
<source>andrealExecutable</source>
|
||||
<translation>Andreal 可执行文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="43"/>
|
||||
<source>imageType</source>
|
||||
<translation>图片类型</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="102"/>
|
||||
<source>imageTypeWhatIsThisButton</source>
|
||||
<translation>/a 是什么?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="112"/>
|
||||
<source>chart</source>
|
||||
<translation>选择一个谱面</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="143"/>
|
||||
<source>chart.selectButton</source>
|
||||
<translation>选择</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="160"/>
|
||||
<source>imageVersion</source>
|
||||
<translation>图片版本</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="177"/>
|
||||
<source>imageFormat</source>
|
||||
<translation>图片格式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="225"/>
|
||||
<source>jpgQuality</source>
|
||||
<translation>JPG 质量</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="294"/>
|
||||
<source>exportJsonButton</source>
|
||||
<translation>导出请求数据至 JSON</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="301"/>
|
||||
<source>generatePreviewButton</source>
|
||||
<translation>生成预览</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../designer/tabs/tabTools/tabTools_Andreal.ui" line="313"/>
|
||||
<source>generateImageButton</source>
|
||||
<translation>生成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../implements/tabs/tabTools/tabTools_Andreal.py" line="81"/>
|
||||
<source>imageWhatIsThisDialog.description</source>
|
||||
<translation>生成……<ul><li>/a - 最近一次成绩</li><li>/a b30 - /a b30</li><li>/a info - 所选谱面的最好成绩</li></ul></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabTools_InfoLookup</name>
|
||||
|
Loading…
x
Reference in New Issue
Block a user