wip: ScoreEditor

This commit is contained in:
2023-09-01 06:45:12 +08:00
parent af178744b8
commit 565260d6ce
5 changed files with 741 additions and 274 deletions

View File

@ -6,42 +6,32 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>365</width> <width>450</width>
<height>253</height> <height>350</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string notr="true">ScoreEditor</string> <string notr="true">ScoreEditor</string>
</property> </property>
<layout class="QFormLayout" name="formLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="fieldGrowthPolicy"> <item row="2" column="2">
<enum>QFormLayout::ExpandingFieldsGrow</enum> <widget class="QCheckBox" name="pureNoneCheckBox">
</property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>formLabel.score</string> <string>setNone</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="9" column="0">
<widget class="FocusSelectAllLineEdit" name="scoreLineEdit"> <widget class="QLabel" name="label_7">
<property name="inputMask">
<string notr="true">B9'999'999;_</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string notr="true">PURE</string> <string notr="true">Modifier</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<widget class="QSpinBox" name="pureSpinBox"> <widget class="QSpinBox" name="pureSpinBox">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@ -54,81 +44,44 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="2">
<widget class="QCheckBox" name="clearTypeNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string notr="true">FAR</string> <string notr="true">PURE</string>
</property> </property>
</widget> <property name="alignment">
</item> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<item row="2" column="1">
<widget class="QSpinBox" name="farSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>0</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string notr="true">LOST</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="lostSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>0</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_4">
<property name="text"> <property name="text">
<string>formLabel.time</string> <string notr="true">LOST</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="5" column="2">
<widget class="QDateTimeEdit" name="dateTimeEdit"> <widget class="QCheckBox" name="dateNoneCheckBox">
<property name="sizePolicy"> <property name="text">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <string>setNone</string>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="dateTime">
<datetime>
<hour>0</hour>
<minute>0</minute>
<second>0</second>
<year>2017</year>
<month>1</month>
<day>22</day>
</datetime>
</property>
<property name="minimumDate">
<date>
<year>2017</year>
<month>1</month>
<day>22</day>
</date>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="6" column="1">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -141,67 +94,23 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="6" column="0"> <item row="12" column="1">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="validateLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string notr="true">MAX RECALL</string> <string notr="true">...</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="10" column="1">
<widget class="QSpinBox" name="maxRecallSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="validateLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">...</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="commitButton">
<property name="text">
<string>commitButton</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>formLabel.clearType</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="clearTypeComboBox"> <widget class="QComboBox" name="clearTypeComboBox">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
@ -214,6 +123,219 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string notr="true">Clear Type</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string notr="true">FAR</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string notr="true">MAX RECALL</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QSpinBox" name="maxRecallSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="modifierComboBox">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDateTimeEdit" name="dateTimeEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="displayFormat">
<string>yyyy/M/d HH:mm:ss</string>
</property>
<property name="calendarPopup">
<bool>false</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="lostSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>0</number>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QCheckBox" name="lostNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="commentLineEdit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="9" column="2">
<widget class="QCheckBox" name="modifierNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="11" column="2">
<widget class="QCheckBox" name="commentNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>formLabel.date</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="12" column="2">
<widget class="QPushButton" name="commitButton">
<property name="text">
<string>commitButton</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="FocusSelectAllLineEdit" name="scoreLineEdit">
<property name="inputMask">
<string notr="true">B9'999'999;_</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QCheckBox" name="maxRecallNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="farSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>0</number>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>formLabel.comment</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>formLabel.score</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QCheckBox" name="farNoneCheckBox">
<property name="text">
<string>setNone</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>ID</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="idLabel">
<property name="text">
<string>idAutoInsert</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@ -224,5 +346,134 @@
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections>
<connection>
<sender>pureNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>pureSpinBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>44</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>44</y>
</hint>
</hints>
</connection>
<connection>
<sender>clearTypeNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>clearTypeComboBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>263</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>264</y>
</hint>
</hints>
</connection>
<connection>
<sender>modifierNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>modifierComboBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>236</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>237</y>
</hint>
</hints>
</connection>
<connection>
<sender>maxRecallNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>maxRecallSpinBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>210</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>210</y>
</hint>
</hints>
</connection>
<connection>
<sender>dateNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>dateTimeEdit</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>122</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>122</y>
</hint>
</hints>
</connection>
<connection>
<sender>lostNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>lostSpinBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>96</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>96</y>
</hint>
</hints>
</connection>
<connection>
<sender>farNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>farSpinBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>521</x>
<y>70</y>
</hint>
<hint type="destinationlabel">
<x>288</x>
<y>70</y>
</hint>
</hints>
</connection>
<connection>
<sender>commentNoneCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>commentLineEdit</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>395</x>
<y>270</y>
</hint>
<hint type="destinationlabel">
<x>237</x>
<y>270</y>
</hint>
</hints>
</connection>
</connections>
</ui> </ui>

View File

@ -3,7 +3,7 @@
################################################################################ ################################################################################
## Form generated from reading UI file 'scoreEditor.ui' ## Form generated from reading UI file 'scoreEditor.ui'
## ##
## Created by: Qt User Interface Compiler version 6.5.0 ## Created by: Qt User Interface Compiler version 6.5.2
## ##
## WARNING! All changes made in this file will be lost when recompiling UI file! ## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################ ################################################################################
@ -15,9 +15,9 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon, QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter, QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform) QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QComboBox, QDateTimeEdit, QFormLayout, from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit,
QHBoxLayout, QLabel, QPushButton, QSizePolicy, QGridLayout, QLabel, QLineEdit, QPushButton,
QSpacerItem, QSpinBox, QWidget) QSizePolicy, QSpacerItem, QSpinBox, QWidget)
from ui.implements.components.focusSelectAllLineEdit import FocusSelectAllLineEdit from ui.implements.components.focusSelectAllLineEdit import FocusSelectAllLineEdit
@ -25,143 +25,243 @@ class Ui_ScoreEditor(object):
def setupUi(self, ScoreEditor): def setupUi(self, ScoreEditor):
if not ScoreEditor.objectName(): if not ScoreEditor.objectName():
ScoreEditor.setObjectName(u"ScoreEditor") ScoreEditor.setObjectName(u"ScoreEditor")
ScoreEditor.resize(365, 253) ScoreEditor.resize(450, 350)
ScoreEditor.setWindowTitle(u"ScoreEditor") ScoreEditor.setWindowTitle(u"ScoreEditor")
self.formLayout = QFormLayout(ScoreEditor) self.gridLayout = QGridLayout(ScoreEditor)
self.formLayout.setObjectName(u"formLayout") self.gridLayout.setObjectName(u"gridLayout")
self.formLayout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) self.pureNoneCheckBox = QCheckBox(ScoreEditor)
self.formLayout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) self.pureNoneCheckBox.setObjectName(u"pureNoneCheckBox")
self.label = QLabel(ScoreEditor)
self.label.setObjectName(u"label")
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label) self.gridLayout.addWidget(self.pureNoneCheckBox, 2, 2, 1, 1)
self.scoreLineEdit = FocusSelectAllLineEdit(ScoreEditor) self.label_7 = QLabel(ScoreEditor)
self.scoreLineEdit.setObjectName(u"scoreLineEdit") self.label_7.setObjectName(u"label_7")
self.scoreLineEdit.setInputMask(u"B9'999'999;_") self.label_7.setText(u"Modifier")
self.label_7.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.scoreLineEdit) self.gridLayout.addWidget(self.label_7, 9, 0, 1, 1)
self.label_2 = QLabel(ScoreEditor)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"PURE")
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_2)
self.pureSpinBox = QSpinBox(ScoreEditor) self.pureSpinBox = QSpinBox(ScoreEditor)
self.pureSpinBox.setObjectName(u"pureSpinBox") self.pureSpinBox.setObjectName(u"pureSpinBox")
self.pureSpinBox.setMinimumSize(QSize(100, 0)) self.pureSpinBox.setMinimumSize(QSize(100, 0))
self.pureSpinBox.setMaximum(0) self.pureSpinBox.setMaximum(0)
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.pureSpinBox) self.gridLayout.addWidget(self.pureSpinBox, 2, 1, 1, 1)
self.label_3 = QLabel(ScoreEditor) self.clearTypeNoneCheckBox = QCheckBox(ScoreEditor)
self.label_3.setObjectName(u"label_3") self.clearTypeNoneCheckBox.setObjectName(u"clearTypeNoneCheckBox")
self.label_3.setText(u"FAR") self.clearTypeNoneCheckBox.setChecked(True)
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_3) self.gridLayout.addWidget(self.clearTypeNoneCheckBox, 10, 2, 1, 1)
self.farSpinBox = QSpinBox(ScoreEditor) self.label_2 = QLabel(ScoreEditor)
self.farSpinBox.setObjectName(u"farSpinBox") self.label_2.setObjectName(u"label_2")
self.farSpinBox.setMinimumSize(QSize(100, 0)) self.label_2.setText(u"PURE")
self.farSpinBox.setMaximum(0) self.label_2.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.farSpinBox) self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
self.label_4 = QLabel(ScoreEditor) self.label_4 = QLabel(ScoreEditor)
self.label_4.setObjectName(u"label_4") self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"LOST") self.label_4.setText(u"LOST")
self.label_4.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.formLayout.setWidget(3, QFormLayout.LabelRole, self.label_4) self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1)
self.lostSpinBox = QSpinBox(ScoreEditor) self.dateNoneCheckBox = QCheckBox(ScoreEditor)
self.lostSpinBox.setObjectName(u"lostSpinBox") self.dateNoneCheckBox.setObjectName(u"dateNoneCheckBox")
self.lostSpinBox.setMinimumSize(QSize(100, 0))
self.lostSpinBox.setMaximum(0)
self.formLayout.setWidget(3, QFormLayout.FieldRole, self.lostSpinBox) self.gridLayout.addWidget(self.dateNoneCheckBox, 5, 2, 1, 1)
self.label_5 = QLabel(ScoreEditor)
self.label_5.setObjectName(u"label_5")
self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_5)
self.dateTimeEdit = QDateTimeEdit(ScoreEditor)
self.dateTimeEdit.setObjectName(u"dateTimeEdit")
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.dateTimeEdit.sizePolicy().hasHeightForWidth())
self.dateTimeEdit.setSizePolicy(sizePolicy)
self.dateTimeEdit.setDateTime(QDateTime(QDate(2017, 1, 22), QTime(0, 0, 0)))
self.dateTimeEdit.setMinimumDate(QDate(2017, 1, 22))
self.formLayout.setWidget(4, QFormLayout.FieldRole, self.dateTimeEdit)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(5, QFormLayout.LabelRole, self.verticalSpacer) self.gridLayout.addItem(self.verticalSpacer, 6, 1, 1, 1)
self.label_6 = QLabel(ScoreEditor)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"MAX RECALL")
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_6)
self.maxRecallSpinBox = QSpinBox(ScoreEditor)
self.maxRecallSpinBox.setObjectName(u"maxRecallSpinBox")
self.maxRecallSpinBox.setMinimumSize(QSize(100, 0))
self.maxRecallSpinBox.setMinimum(-1)
self.maxRecallSpinBox.setMaximum(0)
self.maxRecallSpinBox.setValue(-1)
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.maxRecallSpinBox)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.validateLabel = QLabel(ScoreEditor) self.validateLabel = QLabel(ScoreEditor)
self.validateLabel.setObjectName(u"validateLabel") self.validateLabel.setObjectName(u"validateLabel")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
sizePolicy1.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.validateLabel.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.validateLabel.sizePolicy().hasHeightForWidth())
self.validateLabel.setSizePolicy(sizePolicy1) self.validateLabel.setSizePolicy(sizePolicy)
self.validateLabel.setText(u"...") self.validateLabel.setText(u"...")
self.validateLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) self.validateLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.horizontalLayout.addWidget(self.validateLabel) self.gridLayout.addWidget(self.validateLabel, 12, 1, 1, 1)
self.commitButton = QPushButton(ScoreEditor)
self.commitButton.setObjectName(u"commitButton")
self.horizontalLayout.addWidget(self.commitButton)
self.formLayout.setLayout(8, QFormLayout.SpanningRole, self.horizontalLayout)
self.label_8 = QLabel(ScoreEditor)
self.label_8.setObjectName(u"label_8")
self.formLayout.setWidget(7, QFormLayout.LabelRole, self.label_8)
self.clearTypeComboBox = QComboBox(ScoreEditor) self.clearTypeComboBox = QComboBox(ScoreEditor)
self.clearTypeComboBox.setObjectName(u"clearTypeComboBox") self.clearTypeComboBox.setObjectName(u"clearTypeComboBox")
self.clearTypeComboBox.setEnabled(False) self.clearTypeComboBox.setEnabled(False)
self.clearTypeComboBox.setMinimumSize(QSize(100, 0)) self.clearTypeComboBox.setMinimumSize(QSize(100, 0))
self.formLayout.setWidget(7, QFormLayout.FieldRole, self.clearTypeComboBox) self.gridLayout.addWidget(self.clearTypeComboBox, 10, 1, 1, 1)
self.label_8 = QLabel(ScoreEditor)
self.label_8.setObjectName(u"label_8")
self.label_8.setText(u"Clear Type")
self.label_8.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_8, 10, 0, 1, 1)
self.label_3 = QLabel(ScoreEditor)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"FAR")
self.label_3.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
self.label_6 = QLabel(ScoreEditor)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"MAX RECALL")
self.label_6.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_6, 8, 0, 1, 1)
self.maxRecallSpinBox = QSpinBox(ScoreEditor)
self.maxRecallSpinBox.setObjectName(u"maxRecallSpinBox")
self.maxRecallSpinBox.setEnabled(False)
self.maxRecallSpinBox.setMinimumSize(QSize(100, 0))
self.maxRecallSpinBox.setMinimum(0)
self.maxRecallSpinBox.setMaximum(0)
self.maxRecallSpinBox.setValue(0)
self.gridLayout.addWidget(self.maxRecallSpinBox, 8, 1, 1, 1)
self.modifierComboBox = QComboBox(ScoreEditor)
self.modifierComboBox.setObjectName(u"modifierComboBox")
self.modifierComboBox.setEnabled(False)
self.gridLayout.addWidget(self.modifierComboBox, 9, 1, 1, 1)
self.dateTimeEdit = QDateTimeEdit(ScoreEditor)
self.dateTimeEdit.setObjectName(u"dateTimeEdit")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.dateTimeEdit.sizePolicy().hasHeightForWidth())
self.dateTimeEdit.setSizePolicy(sizePolicy1)
self.dateTimeEdit.setCalendarPopup(False)
self.gridLayout.addWidget(self.dateTimeEdit, 5, 1, 1, 1)
self.lostSpinBox = QSpinBox(ScoreEditor)
self.lostSpinBox.setObjectName(u"lostSpinBox")
self.lostSpinBox.setMinimumSize(QSize(100, 0))
self.lostSpinBox.setMaximum(0)
self.gridLayout.addWidget(self.lostSpinBox, 4, 1, 1, 1)
self.lostNoneCheckBox = QCheckBox(ScoreEditor)
self.lostNoneCheckBox.setObjectName(u"lostNoneCheckBox")
self.gridLayout.addWidget(self.lostNoneCheckBox, 4, 2, 1, 1)
self.commentLineEdit = QLineEdit(ScoreEditor)
self.commentLineEdit.setObjectName(u"commentLineEdit")
self.commentLineEdit.setEnabled(False)
self.gridLayout.addWidget(self.commentLineEdit, 11, 1, 1, 1)
self.modifierNoneCheckBox = QCheckBox(ScoreEditor)
self.modifierNoneCheckBox.setObjectName(u"modifierNoneCheckBox")
self.modifierNoneCheckBox.setChecked(True)
self.gridLayout.addWidget(self.modifierNoneCheckBox, 9, 2, 1, 1)
self.commentNoneCheckBox = QCheckBox(ScoreEditor)
self.commentNoneCheckBox.setObjectName(u"commentNoneCheckBox")
self.commentNoneCheckBox.setChecked(True)
self.gridLayout.addWidget(self.commentNoneCheckBox, 11, 2, 1, 1)
self.label_5 = QLabel(ScoreEditor)
self.label_5.setObjectName(u"label_5")
self.label_5.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_5, 5, 0, 1, 1)
self.commitButton = QPushButton(ScoreEditor)
self.commitButton.setObjectName(u"commitButton")
self.gridLayout.addWidget(self.commitButton, 12, 2, 1, 1)
self.scoreLineEdit = FocusSelectAllLineEdit(ScoreEditor)
self.scoreLineEdit.setObjectName(u"scoreLineEdit")
self.scoreLineEdit.setInputMask(u"B9'999'999;_")
self.gridLayout.addWidget(self.scoreLineEdit, 1, 1, 1, 1)
self.maxRecallNoneCheckBox = QCheckBox(ScoreEditor)
self.maxRecallNoneCheckBox.setObjectName(u"maxRecallNoneCheckBox")
self.maxRecallNoneCheckBox.setChecked(True)
self.gridLayout.addWidget(self.maxRecallNoneCheckBox, 8, 2, 1, 1)
self.farSpinBox = QSpinBox(ScoreEditor)
self.farSpinBox.setObjectName(u"farSpinBox")
self.farSpinBox.setMinimumSize(QSize(100, 0))
self.farSpinBox.setMaximum(0)
self.gridLayout.addWidget(self.farSpinBox, 3, 1, 1, 1)
self.label_9 = QLabel(ScoreEditor)
self.label_9.setObjectName(u"label_9")
self.label_9.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_9, 11, 0, 1, 1)
self.label = QLabel(ScoreEditor)
self.label.setObjectName(u"label")
self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
self.farNoneCheckBox = QCheckBox(ScoreEditor)
self.farNoneCheckBox.setObjectName(u"farNoneCheckBox")
self.gridLayout.addWidget(self.farNoneCheckBox, 3, 2, 1, 1)
self.label_10 = QLabel(ScoreEditor)
self.label_10.setObjectName(u"label_10")
self.label_10.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_10, 0, 0, 1, 1)
self.idLabel = QLabel(ScoreEditor)
self.idLabel.setObjectName(u"idLabel")
self.gridLayout.addWidget(self.idLabel, 0, 1, 1, 1)
self.retranslateUi(ScoreEditor) self.retranslateUi(ScoreEditor)
self.pureNoneCheckBox.toggled.connect(self.pureSpinBox.setDisabled)
self.clearTypeNoneCheckBox.toggled.connect(self.clearTypeComboBox.setDisabled)
self.modifierNoneCheckBox.toggled.connect(self.modifierComboBox.setDisabled)
self.maxRecallNoneCheckBox.toggled.connect(self.maxRecallSpinBox.setDisabled)
self.dateNoneCheckBox.toggled.connect(self.dateTimeEdit.setDisabled)
self.lostNoneCheckBox.toggled.connect(self.lostSpinBox.setDisabled)
self.farNoneCheckBox.toggled.connect(self.farSpinBox.setDisabled)
self.commentNoneCheckBox.toggled.connect(self.commentLineEdit.setDisabled)
QMetaObject.connectSlotsByName(ScoreEditor) QMetaObject.connectSlotsByName(ScoreEditor)
# setupUi # setupUi
def retranslateUi(self, ScoreEditor): def retranslateUi(self, ScoreEditor):
self.label.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.score", None)) self.pureNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.label_5.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.time", None)) self.clearTypeNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.dateNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.dateTimeEdit.setDisplayFormat(QCoreApplication.translate("ScoreEditor", u"yyyy/M/d HH:mm:ss", None))
self.lostNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.modifierNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.commentNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.label_5.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.date", None))
self.commitButton.setText(QCoreApplication.translate("ScoreEditor", u"commitButton", None)) self.commitButton.setText(QCoreApplication.translate("ScoreEditor", u"commitButton", None))
self.label_8.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.clearType", None)) self.maxRecallNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.label_9.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.comment", None))
self.label.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.score", None))
self.farNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", None))
self.label_10.setText(QCoreApplication.translate("ScoreEditor", u"ID", None))
self.idLabel.setText(QCoreApplication.translate("ScoreEditor", u"idAutoInsert", None))
pass pass
# retranslateUi # retranslateUi

View File

@ -15,6 +15,7 @@ from PySide6.QtWidgets import (
from ui.implements.components.chartSelector import ChartSelector from ui.implements.components.chartSelector import ChartSelector
from ..utils import keepWidgetInScreen
from .base import TextSegmentDelegate from .base import TextSegmentDelegate
@ -165,6 +166,8 @@ class ChartDelegate(TextSegmentDelegate):
editor.move(editor.pos() + option.rect.topLeft()) editor.move(editor.pos() + option.rect.topLeft())
editor.setMaximumWidth(option.rect.width()) editor.setMaximumWidth(option.rect.width())
keepWidgetInScreen(editor)
def setEditorData(self, editor: ChartSelectorDelegateWrapper, index: QModelIndex): def setEditorData(self, editor: ChartSelectorDelegateWrapper, index: QModelIndex):
if self.checkIsEditor(editor) and isinstance(self.getChart(index), Chart): if self.checkIsEditor(editor) and isinstance(self.getChart(index), Chart):
editor.selectChart(self.getChart(index)) editor.selectChart(self.getChart(index))

View File

@ -27,11 +27,11 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
self.hLine = QFrame(self) # self.hLine = QFrame(self)
self.hLine.setFrameShape(QFrame.Shape.HLine) # self.hLine.setFrameShape(QFrame.Shape.HLine)
self.hLine.setFrameShadow(QFrame.Shadow.Plain) # self.hLine.setFrameShadow(QFrame.Shadow.Plain)
self.hLine.setFixedHeight(5) # self.hLine.setFixedHeight(5)
self.formLayout.insertRow(0, self.hLine) # self.gridLayout.addWidget(self.hLine, self.gridLayout.rowCount(), 0, -1, -1)
self.delegateHeader = QWidget(self) self.delegateHeader = QWidget(self)
self.delegateHeaderHBoxLayout = QHBoxLayout(self.delegateHeader) self.delegateHeaderHBoxLayout = QHBoxLayout(self.delegateHeader)
@ -47,7 +47,9 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
self.editorDiscardButton.clicked.connect(self.rejected) self.editorDiscardButton.clicked.connect(self.rejected)
self.delegateHeaderHBoxLayout.addWidget(self.editorDiscardButton) self.delegateHeaderHBoxLayout.addWidget(self.editorDiscardButton)
self.formLayout.insertRow(0, self.delegateHeader) self.gridLayout.addWidget(
self.delegateHeader, self.gridLayout.rowCount(), 0, -1, -1
)
def setText(self, score: Score, _extra: str = None): def setText(self, score: Score, _extra: str = None):
text = "Editing " text = "Editing "

View File

@ -1,10 +1,18 @@
from enum import IntEnum from enum import IntEnum
from typing import Optional from typing import Any, Optional
from arcaea_offline.calculate import calculate_score_range from arcaea_offline.calculate import calculate_score_range
from arcaea_offline.models import Chart, Score from arcaea_offline.models import Chart, Score
from PySide6.QtCore import QCoreApplication, QDateTime, Signal, Slot from PySide6.QtCore import QCoreApplication, QDateTime, Signal, Slot
from PySide6.QtWidgets import QMessageBox, QWidget from PySide6.QtWidgets import (
QCheckBox,
QComboBox,
QDateTimeEdit,
QLineEdit,
QMessageBox,
QSpinBox,
QWidget,
)
from ui.designer.components.scoreEditor_ui import Ui_ScoreEditor from ui.designer.components.scoreEditor_ui import Ui_ScoreEditor
@ -14,6 +22,7 @@ class ScoreValidateResult(IntEnum):
ScoreMismatch = 1 ScoreMismatch = 1
ScoreEmpty = 2 ScoreEmpty = 2
ChartInvalid = 50 ChartInvalid = 50
ScoreIncomplete = 100
class ScoreEditor(Ui_ScoreEditor, QWidget): class ScoreEditor(Ui_ScoreEditor, QWidget):
@ -26,6 +35,7 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
self.__validateBeforeAccept = True self.__validateBeforeAccept = True
self.__chart = None self.__chart = None
self.__score_id = None
self.scoreLineEdit.textChanged.connect(self.valueChanged) self.scoreLineEdit.textChanged.connect(self.valueChanged)
self.pureSpinBox.valueChanged.connect(self.valueChanged) self.pureSpinBox.valueChanged.connect(self.valueChanged)
@ -33,22 +43,41 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
self.lostSpinBox.valueChanged.connect(self.valueChanged) self.lostSpinBox.valueChanged.connect(self.valueChanged)
self.dateTimeEdit.dateTimeChanged.connect(self.valueChanged) self.dateTimeEdit.dateTimeChanged.connect(self.valueChanged)
self.maxRecallSpinBox.valueChanged.connect(self.valueChanged) self.maxRecallSpinBox.valueChanged.connect(self.valueChanged)
self.modifierComboBox.currentIndexChanged.connect(self.valueChanged)
self.clearTypeComboBox.currentIndexChanged.connect(self.valueChanged) self.clearTypeComboBox.currentIndexChanged.connect(self.valueChanged)
self.commentLineEdit.textChanged.connect(self.valueChanged)
self.pureNoneCheckBox.toggled.connect(self.valueChanged)
self.farNoneCheckBox.toggled.connect(self.valueChanged)
self.lostNoneCheckBox.toggled.connect(self.valueChanged)
self.dateNoneCheckBox.toggled.connect(self.valueChanged)
self.maxRecallNoneCheckBox.toggled.connect(self.valueChanged)
self.modifierNoneCheckBox.toggled.connect(self.valueChanged)
self.clearTypeNoneCheckBox.toggled.connect(self.valueChanged)
self.commentNoneCheckBox.toggled.connect(self.valueChanged)
self.valueChanged.connect(self.validateScore) self.valueChanged.connect(self.validateScore)
self.valueChanged.connect(self.updateValidateLabel) self.valueChanged.connect(self.updateValidateLabel)
self.modifierComboBox.addItem("NORMAL", 0)
self.modifierComboBox.addItem("EASY", 1)
self.modifierComboBox.addItem("HARD", 2)
self.modifierComboBox.setCurrentIndex(-1)
self.clearTypeComboBox.addItem("TRACK LOST", 0) self.clearTypeComboBox.addItem("TRACK LOST", 0)
self.clearTypeComboBox.addItem("TRACK COMPLETE", 1) self.clearTypeComboBox.addItem("NORMAL CLEAR", 1)
self.clearTypeComboBox.addItem("HARD LOST", 2) self.clearTypeComboBox.addItem("FULL RECALL", 2)
self.clearTypeComboBox.addItem("PURE MEMORY", 3)
self.clearTypeComboBox.addItem("EASY CLEAR", 4)
self.clearTypeComboBox.addItem("HARD CLEAR", 5)
self.clearTypeComboBox.setCurrentIndex(-1) self.clearTypeComboBox.setCurrentIndex(-1)
self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
def setValidateBeforeAccept(self, __bool: bool): def setValidateBeforeAccept(self, __bool: bool):
self.__validateBeforeAccept = __bool self.__validateBeforeAccept = __bool
def triggerValidateMessageBox(self): def triggerValidateMessageBox(self):
validate = self.validateScore() validate = self.validateScore()
if validate == ScoreValidateResult.Ok: if validate in [ScoreValidateResult.Ok, ScoreValidateResult.ScoreIncomplete]:
return True return True
if validate == ScoreValidateResult.ChartInvalid: if validate == ScoreValidateResult.ChartInvalid:
QMessageBox.critical( QMessageBox.critical(
@ -132,9 +161,12 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
score = self.value() score = self.value()
if score.pure is None or score.far is None:
return ScoreValidateResult.ScoreIncomplete
score_range = calculate_score_range(self.__chart.notes, score.pure, score.far) score_range = calculate_score_range(self.__chart.notes, score.pure, score.far)
score_in_range = score_range[0] <= score.score <= score_range[1]
note_in_range = score.pure + score.far + score.lost <= self.__chart.notes note_in_range = score.pure + score.far + score.lost <= self.__chart.notes
score_in_range = score_range[0] <= score.score <= score_range[1]
if not score_in_range or not note_in_range: if not score_in_range or not note_in_range:
return ScoreValidateResult.ScoreMismatch return ScoreValidateResult.ScoreMismatch
if score.score == 0: if score.score == 0:
@ -152,37 +184,114 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
text = QCoreApplication.translate("ScoreEditor", "validate.scoreMismatch") text = QCoreApplication.translate("ScoreEditor", "validate.scoreMismatch")
elif validate == ScoreValidateResult.ScoreEmpty: elif validate == ScoreValidateResult.ScoreEmpty:
text = QCoreApplication.translate("ScoreEditor", "validate.scoreEmpty") text = QCoreApplication.translate("ScoreEditor", "validate.scoreEmpty")
elif validate == ScoreValidateResult.ScoreIncomplete:
text = QCoreApplication.translate("ScoreEditor", "validate.scoreIncomplete")
else: else:
text = QCoreApplication.translate("ScoreEditor", "validate.unknownState") text = QCoreApplication.translate("ScoreEditor", "validate.unknownState")
self.validateLabel.setText(text) self.validateLabel.setText(text)
def value(self): def __getItemBaseName(self, item: QLineEdit | QSpinBox | QDateTimeEdit | QComboBox):
if isinstance(self.__chart, Chart): if isinstance(item, QSpinBox):
return Score( return item.objectName().replace("SpinBox", "")
song_id=self.__chart.song_id, elif isinstance(item, QLineEdit):
rating_class=self.__chart.rating_class, if item.objectName() == "scoreLineEdit":
score=self.score(), return "score"
pure=self.pureSpinBox.value(), return item.objectName().replace("LineEdit", "")
far=self.farSpinBox.value(), elif isinstance(item, QComboBox):
lost=self.lostSpinBox.value(), return item.objectName().replace("ComboBox", "")
date=self.dateTimeEdit.dateTime().toSecsSinceEpoch(), elif isinstance(item, QDateTimeEdit):
max_recall=self.maxRecallSpinBox.value() return "date"
if self.maxRecallSpinBox.value() > -1
else None, def __getItemNoneCheckBox(self, itemBaseName: str) -> QCheckBox | None:
return self.findChild(QCheckBox, f"{itemBaseName}NoneCheckBox")
def __getItemEnabled(self, itemBaseName: str):
return not self.__getItemNoneCheckBox(itemBaseName).isChecked()
def getItemValue(self, item: QLineEdit | QSpinBox | QDateTimeEdit | QComboBox):
if isinstance(item, QDateTimeEdit) and item.objectName() == "dateTimeEdit":
return (
None
if self.dateNoneCheckBox.isChecked()
else self.dateTimeEdit.dateTime().toSecsSinceEpoch()
) )
itemBaseName = self.__getItemBaseName(item)
itemEnabled = self.__getItemEnabled(itemBaseName)
if isinstance(item, QSpinBox):
return item.value() if itemEnabled else None
elif isinstance(item, QLineEdit):
return item.text() if itemEnabled else None
elif isinstance(item, QComboBox):
return item.currentData() if itemEnabled else None
def value(self):
if not isinstance(self.__chart, Chart):
return
score = Score(
song_id=self.__chart.song_id, rating_class=self.__chart.rating_class
)
if self.__score_id is not None:
score.id = self.__score_id
score.score = self.score()
score.pure = self.getItemValue(self.pureSpinBox)
score.far = self.getItemValue(self.farSpinBox)
score.lost = self.getItemValue(self.lostSpinBox)
score.date = self.getItemValue(self.dateTimeEdit)
score.max_recall = self.getItemValue(self.maxRecallSpinBox)
score.modifier = self.getItemValue(self.modifierComboBox)
score.clear_type = self.getItemValue(self.clearTypeComboBox)
score.comment = self.getItemValue(self.commentLineEdit)
return score
def setItemValue(
self, item: QLineEdit | QSpinBox | QDateTimeEdit | QComboBox, value: Any
):
if isinstance(item, QDateTimeEdit) and item.objectName() == "dateTimeEdit":
if value is None:
self.dateNoneCheckBox.setChecked(True)
else:
self.dateNoneCheckBox.setChecked(False)
self.dateTimeEdit.setDateTime(QDateTime.fromSecsSinceEpoch(value))
itemBaseName = self.__getItemBaseName(item)
itemNoneCheckBox = self.__getItemNoneCheckBox(itemBaseName)
if value is None:
itemNoneCheckBox.setChecked(True)
return
else:
itemNoneCheckBox.setChecked(False)
if isinstance(item, QSpinBox):
item.setValue(value)
elif isinstance(item, QLineEdit):
item.setText(value)
elif isinstance(item, QComboBox):
item.setCurrentIndex(value)
def setValue(self, score: Score): def setValue(self, score: Score):
if isinstance(score, Score): if not isinstance(score, Score):
scoreText = str(score.score) return
scoreText = scoreText.rjust(8, "0")
self.scoreLineEdit.setText(scoreText) if score.id is not None:
self.pureSpinBox.setValue(score.pure) self.__score_id = score.id
self.farSpinBox.setValue(score.far) self.idLabel.setText(str(self.__score_id))
self.lostSpinBox.setValue(score.lost) scoreText = str(score.score)
self.dateTimeEdit.setDateTime(QDateTime.fromSecsSinceEpoch(score.date)) scoreText = scoreText.rjust(8, "0")
if score.max_recall is not None: self.scoreLineEdit.setText(scoreText)
self.maxRecallSpinBox.setValue(score.max_recall)
self.setItemValue(self.pureSpinBox, score.pure)
self.setItemValue(self.farSpinBox, score.far)
self.setItemValue(self.lostSpinBox, score.lost)
self.setItemValue(self.dateTimeEdit, score.date)
self.setItemValue(self.maxRecallSpinBox, score.max_recall)
self.setItemValue(self.modifierComboBox, score.modifier)
self.setItemValue(self.clearTypeComboBox, score.clear_type)
self.setItemValue(self.commentLineEdit, score.comment)
def reset(self): def reset(self):
self.setChart(None) self.setChart(None)
@ -190,5 +299,7 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
self.pureSpinBox.setValue(0) self.pureSpinBox.setValue(0)
self.farSpinBox.setValue(0) self.farSpinBox.setValue(0)
self.lostSpinBox.setValue(0) self.lostSpinBox.setValue(0)
self.maxRecallSpinBox.setValue(-1) self.maxRecallSpinBox.setValue(0)
self.modifierComboBox.setCurrentIndex(-1)
self.clearTypeComboBox.setCurrentIndex(-1) self.clearTypeComboBox.setCurrentIndex(-1)
self.commentLineEdit.setText("")