mirror of
https://github.com/283375/arcaea-offline-pyside-ui.git
synced 2025-07-01 04:16:26 +00:00
wip: ScoreEditor
This commit is contained in:
@ -6,42 +6,32 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>365</width>
|
||||
<height>253</height>
|
||||
<width>450</width>
|
||||
<height>350</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">ScoreEditor</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
||||
</property>
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="2" column="2">
|
||||
<widget class="QCheckBox" name="pureNoneCheckBox">
|
||||
<property name="text">
|
||||
<string>formLabel.score</string>
|
||||
<string>setNone</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="FocusSelectAllLineEdit" name="scoreLineEdit">
|
||||
<property name="inputMask">
|
||||
<string notr="true">B9'999'999;_</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<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>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="pureSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
@ -54,81 +44,44 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string notr="true">FAR</string>
|
||||
<string notr="true">PURE</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<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 name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<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>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" 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="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>
|
||||
<item row="5" column="2">
|
||||
<widget class="QCheckBox" name="dateNoneCheckBox">
|
||||
<property name="text">
|
||||
<string>setNone</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@ -141,67 +94,23 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<item row="12" column="1">
|
||||
<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">MAX RECALL</string>
|
||||
<string notr="true">...</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" 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">
|
||||
<item row="10" column="1">
|
||||
<widget class="QComboBox" name="clearTypeComboBox">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@ -214,6 +123,219 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
@ -224,5 +346,134 @@
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<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>
|
||||
|
@ -3,7 +3,7 @@
|
||||
################################################################################
|
||||
## 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!
|
||||
################################################################################
|
||||
@ -15,9 +15,9 @@ 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, QComboBox, QDateTimeEdit, QFormLayout,
|
||||
QHBoxLayout, QLabel, QPushButton, QSizePolicy,
|
||||
QSpacerItem, QSpinBox, QWidget)
|
||||
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit,
|
||||
QGridLayout, QLabel, QLineEdit, QPushButton,
|
||||
QSizePolicy, QSpacerItem, QSpinBox, QWidget)
|
||||
|
||||
from ui.implements.components.focusSelectAllLineEdit import FocusSelectAllLineEdit
|
||||
|
||||
@ -25,143 +25,243 @@ class Ui_ScoreEditor(object):
|
||||
def setupUi(self, ScoreEditor):
|
||||
if not ScoreEditor.objectName():
|
||||
ScoreEditor.setObjectName(u"ScoreEditor")
|
||||
ScoreEditor.resize(365, 253)
|
||||
ScoreEditor.resize(450, 350)
|
||||
ScoreEditor.setWindowTitle(u"ScoreEditor")
|
||||
self.formLayout = QFormLayout(ScoreEditor)
|
||||
self.formLayout.setObjectName(u"formLayout")
|
||||
self.formLayout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow)
|
||||
self.formLayout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
|
||||
self.label = QLabel(ScoreEditor)
|
||||
self.label.setObjectName(u"label")
|
||||
self.gridLayout = QGridLayout(ScoreEditor)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.pureNoneCheckBox = QCheckBox(ScoreEditor)
|
||||
self.pureNoneCheckBox.setObjectName(u"pureNoneCheckBox")
|
||||
|
||||
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label)
|
||||
self.gridLayout.addWidget(self.pureNoneCheckBox, 2, 2, 1, 1)
|
||||
|
||||
self.scoreLineEdit = FocusSelectAllLineEdit(ScoreEditor)
|
||||
self.scoreLineEdit.setObjectName(u"scoreLineEdit")
|
||||
self.scoreLineEdit.setInputMask(u"B9'999'999;_")
|
||||
self.label_7 = QLabel(ScoreEditor)
|
||||
self.label_7.setObjectName(u"label_7")
|
||||
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.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.gridLayout.addWidget(self.label_7, 9, 0, 1, 1)
|
||||
|
||||
self.pureSpinBox = QSpinBox(ScoreEditor)
|
||||
self.pureSpinBox.setObjectName(u"pureSpinBox")
|
||||
self.pureSpinBox.setMinimumSize(QSize(100, 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.label_3.setObjectName(u"label_3")
|
||||
self.label_3.setText(u"FAR")
|
||||
self.clearTypeNoneCheckBox = QCheckBox(ScoreEditor)
|
||||
self.clearTypeNoneCheckBox.setObjectName(u"clearTypeNoneCheckBox")
|
||||
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.farSpinBox.setObjectName(u"farSpinBox")
|
||||
self.farSpinBox.setMinimumSize(QSize(100, 0))
|
||||
self.farSpinBox.setMaximum(0)
|
||||
self.label_2 = QLabel(ScoreEditor)
|
||||
self.label_2.setObjectName(u"label_2")
|
||||
self.label_2.setText(u"PURE")
|
||||
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.setObjectName(u"label_4")
|
||||
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.lostSpinBox.setObjectName(u"lostSpinBox")
|
||||
self.lostSpinBox.setMinimumSize(QSize(100, 0))
|
||||
self.lostSpinBox.setMaximum(0)
|
||||
self.dateNoneCheckBox = QCheckBox(ScoreEditor)
|
||||
self.dateNoneCheckBox.setObjectName(u"dateNoneCheckBox")
|
||||
|
||||
self.formLayout.setWidget(3, QFormLayout.FieldRole, self.lostSpinBox)
|
||||
|
||||
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.gridLayout.addWidget(self.dateNoneCheckBox, 5, 2, 1, 1)
|
||||
|
||||
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.setObjectName(u"validateLabel")
|
||||
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
|
||||
sizePolicy1.setHorizontalStretch(0)
|
||||
sizePolicy1.setVerticalStretch(0)
|
||||
sizePolicy1.setHeightForWidth(self.validateLabel.sizePolicy().hasHeightForWidth())
|
||||
self.validateLabel.setSizePolicy(sizePolicy1)
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.validateLabel.sizePolicy().hasHeightForWidth())
|
||||
self.validateLabel.setSizePolicy(sizePolicy)
|
||||
self.validateLabel.setText(u"...")
|
||||
self.validateLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
|
||||
|
||||
self.horizontalLayout.addWidget(self.validateLabel)
|
||||
|
||||
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.gridLayout.addWidget(self.validateLabel, 12, 1, 1, 1)
|
||||
|
||||
self.clearTypeComboBox = QComboBox(ScoreEditor)
|
||||
self.clearTypeComboBox.setObjectName(u"clearTypeComboBox")
|
||||
self.clearTypeComboBox.setEnabled(False)
|
||||
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.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)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, ScoreEditor):
|
||||
self.label.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.score", None))
|
||||
self.label_5.setText(QCoreApplication.translate("ScoreEditor", u"formLabel.time", None))
|
||||
self.pureNoneCheckBox.setText(QCoreApplication.translate("ScoreEditor", u"setNone", 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.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
|
||||
# retranslateUi
|
||||
|
||||
|
@ -15,6 +15,7 @@ from PySide6.QtWidgets import (
|
||||
|
||||
from ui.implements.components.chartSelector import ChartSelector
|
||||
|
||||
from ..utils import keepWidgetInScreen
|
||||
from .base import TextSegmentDelegate
|
||||
|
||||
|
||||
@ -164,6 +165,8 @@ class ChartDelegate(TextSegmentDelegate):
|
||||
def updateEditorGeometry(self, editor: QWidget, option, index: QModelIndex) -> None:
|
||||
editor.move(editor.pos() + option.rect.topLeft())
|
||||
editor.setMaximumWidth(option.rect.width())
|
||||
|
||||
keepWidgetInScreen(editor)
|
||||
|
||||
def setEditorData(self, editor: ChartSelectorDelegateWrapper, index: QModelIndex):
|
||||
if self.checkIsEditor(editor) and isinstance(self.getChart(index), Chart):
|
||||
|
@ -27,11 +27,11 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
self.hLine = QFrame(self)
|
||||
self.hLine.setFrameShape(QFrame.Shape.HLine)
|
||||
self.hLine.setFrameShadow(QFrame.Shadow.Plain)
|
||||
self.hLine.setFixedHeight(5)
|
||||
self.formLayout.insertRow(0, self.hLine)
|
||||
# self.hLine = QFrame(self)
|
||||
# self.hLine.setFrameShape(QFrame.Shape.HLine)
|
||||
# self.hLine.setFrameShadow(QFrame.Shadow.Plain)
|
||||
# self.hLine.setFixedHeight(5)
|
||||
# self.gridLayout.addWidget(self.hLine, self.gridLayout.rowCount(), 0, -1, -1)
|
||||
|
||||
self.delegateHeader = QWidget(self)
|
||||
self.delegateHeaderHBoxLayout = QHBoxLayout(self.delegateHeader)
|
||||
@ -47,7 +47,9 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
|
||||
self.editorDiscardButton.clicked.connect(self.rejected)
|
||||
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):
|
||||
text = "Editing "
|
||||
|
@ -1,10 +1,18 @@
|
||||
from enum import IntEnum
|
||||
from typing import Optional
|
||||
from typing import Any, Optional
|
||||
|
||||
from arcaea_offline.calculate import calculate_score_range
|
||||
from arcaea_offline.models import Chart, Score
|
||||
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
|
||||
|
||||
@ -14,6 +22,7 @@ class ScoreValidateResult(IntEnum):
|
||||
ScoreMismatch = 1
|
||||
ScoreEmpty = 2
|
||||
ChartInvalid = 50
|
||||
ScoreIncomplete = 100
|
||||
|
||||
|
||||
class ScoreEditor(Ui_ScoreEditor, QWidget):
|
||||
@ -26,6 +35,7 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
|
||||
|
||||
self.__validateBeforeAccept = True
|
||||
self.__chart = None
|
||||
self.__score_id = None
|
||||
|
||||
self.scoreLineEdit.textChanged.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.dateTimeEdit.dateTimeChanged.connect(self.valueChanged)
|
||||
self.maxRecallSpinBox.valueChanged.connect(self.valueChanged)
|
||||
self.modifierComboBox.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.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 COMPLETE", 1)
|
||||
self.clearTypeComboBox.addItem("HARD LOST", 2)
|
||||
self.clearTypeComboBox.addItem("NORMAL CLEAR", 1)
|
||||
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.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
|
||||
|
||||
def setValidateBeforeAccept(self, __bool: bool):
|
||||
self.__validateBeforeAccept = __bool
|
||||
|
||||
def triggerValidateMessageBox(self):
|
||||
validate = self.validateScore()
|
||||
|
||||
if validate == ScoreValidateResult.Ok:
|
||||
if validate in [ScoreValidateResult.Ok, ScoreValidateResult.ScoreIncomplete]:
|
||||
return True
|
||||
if validate == ScoreValidateResult.ChartInvalid:
|
||||
QMessageBox.critical(
|
||||
@ -132,9 +161,12 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
|
||||
|
||||
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_in_range = score_range[0] <= score.score <= score_range[1]
|
||||
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:
|
||||
return ScoreValidateResult.ScoreMismatch
|
||||
if score.score == 0:
|
||||
@ -152,37 +184,114 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
|
||||
text = QCoreApplication.translate("ScoreEditor", "validate.scoreMismatch")
|
||||
elif validate == ScoreValidateResult.ScoreEmpty:
|
||||
text = QCoreApplication.translate("ScoreEditor", "validate.scoreEmpty")
|
||||
elif validate == ScoreValidateResult.ScoreIncomplete:
|
||||
text = QCoreApplication.translate("ScoreEditor", "validate.scoreIncomplete")
|
||||
else:
|
||||
text = QCoreApplication.translate("ScoreEditor", "validate.unknownState")
|
||||
|
||||
self.validateLabel.setText(text)
|
||||
|
||||
def value(self):
|
||||
if isinstance(self.__chart, Chart):
|
||||
return Score(
|
||||
song_id=self.__chart.song_id,
|
||||
rating_class=self.__chart.rating_class,
|
||||
score=self.score(),
|
||||
pure=self.pureSpinBox.value(),
|
||||
far=self.farSpinBox.value(),
|
||||
lost=self.lostSpinBox.value(),
|
||||
date=self.dateTimeEdit.dateTime().toSecsSinceEpoch(),
|
||||
max_recall=self.maxRecallSpinBox.value()
|
||||
if self.maxRecallSpinBox.value() > -1
|
||||
else None,
|
||||
def __getItemBaseName(self, item: QLineEdit | QSpinBox | QDateTimeEdit | QComboBox):
|
||||
if isinstance(item, QSpinBox):
|
||||
return item.objectName().replace("SpinBox", "")
|
||||
elif isinstance(item, QLineEdit):
|
||||
if item.objectName() == "scoreLineEdit":
|
||||
return "score"
|
||||
return item.objectName().replace("LineEdit", "")
|
||||
elif isinstance(item, QComboBox):
|
||||
return item.objectName().replace("ComboBox", "")
|
||||
elif isinstance(item, QDateTimeEdit):
|
||||
return "date"
|
||||
|
||||
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):
|
||||
if isinstance(score, Score):
|
||||
scoreText = str(score.score)
|
||||
scoreText = scoreText.rjust(8, "0")
|
||||
self.scoreLineEdit.setText(scoreText)
|
||||
self.pureSpinBox.setValue(score.pure)
|
||||
self.farSpinBox.setValue(score.far)
|
||||
self.lostSpinBox.setValue(score.lost)
|
||||
self.dateTimeEdit.setDateTime(QDateTime.fromSecsSinceEpoch(score.date))
|
||||
if score.max_recall is not None:
|
||||
self.maxRecallSpinBox.setValue(score.max_recall)
|
||||
if not isinstance(score, Score):
|
||||
return
|
||||
|
||||
if score.id is not None:
|
||||
self.__score_id = score.id
|
||||
self.idLabel.setText(str(self.__score_id))
|
||||
scoreText = str(score.score)
|
||||
scoreText = scoreText.rjust(8, "0")
|
||||
self.scoreLineEdit.setText(scoreText)
|
||||
|
||||
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):
|
||||
self.setChart(None)
|
||||
@ -190,5 +299,7 @@ class ScoreEditor(Ui_ScoreEditor, QWidget):
|
||||
self.pureSpinBox.setValue(0)
|
||||
self.farSpinBox.setValue(0)
|
||||
self.lostSpinBox.setValue(0)
|
||||
self.maxRecallSpinBox.setValue(-1)
|
||||
self.maxRecallSpinBox.setValue(0)
|
||||
self.modifierComboBox.setCurrentIndex(-1)
|
||||
self.clearTypeComboBox.setCurrentIndex(-1)
|
||||
self.commentLineEdit.setText("")
|
||||
|
Reference in New Issue
Block a user