class UiSmoothingDialog(QDialog): """ Initialize all the TopAxisDialog Qt UI elements. """ def __init__(self, *args, **kwargs): super(UiSmoothingDialog, self).__init__(*args, **kwargs) size_policy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) self.setSizePolicy(size_policy) # Dialog settings self.setWindowTitle("Smoothing Dialog") self.layout_vertical = QVBoxLayout(self) self.layout_horizontal = QHBoxLayout() self.layout_vertical.addLayout(self.layout_horizontal) # Define header selectors self.label_axis_mode = QLabel(self) self.combo_box_kernel = QComboBox(self) self.label_axis_mode.setText("Kernel") self.layout_horizontal.addWidget(self.label_axis_mode) self.layout_horizontal.addWidget(self.combo_box_kernel) self.layout_horizontal.setStretch(1, 1) # Define velocity self.group_box = QGroupBox(self) self.label_stddev = QLabel(self.group_box) self.line_edit_stddev = QLineEdit(self.group_box) self.group_box.setTitle("Parameters") self.label_stddev.setText("Standard Deviation") self.layout_horizontal_2 = QHBoxLayout(self.group_box) self.layout_horizontal_2.addWidget(self.label_stddev) self.layout_horizontal_2.addWidget(self.line_edit_stddev) self.layout_vertical.addWidget(self.group_box) # Add a spacer self.layout_vertical.addStretch(1) # Buttons self.button_box = QDialogButtonBox(self) self.button_box.setOrientation(Qt.Horizontal) self.button_box.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.button_box.setObjectName("buttonBox") self.layout_vertical.addWidget(self.button_box) self.button_box.accepted.connect(self.accept) self.button_box.rejected.connect(self.reject)
class UiTopAxisDialog(QDialog): """ Initialize all the TopAxisDialog Qt UI elements. """ def __init__(self, *args, **kwargs): super(UiTopAxisDialog, self).__init__(*args, **kwargs) self.setObjectName("Top Axis Dialog") size_policy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) self.setSizePolicy(size_policy) # Dialog settings self.setWindowTitle("Axis Settings") self.layout_vertical = QVBoxLayout(self) self.layout_horizontal = QHBoxLayout() self.layout_vertical.addLayout(self.layout_horizontal) # Define header selectors self.label_axis_mode = QLabel(self) self.combo_box_axis_mode = QComboBox(self) self.label_axis_mode.setText("Axis mode") self.layout_horizontal.addWidget(self.label_axis_mode) self.layout_horizontal.addWidget(self.combo_box_axis_mode) # Define velocity self.group_box_velocity = QGroupBox(self) self.label_reference_wavelength = QLabel(self.group_box_velocity) self.line_edit_reference_wavelength = QLineEdit( self.group_box_velocity) self.group_box_velocity.setTitle("Velocity parameters") self.label_reference_wavelength.setText("Reference wavelength") self.layout_horizontal_2 = QHBoxLayout(self.group_box_velocity) self.layout_horizontal_2.addWidget(self.label_reference_wavelength) self.layout_horizontal_2.addWidget(self.line_edit_reference_wavelength) self.layout_vertical.addWidget(self.group_box_velocity) # Define redshift self.group_box_redshift = QGroupBox(self) self.label_redshift = QLabel(self.group_box_redshift) self.line_edit_redshift = QLineEdit(self.group_box_redshift) self.group_box_redshift.setTitle("Redshift parameters") self.label_redshift.setText("Amount") self.layout_horizontal_3 = QHBoxLayout(self.group_box_redshift) self.layout_horizontal_3.addWidget(self.label_redshift) self.layout_horizontal_3.addWidget(self.line_edit_redshift) self.layout_vertical.addWidget(self.group_box_redshift) # Add a spacer self.layout_vertical.addStretch(1) # Buttons self.button_box = QDialogButtonBox(self) self.button_box.setOrientation(Qt.Horizontal) self.button_box.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.button_box.setObjectName("buttonBox") self.layout_vertical.addWidget(self.button_box) self.button_box.accepted.connect(self.accept) self.button_box.rejected.connect(self.reject)
class FramesWidget(BaseFrame): rejected = Signal() accepted = Signal() back = Signal() def __init__(self, parent=None): super(FramesWidget, self).__init__(parent) self.config_frames = [] self.frames_instances = [] self.current_frame = 0 self.widget_layout = QVBoxLayout(self) self.setLayout(self.widget_layout) self.frames_widget = QWidget(self) self.frames_widget.setContentsMargins(0, 0, 0, 0) self.frames_widget_layout = QGridLayout(self.frames_widget) self.frames_widget_layout.setContentsMargins(0, 0, 0, 0) self.widget_layout.addWidget(self.frames_widget) self.btn_box = QDialogButtonBox(self) self.btn_box.setObjectName("btn_box") self.btn_box.setStandardButtons(QDialogButtonBox.Reset | QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.btn_box.button(QDialogButtonBox.Reset).setText("Back") self.btn_box.button(QDialogButtonBox.Ok).setText("Next") self.widget_layout.addWidget(self.btn_box) self.btn_box.button(QDialogButtonBox.Reset).clicked.connect( self.on_btn_box_resetted) QMetaObject.connectSlotsByName(self) def add_frames(self, frames): for frame in frames: self.add_frame(frame) def add_frame(self, frame): f = frame(self.frames_widget) f.setVisible(False) f.set_next_enabled.connect( self.btn_box.button(QDialogButtonBox.Ok).setEnabled) self.frames_widget_layout.addWidget(f, 0, 0, 1, 1) self.frames_instances.append(f) if len(self.frames_instances) > 0: self.frames_instances[0].setVisible(True) if self.frames_instances[0].disable_next_on_enter: self.btn_box.button(QDialogButtonBox.Ok).setEnabled(False) @Slot(dict) def set_options(self, options): for frame in self.frames_instances: frame.set_options(options) @Slot() def collect_info(self) -> dict: """Get info from every page""" settings = {} for frame in self.frames_instances: settings = settings | frame.collect_info() return settings @Slot() def on_btn_box_rejected(self): """When user clicks cancel button""" self.rejected.emit() @Slot() def on_btn_box_accepted(self): """On Next button clicked""" if self.current_frame + 1 < len(self.frames_instances): # if not last self.frames_instances[self.current_frame].setVisible(False) self.current_frame = self.current_frame + 1 self.frames_instances[self.current_frame].setVisible(True) # if disable on enter page self.btn_box.button( QDialogButtonBox.Ok).setEnabled(not self.frames_instances[ self.current_frame].disable_next_on_enter) # if next page is last self._change_next_finish() # if last page elif self.current_frame + 1 == len(self.frames_instances): self.accepted.emit() @Slot() def on_btn_box_resetted(self): """On Back button clicked.""" if self.current_frame > 0: self.frames_instances[self.current_frame].setVisible(False) self.current_frame = self.current_frame - 1 self.frames_instances[self.current_frame].setVisible(True) self._change_next_finish() self.btn_box.button( QDialogButtonBox.Ok).setEnabled(not self.frames_instances[ self.current_frame].disable_next_on_enter) else: self.back.emit() def _change_next_finish(self): if self.current_frame + 1 == len(self.frames_instances): self.btn_box.button(QDialogButtonBox.Ok).setText("Finish") else: self.btn_box.button(QDialogButtonBox.Ok).setText("Next")