Compare commits

...

3 Commits

8 changed files with 1432 additions and 62 deletions

View File

@ -7,8 +7,7 @@ from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from numpy import repeat, convolve, ones, mean, std, empty, int64, sum as np_sum, pad, zeros, array, argmax, linspace, \
diff
from numpy import repeat, convolve, ones, mean, std, int64, argmax, linspace, diff
from overrides import overrides
from pandas import read_csv, DataFrame
from scipy.signal import find_peaks, resample, butter, sosfiltfilt, correlate

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
from pathlib import Path
from PySide6.QtWidgets import QMainWindow, QMessageBox, QFileDialog
from PySide6.QtGui import QGuiApplication
from matplotlib import use
from yaml import dump, load, FullLoader
@ -14,6 +15,7 @@ from func.Module_detect_Rpeak import MainWindow_detect_Rpeak
from func.Module_label_check import MainWindow_label_check
from func.Module_precisely_align import MainWindow_precisely_align
from func.Module_cut_PSG import MainWindow_cut_PSG
from func.Module_artifact_label import MainWindow_artifact_label
from func.utils.Constants import Constants, ConfigParams
@ -33,7 +35,15 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
self.ui = Ui_Signal_Label()
self.ui.setupUi(self)
self.setFixedSize(720, 1080) # 设置固定大小,禁止缩放
# self.setFixedSize(720, 1080) # 设置固定大小,禁止缩放
# 获得屏幕分辨率以34比例设置窗口大小
screen = QGuiApplication.primaryScreen()
size = screen.availableGeometry()
screen_height = size.height()
window_height = int(screen_height * 0.75)
window_width = int(window_height * 1 / 2)
self.resize(window_width, window_height)
# 消息弹窗初始化
self.msgBox = QMessageBox()
@ -50,6 +60,7 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
self.label_check = None
self.precisely_align = None
self.cut_PSG = None
self.artifact_label = None
# 绑定槽函数
self.ui.pushButton_open.clicked.connect(self.__slot_btn_open__)
@ -62,6 +73,7 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
self.ui.pushButton_label_check_ECG.clicked.connect(self.__slot_btn_label_check__)
self.ui.pushButton_precisely_align.clicked.connect(self.__slot_btn_precisely_align__)
self.ui.pushButton_cut_PSG.clicked.connect(self.__slot_btn_cut_PSG__)
self.ui.pushButton_artifact_label.clicked.connect(self.__slot_btn_artifact_label__)
@staticmethod
def __read_config__():
@ -181,6 +193,16 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
return
self.cut_PSG.show(root_path, int(sampID))
def __slot_btn_artifact_label__(self):
self.artifact_label = MainWindow_artifact_label()
root_path = self.ui.plainTextEdit_root_path.toPlainText()
sampID = self.ui.comboBox_sampID.currentText()
if not self.check_root_path():
return
if not self.check_sampID():
return
self.artifact_label.show(root_path, int(sampID))
def seek_sampID(self, path):
if not Path(path).exists():
PublicFunc.msgbox_output(self, Constants.MAINWINDOW_ROOT_PATH_NOT_EXIST, Constants.MSGBOX_TYPE_ERROR)

View File

@ -216,31 +216,35 @@ class ConfigParams:
# 体动标注
ARTIFACT_LABEL_CONFIG_FILE_PATH: str = "./config/Config_artifact_label.yaml"
ARTIFACT_LABEL_CONFIG_NEW_CONTENT: dict = {
"InputConfig": {
"orgBcgFreq": 1000,
"BCGFreq": 1000
},
"CustomAutoplayArgs": {
"MoveLength": 15000,
"MaxRange": 60000,
"MoveSpeed": 1000
}
}
ARTIFACT_LABEL_INPUT_ORGBCG_FILENAME: str = "orgBcg_Sync_"
ARTIFACT_LABEL_INPUT_BCG_FILENAME: str = "BCG_Sync_"
ARTIFACT_LABEL_SAVE_FILENAME_A: str = "Artifact_a"
ARTIFACT_LABEL_SAVE_FILENAME_B: str = "Artifact_b"
ARTIFACT_LABEL_SAVE_FILENAME_C: str = "Artifact_c"
ARTIFACT_LABEL_LABEL_TRANSPARENCY: float = 0.3
ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_SHORTCUT_KEY: str = "Z"
# TODO弃用
# 通用
VALIDATOR_INTEGER = QIntValidator(-2**31, 2**31 - 1)
VALIDATOR_DOUBLE = QDoubleValidator(-1e100, 1e100, 10)
# 体动打标
ARTIFACT_LABEL_INPUT_BCG_FILENAME: str = "BCG_sync_"
ARTIFACT_LABEL_INPUT_XINXIAO_FILENAME: str = "orgBcg_sync_"
ARTIFACT_LABEL_SAVE_TXT_ARTIFACT_FILENAME: str = "Artifact_a"
ARTIFACT_LABEL_SAVE_TXT_ARTIFACT_AMOUNT_FILENAME: str = "Artifact_b"
ARTIFACT_LABEL_SAVE_CSV_ARTIFACT_FILENAME: str = "Artifact_c"
ARTIFACT_LABEL_INPUT_XINXIAO_DEFAULT_FS: int = 1000
ARTIFACT_LABEL_INPUT_BCG_DEFAULT_FS: int = 1000
ARTIFACT_LABEL_MOVELENGTH_DEFAULT: int = 15000
ARTIFACT_LABEL_MAXRANGE_DEFAULT: int = 60000
ARTIFACT_LABEL_MOVESPEED_DEFAULT: int = 1000
ARTIFACT_LABEL_LABEL_TRANSPARENCY: float = 0.3
ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_SHORTCUT_KEY: str = "Z"
# 质量打标
BCG_QUALITY_LABEL_INPUT_BCG_FILENAME: str = "BCG_sync_"
BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME: str = "Artifact_a"

View File

@ -357,40 +357,45 @@ class Constants:
}
# 体动标注
ARTIFACT_LABEL_LOADING_ARCHIVE: str = "正在获取历史存档"
ARTIFACT_LABEL_ARCHIVE_EXIST: str = "找到历史存档,成功读取"
ARTIFACT_LABEL_ARCHIVE_NOT_EXIST: str = "未找到历史存档,创建新存档"
# TODO弃用
# 体动打标
ARTIFACT_LABEL_FILES_NOT_FOUND: str = f"无法找到{ConfigParams.ARTIFACT_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.ARTIFACT_LABEL_INPUT_XINXIAO_FILENAME}{ConfigParams.ENDSWITH_TXT},无法执行<体动标注>"
ARTIFACT_LABEL_FILES_FOUND: str = f"找到{ConfigParams.ARTIFACT_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.ARTIFACT_LABEL_INPUT_XINXIAO_FILENAME}{ConfigParams.ENDSWITH_TXT}"
ARTIFACT_LABEL_HISTORICAL_SAVE_FOUND: str = "找到历史存档文件,已成功读取"
ARTIFACT_LABEL_UPDATING_TABLE: str = "正在更新表格"
ARTIFACT_LABEL_UPDATING_INFO: str = "正在更新信息"
ARTIFACT_LABEL_UPDATE_FINISHED: str = "更新完成"
ARTIFACT_LABEL_UPDATE_FAILURE: str = "更新失败"
ARTIFACT_LABEL_RUNNING: str = "开始执行任务<体动标注>"
ARTIFACT_LABEL_INPUT_FAILURE_LENGTH: str = "导入失败,两个输入信号的长度不相等"
ARTIFACT_LABEL_INPUT_ARTIFACT_FAILURE_FORMAT: str = "导入体动失败,请检查体动标签格式"
ARTIFACT_LABEL_INPUT_ARTIFACT_FAILURE_LENGTH: str = "导入体动失败请检查体动长度是否为4的倍数"
ARTIFACT_LABEL_DELETE_ARTIFACT_SUCCESSFULLY: str = "体动被删除"
ARTIFACT_LABEL_DELETE_ARTIFACT_FAILURE: str = "需要被删除的体动不存在"
ARTIFACT_LABEL_FAILURE_REASON: str = {
"Data_Path_Not_Exist": "(数据路径不存在)",
"Read_Data_Exception": "(读取数据异常)",
"File_not_Exist": "(需要处理的文件不存在)",
"Data_Length_not_Correct": "orgBcg和BCG长度不匹配",
"Artifact_Format_Not_Correct": "(体动长度或格式不正确)",
"Get_Artifact_Format_Exception": "(获取体动长度或格式异常)",
"Update_tableWidget_Exception": "(更新表格异常)",
"Update_Info_Exception": "(更新信息异常)",
"Save_Data_not_Exist": "(需要保存的数据不存在)",
"Save_Exception": "(保存异常)"
}
ARTIFACT_LABEL_PLOT_LABEL_ORGBCG_SYNC: str = "orgBcg_sync"
ARTIFACT_LABEL_PLOT_LABEL_BCG_SYNC: str = "BCG_sync"
ARTIFACT_LABEL_PREV_MOVE: str = "向前移动"
ARTIFACT_LABEL_NEXT_MOVE: str = "向后移动"
ARTIFACT_LABEL_PAUSE: str = "暂停移动"
ARTIFACT_LABEL_SWITCH_PRESET_1: str = "变更为预设1"
ARTIFACT_LABEL_SWITCH_PRESET_2: str = "变更为预设2"
ARTIFACT_LABEL_SWITCH_PRESET_3: str = "变更为预设3"
ARTIFACT_LABEL_SWITCH_CUSTOM: str = "变更为自定义,请注意,自定义的参数未经校验,过大或过小的参数可能导致程序异常"
ARTIFACT_LABEL_JUMP_ARTIFACT: str = "跳转到体动"
ARTIFACT_LABEL_RECOVER_SCALE: str = "尺度恢复"
ARTIFACT_LABEL_MISS_ARGS: str = "打标参数未填写"
ARTIFACT_LABEL_OVERLAPPING: str = "当前所打标的片段存在重合,重合片段序号:"
ARTIFACT_LABEL_COLUMN_ORGBCG_SYNC: str = "orgBcg_sync"
ARTIFACT_LABEL_COLUMN_BCG_SYNC: str = "BCG_sync"
ARTIFACT_LABEL_AUTOPLAY_LEFT: str = "LEFT"
ARTIFACT_LABEL_AUTOPLAY_PAUSE: str = "PAUSE"
ARTIFACT_LABEL_AUTOPLAY_RIGHT: str = "RIGHT"
ARTIFACT_LABEL_AUTOPLAY_LEFT_INFO: str = "开始自动播放-向左"
ARTIFACT_LABEL_AUTOPLAY_PAUSE_INFO: str = "暂停自动播放"
ARTIFACT_LABEL_AUTOPLAY_RIGHT_INFO: str = "开始自动播放-向右"
ARTIFACT_LABEL_RECOVER_SCALE: str = "尺度恢复"
ARTIFACT_LABEL_BUTTON_PRESS_EVENT: str = "button_press_event"
ARTIFACT_LABEL_BUTTON_RELEASE_EVENT: str = "button_release_event"
ARTIFACT_LABEL_MOTION_NOTIFY_EVENT: str = "motion_notify_event"
ARTIFACT_LABEL_AUTOPLAY_PRESET1_INFO: str = "切换到自动播放-预设1"
ARTIFACT_LABEL_AUTOPLAY_PRESET2_INFO: str = "切换到自动播放-预设2"
ARTIFACT_LABEL_AUTOPLAY_PRESET3_INFO: str = "切换到自动播放-预设3"
ARTIFACT_LABEL_AUTOPLAY_PRESET_CUSTOM_INFO: str = "切换到自动播放-自定义"
ARTIFACT_LABEL_CUSTOM_NAVIGATIONTOOLBAR_WIDGET_NAME: str = "MainWindow"
ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_NAME: str = f"标注体动({ConfigParams.ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_SHORTCUT_KEY})"
ARTIFACT_LABEL_DELETE_ARTIFACT_SUCCESSFULLY: str = "体动被删除"
ARTIFACT_LABEL_DELETE_ARTIFACT_FAILURE: str = "需要被删除的体动不存在"
ARTIFACT_LABEL_ACTION_LABEL: str = f"标注体动({ConfigParams.ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_SHORTCUT_KEY})"
ARTIFACT_LABEL_LABELBTN_STYLE_1: str = """
QPushButton {
background-color: #ffa500; /* 设置背景颜色 */
@ -443,6 +448,12 @@ class Constants:
}"""
# TODO弃用
# 质量打标
BCG_QUALITY_LABEL_FILES_NOT_FOUND: str = f"无法找到{ConfigParams.BCG_QUALITY_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME}{ConfigParams.ENDSWITH_TXT},无法执行<BCG的质量标注>"
BCG_QUALITY_LABEL_FILES_FOUND: str = f"找到{ConfigParams.BCG_QUALITY_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME}{ConfigParams.ENDSWITH_TXT}"

6
run.py
View File

@ -1,8 +1,8 @@
from logging import getLogger, NOTSET, FileHandler, Formatter, StreamHandler, info
from os import environ
from pathlib import Path
from sys import argv
from time import strftime, localtime, time
import os
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication
from func.Module_mainwindow import MainWindow
@ -32,10 +32,10 @@ if __name__ == '__main__':
if spec and spec.origin:
dirname = Path(spec.origin).parent
plugin_path = dirname / 'plugins' / 'platforms'
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path.__str__()
environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path.__str__()
# 解决 Error #15: Initializing libiomp5md.dll
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
app = QApplication(argv)

View File

@ -389,13 +389,13 @@ class Ui_MainWindow_artifact_label(object):
self.verticalLayout_2.addItem(self.verticalSpacer_3)
self.pushButton = QPushButton(self.groupBox_left)
self.pushButton.setObjectName(u"pushButton")
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setFont(font1)
self.pushButton_save = QPushButton(self.groupBox_left)
self.pushButton_save.setObjectName(u"pushButton_save")
sizePolicy.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
self.pushButton_save.setSizePolicy(sizePolicy)
self.pushButton_save.setFont(font1)
self.verticalLayout_2.addWidget(self.pushButton)
self.verticalLayout_2.addWidget(self.pushButton_save)
self.groupBox_4 = QGroupBox(self.groupBox_left)
self.groupBox_4.setObjectName(u"groupBox_4")
@ -426,6 +426,7 @@ class Ui_MainWindow_artifact_label(object):
self.gridLayout_4.setObjectName(u"gridLayout_4")
self.spinBox_duration_type_3 = QSpinBox(self.groupBox_right)
self.spinBox_duration_type_3.setObjectName(u"spinBox_duration_type_3")
self.spinBox_duration_type_3.setEnabled(False)
self.spinBox_duration_type_3.setFont(font1)
self.spinBox_duration_type_3.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_duration_type_3.setMaximum(1000000000)
@ -434,6 +435,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_duration_type_4 = QSpinBox(self.groupBox_right)
self.spinBox_duration_type_4.setObjectName(u"spinBox_duration_type_4")
self.spinBox_duration_type_4.setEnabled(False)
self.spinBox_duration_type_4.setFont(font1)
self.spinBox_duration_type_4.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_duration_type_4.setMaximum(1000000000)
@ -446,6 +448,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_duration_type_2 = QSpinBox(self.groupBox_right)
self.spinBox_duration_type_2.setObjectName(u"spinBox_duration_type_2")
self.spinBox_duration_type_2.setEnabled(False)
self.spinBox_duration_type_2.setFont(font1)
self.spinBox_duration_type_2.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_duration_type_2.setMaximum(1000000000)
@ -478,6 +481,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_amount_type_3 = QSpinBox(self.groupBox_right)
self.spinBox_amount_type_3.setObjectName(u"spinBox_amount_type_3")
self.spinBox_amount_type_3.setEnabled(False)
self.spinBox_amount_type_3.setFont(font1)
self.spinBox_amount_type_3.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_amount_type_3.setMaximum(1000000000)
@ -486,6 +490,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_duration_type_5 = QSpinBox(self.groupBox_right)
self.spinBox_duration_type_5.setObjectName(u"spinBox_duration_type_5")
self.spinBox_duration_type_5.setEnabled(False)
self.spinBox_duration_type_5.setFont(font1)
self.spinBox_duration_type_5.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_duration_type_5.setMaximum(1000000000)
@ -494,6 +499,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_amount_type_1 = QSpinBox(self.groupBox_right)
self.spinBox_amount_type_1.setObjectName(u"spinBox_amount_type_1")
self.spinBox_amount_type_1.setEnabled(False)
self.spinBox_amount_type_1.setFont(font1)
self.spinBox_amount_type_1.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_amount_type_1.setMaximum(1000000000)
@ -547,6 +553,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_amount_type_2 = QSpinBox(self.groupBox_right)
self.spinBox_amount_type_2.setObjectName(u"spinBox_amount_type_2")
self.spinBox_amount_type_2.setEnabled(False)
self.spinBox_amount_type_2.setFont(font1)
self.spinBox_amount_type_2.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_amount_type_2.setMaximum(1000000000)
@ -563,6 +570,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_amount_type_4 = QSpinBox(self.groupBox_right)
self.spinBox_amount_type_4.setObjectName(u"spinBox_amount_type_4")
self.spinBox_amount_type_4.setEnabled(False)
self.spinBox_amount_type_4.setFont(font1)
self.spinBox_amount_type_4.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_amount_type_4.setMaximum(1000000000)
@ -577,6 +585,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_duration_type_1 = QSpinBox(self.groupBox_right)
self.spinBox_duration_type_1.setObjectName(u"spinBox_duration_type_1")
self.spinBox_duration_type_1.setEnabled(False)
self.spinBox_duration_type_1.setFont(font1)
self.spinBox_duration_type_1.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_duration_type_1.setMaximum(1000000000)
@ -585,6 +594,7 @@ class Ui_MainWindow_artifact_label(object):
self.spinBox_amount_type_5 = QSpinBox(self.groupBox_right)
self.spinBox_amount_type_5.setObjectName(u"spinBox_amount_type_5")
self.spinBox_amount_type_5.setEnabled(False)
self.spinBox_amount_type_5.setFont(font1)
self.spinBox_amount_type_5.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
self.spinBox_amount_type_5.setMaximum(1000000000)
@ -707,7 +717,7 @@ class Ui_MainWindow_artifact_label(object):
self.label_7.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u79fb\u52a8\u8ddd\u79bb", None))
self.label_6.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u6700\u5927\u8303\u56f4", None))
self.label_8.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u79fb\u52a8\u95f4\u9694(ms)", None))
self.pushButton.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u5bfc\u51fa\u6807\u7b7e", None))
self.pushButton_save.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u5bfc\u51fa\u6807\u7b7e", None))
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow_artifact_label", u"\u65e5\u5fd7", None))
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow_artifact_label", u"\u6807\u6ce8\u64cd\u4f5c\u548c\u4fe1\u606f", None))
self.pushButton_type_1.setText(QCoreApplication.translate("MainWindow_artifact_label", u"\u5267\u70c8\u4f53\u52a8", None))

View File

@ -677,7 +677,7 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="pushButton_save">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
@ -722,6 +722,9 @@
<layout class="QGridLayout" name="gridLayout_4" rowstretch="3,1,3,1,3,1,3,1,3,1,1,1">
<item row="5" column="2">
<widget class="QSpinBox" name="spinBox_duration_type_3">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -737,6 +740,9 @@
</item>
<item row="7" column="2">
<widget class="QSpinBox" name="spinBox_duration_type_4">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -765,6 +771,9 @@
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="spinBox_duration_type_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -819,6 +828,9 @@
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="spinBox_amount_type_3">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -834,6 +846,9 @@
</item>
<item row="9" column="2">
<widget class="QSpinBox" name="spinBox_duration_type_5">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -849,6 +864,9 @@
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBox_amount_type_1">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -951,6 +969,9 @@
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinBox_amount_type_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -984,6 +1005,9 @@
</item>
<item row="7" column="1">
<widget class="QSpinBox" name="spinBox_amount_type_4">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -1011,6 +1035,9 @@
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="spinBox_duration_type_1">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
@ -1026,6 +1053,9 @@
</item>
<item row="9" column="1">
<widget class="QSpinBox" name="spinBox_amount_type_5">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>