class TermsFrame(ConfigBaseFrame): def __init__(self, parent=None): super(TermsFrame, self).__init__(parent) self.setObjectName("botnet_termsframe_start") self.disable_next_on_enter = True self.widget_layout = QVBoxLayout(self) self.setLayout(self.widget_layout) self.terms = QTextEdit(self) self.terms.setReadOnly(True) self.terms.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.terms.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.terms.setLineWrapMode(QTextEdit.WidgetWidth) self.terms.setWordWrapMode(QTextOption.WrapAnywhere) with open(os.path.join(sys.path[0], "../LICENSE")) as f: self.terms.setText(f.read()) self.widget_layout.addWidget(self.terms) self.accept = QCheckBox(self) self.accept.setChecked(False) self.accept.setText("Accept license") self.accept.setObjectName("license_checkbox") self.widget_layout.addWidget(self.accept) QMetaObject.connectSlotsByName(self) @Slot(bool) def on_license_checkbox_clicked(self, checked): self.set_next_enabled.emit(checked) self.disable_next_on_enter = not checked @Slot() def collect_info(self): return {"terms_accepted": self.accept.isChecked()}
class ImageInformation(QWidget): def __init__(self, settings: StackSettings, parent=None): """:type settings: ImageSettings""" super().__init__(parent) self._settings = settings self.path = QTextEdit("<b>Path:</b> example image") self.path.setWordWrapMode(QTextOption.WrapAnywhere) self.path.setReadOnly(True) self.setMinimumHeight(20) self.spacing = [QDoubleSpinBox() for _ in range(3)] self.multiple_files = QCheckBox("Show multiple files panel") self.multiple_files.setChecked( settings.get("multiple_files_widget", True)) self.multiple_files.stateChanged.connect(self.set_multiple_files) units_value = self._settings.get("units_value", Units.nm) for el in self.spacing: el.setAlignment(Qt.AlignRight) el.setButtonSymbols(QAbstractSpinBox.NoButtons) el.setRange(0, 100000) # noinspection PyUnresolvedReferences el.valueChanged.connect(self.image_spacing_change) self.units = QEnumComboBox(enum_class=Units) self.units.setCurrentEnum(units_value) # noinspection PyUnresolvedReferences self.units.currentIndexChanged.connect(self.update_spacing) self.add_files = AddFiles(settings, btn_layout=FlowLayout) spacing_layout = QFormLayout() spacing_layout.addRow("x:", self.spacing[0]) spacing_layout.addRow("y:", self.spacing[1]) spacing_layout.addRow("z:", self.spacing[2]) spacing_layout.addRow("Units:", self.units) layout = QVBoxLayout() layout.addWidget(self.path) layout.addWidget(QLabel("Image spacing:")) layout.addLayout(spacing_layout) layout.addWidget(self.add_files) layout.addStretch(1) layout.addWidget(self.multiple_files) self.setLayout(layout) self._settings.image_changed[str].connect(self.set_image_path) @Slot(int) def set_multiple_files(self, val): self._settings.set("multiple_files_widget", val) def update_spacing(self, index=None): units_value = self.units.currentEnum() if index is not None: self._settings.set("units_value", units_value) for el, val in zip(self.spacing, self._settings.image_spacing[::-1]): el.blockSignals(True) el.setValue(val * UNIT_SCALE[units_value.value]) el.blockSignals(False) if self._settings.is_image_2d(): # self.spacing[2].setValue(0) self.spacing[2].setDisabled(True) else: self.spacing[2].setDisabled(False) def set_image_path(self, value): self.path.setText(f"<b>Path:</b> {value}") self.update_spacing() def image_spacing_change(self): self._settings.image_spacing = [ el.value() / UNIT_SCALE[self.units.currentIndex()] for i, el in enumerate(self.spacing[::-1]) ] def showEvent(self, _a0): units_value = self._settings.get("units_value", Units.nm) for el, val in zip(self.spacing, self._settings.image_spacing[::-1]): el.setValue(val * UNIT_SCALE[units_value.value]) if self._settings.is_image_2d(): self.spacing[2].setValue(0) self.spacing[2].setDisabled(True) else: self.spacing[2].setDisabled(False)