class MainWindowUI: def setup_ui(self, win: QMainWindow) -> None: # ui widgets self.toolbar = QToolBar("main", parent=win) self.port_combobox1 = PortCombobox("") self.port_combobox2 = PortCombobox("") self.baudrate_combobox = QComboBox() self.monitor1 = QPlainTextEdit("") self.monitor2 = QPlainTextEdit("") self.btn_clear_monitor1 = QPushButton("Clear") self.btn_clear_monitor2 = QPushButton("Clear") self.group_monitor1 = QGroupBox("Monitor 1") self.group_monitor2 = QGroupBox("Monitor 2") # setup widgets self.monitor1.setReadOnly(True) self.monitor1.setLineWrapMode(QPlainTextEdit.NoWrap) self.monitor1.setUndoRedoEnabled(False) self.monitor2.setReadOnly(True) self.monitor2.setLineWrapMode(QPlainTextEdit.NoWrap) self.monitor2.setUndoRedoEnabled(False) self.baudrate_combobox.addItems([ "300", "1200", "2400", "4800", "9600", "19200", "38400", "57600", "74880", "115200", "230400", "250000", "500000", "1000000", "2000000", ]) self.baudrate_combobox.setCurrentText("9600") # setup layout win.addToolBar(self.toolbar) v_layout = QVBoxLayout() # type:ignore v_layout.addWidget(self.monitor1) v_layout.addWidget(self.btn_clear_monitor1) self.group_monitor1.setLayout(v_layout) v_layout = QVBoxLayout() # type:ignore v_layout.addWidget(self.monitor2) v_layout.addWidget(self.btn_clear_monitor2) self.group_monitor2.setLayout(v_layout) h_layout = QHBoxLayout() # type:ignore h_layout.addWidget(self.group_monitor1) h_layout.addWidget(self.group_monitor2) central_widget = QWidget() central_widget.setLayout(h_layout) win.setCentralWidget(central_widget)
class DeviceConnectingManager(QDialog): def __init__( self, parent: QWidget, lcrmeter: LCRMeterIM3536, lcrmeter_status: DeviceStatus, stage_controller: StageControllerShot702, stage_controller_status: DeviceStatus, ) -> None: super().__init__(parent=parent) self._lcrmeter = lcrmeter self._lcrmeter_status = lcrmeter_status self._stage_controller = stage_controller self._stage_controller_status = stage_controller_status self._lcr_combobox_port = PortCombobox(LCRMeterIM3536.PORT_FILTER) self._lcr_combobox_baudrate = QComboBox() self._lcr_t_btn_connect = create_tool_button(is_text_beside_icon=True) self._stage_combobox_port = PortCombobox("") self._stage_t_btn_connect = create_tool_button( is_text_beside_icon=True) self._action_connect_lcr = create_action( self, text="Connect Port", icon=create_qicon(IconNames.ADD_GREEN), triggered=self._connect_lcr, ) self._action_disconnect_lcr = create_action( self, text="Disconnect Port", icon=create_qicon(IconNames.REMOVE_RED), triggered=self._disconnect_lcr, ) self._action_connect_stage_controller = create_action( self, text="Connect Port", icon=create_qicon(IconNames.ADD_GREEN), triggered=self._connect_stage_controller, ) self._action_disconnect_stage_controller = create_action( self, text="Disconnect Port", icon=create_qicon(IconNames.REMOVE_RED), triggered=self._disconnect_stage_controller, ) self._setup() def _setup(self): self._lcr_combobox_baudrate.addItems(LCRMeterIM3536.BAUDRATES) self._lcr_combobox_baudrate.setCurrentText( str(self._lcrmeter_status.baudrate)) if (description := self._lcrmeter_status.description) is not None: self._lcr_combobox_port.setItemText(0, description) if (description := self._stage_controller_status.description) is not None: self._stage_combobox_port.setItemText(0, description)
class InterpolateBadsDialog(QDialog): def __init__(self, parent): super().__init__(parent) self.setWindowTitle("Interpolate bad channels") vbox = QVBoxLayout(self) grid = QGridLayout() grid.addWidget(QLabel("Reset bads:"), 0, 0) self.reset_bads_checkbox = QCheckBox() self.reset_bads_checkbox.setChecked(True) grid.addWidget(self.reset_bads_checkbox, 0, 1) grid.addWidget(QLabel("Mode:"), 1, 0) self.mode_select = QComboBox() self.modes = {"Accurate": "accurate", "Fast": "fast"} self.mode_select.addItems(self.modes.keys()) self.mode_select.setCurrentText("Accurate") grid.addWidget(self.mode_select, 1, 1) grid.addWidget(QLabel("Origin (x, y, z):"), 2, 0) hbox = QHBoxLayout() self.x = QDoubleSpinBox() self.x.setValue(0) self.x.setDecimals(3) hbox.addWidget(self.x) self.y = QDoubleSpinBox() self.y.setValue(0) self.y.setDecimals(3) hbox.addWidget(self.y) self.z = QDoubleSpinBox() self.z.setValue(0.04) self.z.setDecimals(3) hbox.addWidget(self.z) grid.addLayout(hbox, 2, 1) vbox.addLayout(grid) buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) vbox.addWidget(buttonbox) buttonbox.accepted.connect(self.accept) buttonbox.rejected.connect(self.reject) vbox.setSizeConstraint(QVBoxLayout.SetFixedSize) @property def origin(self): x = float(self.x.value()) y = float(self.y.value()) z = float(self.z.value()) return x, y, z @property def mode(self): return self.mode_select.currentText() @property def reset_bads(self): return self.reset_bads_checkbox.isChecked()
class Page1Widget(QWidget): def __init__(self): super().__init__() # Create Widgets self.dropdown_quest = QComboBox() self.dropdown_quest.addItems(MODES) self.dropdown_quest.setCurrentText("Romaji") self.dropdown_ans = QComboBox() self.dropdown_ans.addItems(MODES) self.dropdown_also = QComboBox() self.dropdown_also.addItem("----") self.dropdown_also.addItems(MODES) self.spinbox_level = QSpinBox(Minimum=1, Maximum=2) self.list_groups = QListWidget(FixedWidth=W * .6) for group_name in GROUPS: item = QListWidgetItem(group_name) item.setCheckState(QtCore.Qt.Unchecked) self.list_groups.addItem(item) # Make Layout self.sub_layout = QVBoxLayout() self.sub_layout.addWidget(QLabel('Question:')) self.sub_layout.addWidget(self.dropdown_quest) self.sub_layout.addWidget(QLabel('Answer:')) self.sub_layout.addWidget(self.dropdown_ans) self.sub_layout.addWidget(QLabel('Also:')) self.sub_layout.addWidget(self.dropdown_also) self.sub_layout.addWidget(QLabel('Level:')) self.sub_layout.addWidget(self.spinbox_level) self.layout = QHBoxLayout(self) self.layout.addLayout(self.sub_layout) self.layout.addWidget(self.list_groups)
class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") MainWindow.resize(534, 188) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.verticalLayout = QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName(u"verticalLayout") self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName(u"horizontalLayout") self.line_source = QLineEdit(self.centralwidget) self.line_source.setObjectName(u"line_source") self.line_source.setEnabled(True) self.line_source.setReadOnly(True) self.horizontalLayout.addWidget(self.line_source) self.button_source = QPushButton(self.centralwidget) self.button_source.setObjectName(u"button_source") self.horizontalLayout.addWidget(self.button_source) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_2 = QHBoxLayout() self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.line_target = QLineEdit(self.centralwidget) self.line_target.setObjectName(u"line_target") self.line_target.setEnabled(True) self.line_target.setReadOnly(True) self.horizontalLayout_2.addWidget(self.line_target) self.button_target = QPushButton(self.centralwidget) self.button_target.setObjectName(u"button_target") self.horizontalLayout_2.addWidget(self.button_target) self.verticalLayout.addLayout(self.horizontalLayout_2) self.line = QFrame(self.centralwidget) self.line.setObjectName(u"line") self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.verticalLayout.addWidget(self.line) self.horizontalLayout_3 = QHBoxLayout() self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.label_2 = QLabel(self.centralwidget) self.label_2.setObjectName(u"label_2") self.horizontalLayout_3.addWidget(self.label_2) self.spin_memory = QSpinBox(self.centralwidget) self.spin_memory.setObjectName(u"spin_memory") self.horizontalLayout_3.addWidget(self.spin_memory) self.label_3 = QLabel(self.centralwidget) self.label_3.setObjectName(u"label_3") self.horizontalLayout_3.addWidget(self.label_3) self.spin_blur = QSpinBox(self.centralwidget) self.spin_blur.setObjectName(u"spin_blur") self.spin_blur.setValue(9) self.horizontalLayout_3.addWidget(self.spin_blur) self.label_5 = QLabel(self.centralwidget) self.label_5.setObjectName(u"label_5") self.horizontalLayout_3.addWidget(self.label_5) self.double_spin_threshold = QDoubleSpinBox(self.centralwidget) self.double_spin_threshold.setObjectName(u"double_spin_threshold") self.double_spin_threshold.setMaximum(1.000000000000000) self.double_spin_threshold.setSingleStep(0.050000000000000) self.double_spin_threshold.setValue(0.300000000000000) self.horizontalLayout_3.addWidget(self.double_spin_threshold) self.label_6 = QLabel(self.centralwidget) self.label_6.setObjectName(u"label_6") self.horizontalLayout_3.addWidget(self.label_6) self.double_spin_roimulti = QDoubleSpinBox(self.centralwidget) self.double_spin_roimulti.setObjectName(u"double_spin_roimulti") self.double_spin_roimulti.setMinimum(0.800000000000000) self.double_spin_roimulti.setMaximum(10.000000000000000) self.double_spin_roimulti.setSingleStep(0.050000000000000) self.double_spin_roimulti.setValue(1.000000000000000) self.horizontalLayout_3.addWidget(self.double_spin_roimulti) self.verticalLayout.addLayout(self.horizontalLayout_3) self.line_2 = QFrame(self.centralwidget) self.line_2.setObjectName(u"line_2") self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.verticalLayout.addWidget(self.line_2) self.horizontalLayout_4 = QHBoxLayout() self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") self.label = QLabel(self.centralwidget) self.label.setObjectName(u"label") self.horizontalLayout_4.addWidget(self.label) self.combo_box_weights = QComboBox(self.centralwidget) self.combo_box_weights.setObjectName(u"combo_box_weights") self.horizontalLayout_4.addWidget(self.combo_box_weights) self.label_4 = QLabel(self.centralwidget) self.label_4.setObjectName(u"label_4") self.horizontalLayout_4.addWidget(self.label_4) self.combo_box_scale = QComboBox(self.centralwidget) self.combo_box_scale.addItem("") self.combo_box_scale.addItem("") self.combo_box_scale.addItem("") self.combo_box_scale.setObjectName(u"combo_box_scale") self.horizontalLayout_4.addWidget(self.combo_box_scale) self.label_7 = QLabel(self.centralwidget) self.label_7.setObjectName(u"label_7") self.horizontalLayout_4.addWidget(self.label_7) self.spin_quality = QSpinBox(self.centralwidget) self.spin_quality.setObjectName(u"spin_quality") self.spin_quality.setMaximum(10) self.spin_quality.setValue(5) self.horizontalLayout_4.addWidget(self.spin_quality) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_4.addItem(self.horizontalSpacer) self.verticalLayout.addLayout(self.horizontalLayout_4) self.line_3 = QFrame(self.centralwidget) self.line_3.setObjectName(u"line_3") self.line_3.setFrameShape(QFrame.HLine) self.line_3.setFrameShadow(QFrame.Sunken) self.verticalLayout.addWidget(self.line_3) self.horizontalLayout_5 = QHBoxLayout() self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.progress = QProgressBar(self.centralwidget) self.progress.setObjectName(u"progress") self.progress.setEnabled(True) self.progress.setValue(0) self.horizontalLayout_5.addWidget(self.progress) self.button_start = QPushButton(self.centralwidget) self.button_start.setObjectName(u"button_start") self.horizontalLayout_5.addWidget(self.button_start) self.button_abort = QPushButton(self.centralwidget) self.button_abort.setObjectName(u"button_abort") self.button_abort.setEnabled(False) self.horizontalLayout_5.addWidget(self.button_abort) self.verticalLayout.addLayout(self.horizontalLayout_5) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) # setupUi def retranslateUi(self, MainWindow): MainWindow.setWindowTitle( QCoreApplication.translate("MainWindow", u"DashcamCleaner", None)) self.button_source.setText( QCoreApplication.translate("MainWindow", u"Select video", None)) self.button_target.setText( QCoreApplication.translate("MainWindow", u"Select target", None)) self.label_2.setText( QCoreApplication.translate("MainWindow", u"Frame memory:", None)) self.label_3.setText( QCoreApplication.translate("MainWindow", u"Blur size:", None)) self.label_5.setText( QCoreApplication.translate("MainWindow", u"Detection threshold:", None)) self.label_6.setText( QCoreApplication.translate("MainWindow", u"ROI enlargement", None)) self.label.setText( QCoreApplication.translate("MainWindow", u"Weights", None)) self.label_4.setText( QCoreApplication.translate("MainWindow", u"Inference size", None)) self.combo_box_scale.setItemText( 0, QCoreApplication.translate("MainWindow", u"360p", None)) self.combo_box_scale.setItemText( 1, QCoreApplication.translate("MainWindow", u"720p", None)) self.combo_box_scale.setItemText( 2, QCoreApplication.translate("MainWindow", u"1080p", None)) self.combo_box_scale.setCurrentText( QCoreApplication.translate("MainWindow", u"360p", None)) self.label_7.setText( QCoreApplication.translate("MainWindow", u"Output Quality", None)) self.button_start.setText( QCoreApplication.translate("MainWindow", u"Start", None)) self.button_abort.setText( QCoreApplication.translate("MainWindow", u"Abort", None))
class SetQuotaDiskWidget(QWidget): Sg_view_changed = Signal() def __init__(self, model: SettingsModel, parent=None): super(SetQuotaDiskWidget, self).__init__(parent) self._model = model self.setAccessibleName("InfoBox") self.title = QLabel() self.title.setText("Spazio di archiviazione") self.title.setAccessibleName("Title2") self.sottotitolo = QLabel() self.sottotitolo.setAccessibleName('Sottotitolo') self.sottotitolo.setText( "Cambia lo spazio di archiviazione destinato alla cartella sincronizzata" ) # Barra riempimento disco self.progress_label = QLabel() self.progress_label.setText("Spazio occupato:") self.disk_progress = QProgressBar() self.disk_progress.setFormat("") self.disk_quota = QLabel() # Modifica spazio dedicato self.spaceLabel = QLabel(" ") self.dedicated_space = QLineEdit() self.dedicated_space.setValidator(QDoubleValidator()) self.sizes_box = QComboBox() self.sizes_box.wheelEvent = lambda event: None _path_size = bitmath.parse_string(model.convert_size(model.get_size())) _disk_free = bitmath.parse_string( model.convert_size(model.get_free_disk())) self.populate_size_box(_path_size, _disk_free) self.change_quota_button = QPushButton("Cambia quota disco") self.change_quota_button.setMaximumWidth(150) self.change_quota_button.clicked.connect( self.Sl_dedicated_space_changed) self.dedicated_space.returnPressed.connect( self.Sl_dedicated_space_changed) self.buttonLayout = QHBoxLayout() self.buttonLayout.addWidget(self.spaceLabel) self.buttonLayout.addWidget(self.change_quota_button) self.buttonLayout.addWidget(self.spaceLabel) set_space_layout = QHBoxLayout() set_space_layout.addWidget(self.dedicated_space) set_space_layout.addWidget(self.sizes_box) quota_layout = QHBoxLayout() quota_layout.setAlignment(Qt.AlignLeft) quota_layout.addWidget(self.progress_label) quota_layout.addWidget(self.disk_quota) # layout disk_layout = QVBoxLayout() disk_layout.setAlignment(Qt.AlignLeft) disk_layout.addWidget(self.title) disk_layout.addWidget(self.sottotitolo) disk_layout.addWidget(self.spaceLabel) disk_layout.addLayout(quota_layout) disk_layout.addWidget(self.disk_progress) disk_layout.addWidget(self.spaceLabel) disk_layout.addLayout(set_space_layout) disk_layout.addLayout(self.buttonLayout) self.setLayout(disk_layout) self.Sl_model_changed() @Slot() def Sl_dedicated_space_changed(self): self.Sg_view_changed.emit() @Slot() def Sl_model_changed(self): """ Slot collegato ai segnali del model, aggiorna la vista con i nuovi valori :return: None """ # Prendo quota disco con unità e il peso della cartella senza unità (Byte default) new_max_quota = self._model.get_quota_disco() _folder_size = self._model.get_size() # Converto ad oggetto bitmath il peso della cartella e la quota disco folder_size_parsed = bitmath.parse_string( self._model.convert_size(_folder_size)) quota_disco_parsed = bitmath.parse_string(new_max_quota) # Imposto la textbox che mi dice quanto peso ho occupato su quello disponibile self.disk_quota.setText( f"{folder_size_parsed} su {new_max_quota} in uso") free_disk_parsed = bitmath.parse_string( self._model.convert_size(self._model.get_free_disk())) # Imposto la textbox che richiede input if not self.dedicated_space.hasFocus(): self.dedicated_space.setText(str(quota_disco_parsed.value)) # Creo i nuovi valori della combobox if not self.sizes_box.hasFocus(): self.populate_size_box(folder_size_parsed, free_disk_parsed) # Imposto l'item in focus della combobox self.sizes_box.setCurrentText(quota_disco_parsed.unit) # Prendo dimensione corrente della sync folder e della quota disco # e metto in proporzione con quotadisco:100=syncfolder:x _progress_bar_max_value = 100 _tmp = folder_size_parsed.to_Byte().value * _progress_bar_max_value _progress_bar_current_percentage = _tmp / quota_disco_parsed.to_Byte( ).value # Inserisco nuovi valori nella progress bar self.disk_progress.setRange(0, _progress_bar_max_value) self.disk_progress.setValue(_progress_bar_current_percentage) # Se la cartella occupa più spazio di quanto voluto allora la porto a quanto occupa if quota_disco_parsed < folder_size_parsed and not self.dedicated_space.hasFocus( ): self.dedicated_space.setText(str(folder_size_parsed.value)) self.sizes_box.setCurrentText(folder_size_parsed.unit) self.Sg_view_changed.emit() def populate_size_box( self, _min: str, _max: str, ) -> None: """ This method populates the size box with only the available units ex hdd has only <1gb so gb will not be used, the current folder is heavier than 1mb so kb will not be used. :param _min: minimum value with unit ex 10 KiB or just 'KiB' :param _max: maximum value with unit ex 10 KiB or just 'KiB' :return: None """ _sizes = "Byte", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB" # Converto in ogni caso a string, in caso in cui venga passato un oggetto # tipo bitmath _min = str(_min) _max = str(_max) # Rimuovo eventuali numeri e caratteri extra, tengo solo l'unità di misura _min = ''.join(i for i in _min if not i.isdigit() and i != '.') _max = ''.join(i for i in _max if not i.isdigit() and i != '.') # Rimuovo possibili spazi ad inizio e fine stringa _min = _min.strip() _max = _max.strip() # Rimuovo dal vettore di possibili unità di misura tutte le unità sotto il lower bound lower_bound = _sizes[_sizes.index(_min):] # Rimuovo dal vettore di possibili unità di misura tutte le unità sopra l'upper bound upper_bound = lower_bound[:lower_bound.index(_max) + 1] # Pulisco il vecchio combo box self.sizes_box.clear() # Inserisco nuovi valori self.sizes_box.addItems(upper_bound)
class ParameterEditorItem(QWidget): onRemoveParameter = Signal(Parameter) onMoveParameterUp = Signal(Parameter) onMoveParameterDown = Signal(Parameter) onChanged = Signal() def __init__(self, parameter: Parameter): super().__init__() self.parameter = parameter deleteButton = QToolButton() deleteButton.setText("X") deleteButton.clicked.connect( lambda: self.onRemoveParameter.emit(self.parameter)) upButton = QToolButton() upButton.setText("\u2191") upButton.clicked.connect( lambda: self.onMoveParameterUp.emit(self.parameter)) downButton = QToolButton() downButton.setText("\u2193") downButton.clicked.connect( lambda: self.onMoveParameterDown.emit(self.parameter)) buttonsLayout = QVBoxLayout() buttonsLayout.setAlignment(Qt.AlignTop) buttonsLayout.addWidget(deleteButton) buttonsLayout.addWidget(upButton) buttonsLayout.addWidget(downButton) self._nameLabel = QLabel("Name") self._nameField = QLineEdit() self._nameField.textChanged.connect(self.OnChanged) self._dataTypeLabel = QLabel("Data Type") self._dataTypeField = QComboBox() for dataType in DataType: self._dataTypeField.addItem(dataType.ToString(), userData=dataType) self._dataTypeField.currentIndexChanged.connect(self.OnChanged) self._defaultValueLabel = QLabel("Default Value") self._defaultInteger = QSpinBox() self._defaultInteger.valueChanged.connect(self.OnChanged) self._defaultFloat = QDoubleSpinBox() self._defaultFloat.valueChanged.connect(self.OnChanged) self._defaultBoolean = QComboBox() self._defaultBoolean.addItem("True", True) self._defaultBoolean.addItem("False", False) self._defaultBoolean.currentIndexChanged.connect(self.OnChanged) self._defaultString = QLineEdit() self._defaultString.textChanged.connect(self.OnChanged) self._minimumLabel = QLabel("Minimum") self._minimumFloat = QDoubleSpinBox() self._minimumFloat.valueChanged.connect(self.OnChanged) self._minimumInteger = QSpinBox() self._minimumInteger.valueChanged.connect(self.OnChanged) self._maximumLabel = QLabel("Maximum") self._maximumFloat = QDoubleSpinBox() self._maximumFloat.valueChanged.connect(self.OnChanged) self._maximumInteger = QSpinBox() self._maximumInteger.valueChanged.connect(self.OnChanged) gridLayout = QGridLayout() gridLayout.setAlignment(Qt.AlignTop) gridLayout.addWidget(self._nameLabel, 0, 0) gridLayout.addWidget(self._nameField, 0, 1) gridLayout.addWidget(self._dataTypeLabel, 1, 0) gridLayout.addWidget(self._dataTypeField, 1, 1) gridLayout.addWidget(self._defaultValueLabel, 2, 0) for defaultField in [ self._defaultInteger, self._defaultFloat, self._defaultBoolean, self._defaultString ]: gridLayout.addWidget(defaultField, 2, 1) gridLayout.addWidget(self._minimumLabel, 3, 0) gridLayout.addWidget(self._minimumInteger, 3, 1) gridLayout.addWidget(self._minimumFloat, 3, 1) gridLayout.addWidget(self._maximumLabel, 4, 0) gridLayout.addWidget(self._maximumInteger, 4, 1) gridLayout.addWidget(self._maximumFloat, 4, 1) layout = QHBoxLayout() layout.addLayout(buttonsLayout) layout.addLayout(gridLayout) self.setLayout(layout) self.SetFieldsFromParameter() def SetFieldsFromParameter(self): self._nameField.setText(self.parameter.name) self._dataTypeField.setCurrentText(self.parameter.dataType.ToString()) minFloat, maxFloat = self.parameter.minimumFloat, self.parameter.maximumFloat minInt, maxInt = self.parameter.minimumInteger, self.parameter.maximumInteger self._minimumFloat.setRange(-2**30, maxFloat) self._maximumFloat.setRange(minFloat, 2**30) self._minimumInteger.setRange(-2**30, maxInt) self._maximumInteger.setRange(minInt, 2**30) if self._minimumFloat.value() != minFloat: self._minimumFloat.setValue(minFloat) if self._maximumFloat.value() != maxFloat: self._maximumFloat.setValue(maxFloat) if self._minimumInteger.value() != minInt: self._minimumInteger.setValue(minInt) if self._maximumInteger.value() != maxInt: self._maximumInteger.setValue(maxInt) self._defaultInteger.setRange(minInt, maxInt) self._defaultFloat.setRange(minFloat, maxFloat) if self._defaultInteger.value() != self.parameter.defaultValueDict[ DataType.INTEGER]: self._defaultInteger.setValue( self.parameter.defaultValueDict[DataType.INTEGER]) if self._defaultFloat.value() != self.parameter.defaultValueDict[ DataType.FLOAT]: self._defaultFloat.setValue( self.parameter.defaultValueDict[DataType.FLOAT]) if self._defaultBoolean.currentData( ) != self.parameter.defaultValueDict[DataType.BOOLEAN]: self._defaultBoolean.setCurrentText( str(self.parameter.defaultValueDict[DataType.BOOLEAN])) if self._defaultString.text() != self.parameter.defaultValueDict[ DataType.STRING]: self._defaultString.setText( self.parameter.defaultValueDict[DataType.STRING]) self.UpdateVisibility() def UpdateVisibility(self): self._defaultInteger.setVisible( self._dataTypeField.currentData() is DataType.INTEGER) self._defaultFloat.setVisible( self._dataTypeField.currentData() is DataType.FLOAT) self._defaultBoolean.setVisible( self._dataTypeField.currentData() is DataType.BOOLEAN) self._defaultString.setVisible( self._dataTypeField.currentData() is DataType.STRING) self._minimumLabel.setVisible(self._dataTypeField.currentData() in [DataType.INTEGER, DataType.FLOAT]) self._maximumLabel.setVisible(self._dataTypeField.currentData() in [DataType.INTEGER, DataType.FLOAT]) self._minimumInteger.setVisible( self._dataTypeField.currentData() is DataType.INTEGER) self._maximumInteger.setVisible( self._dataTypeField.currentData() is DataType.INTEGER) self._minimumFloat.setVisible( self._dataTypeField.currentData() is DataType.FLOAT) self._maximumFloat.setVisible( self._dataTypeField.currentData() is DataType.FLOAT) self._minimumLabel.setVisible(self._dataTypeField.currentData() in [DataType.INTEGER, DataType.FLOAT]) self._maximumLabel.setVisible(self._dataTypeField.currentData() in [DataType.INTEGER, DataType.FLOAT]) self._defaultValueLabel.setVisible(self._dataTypeField.currentData( ) not in [DataType.VALVE, DataType.PROGRAM, DataType.PROGRAM_PRESET]) def OnChanged(self): self.UpdateVisibility() self._minimumFloat.setMaximum(self._maximumFloat.value()) self._maximumFloat.setMinimum(self._minimumFloat.value()) self._minimumInteger.setMaximum(self._maximumInteger.value()) self._maximumInteger.setMinimum(self._minimumInteger.value()) self._defaultInteger.setRange(self._minimumInteger.value(), self._maximumInteger.value()) self._defaultFloat.setRange(self._minimumFloat.value(), self._maximumFloat.value()) self.onChanged.emit() def UpdateParameter(self): self.parameter.name = self._nameField.text() self.parameter.dataType = self._dataTypeField.currentData() self.parameter.defaultValueDict[ DataType.INTEGER] = self._defaultInteger.value() self.parameter.defaultValueDict[ DataType.FLOAT] = self._defaultFloat.value() self.parameter.defaultValueDict[ DataType.BOOLEAN] = self._defaultBoolean.currentData() self.parameter.defaultValueDict[ DataType.STRING] = self._defaultString.text() self.parameter.minimumInteger = self._minimumInteger.value() self.parameter.maximumInteger = self._maximumInteger.value() self.parameter.minimumFloat = self._minimumFloat.value() self.parameter.maximumFloat = self._maximumFloat.value() self.parameter.ValidateDefaultValues() self.SetFieldsFromParameter()