def __init__(self, *args, **kwargs): super(ReconstructionParametersWidget, self).__init__(*args, **kwargs) self.prop_dist_start_widget = QtGui.QDoubleSpinBox(parent=self) self.prop_dist_start_widget.setValue(DEFAULT_PROPAGATION_DISTANCE) self.prop_dist_stop_widget = QtGui.QDoubleSpinBox(parent=self) self.prop_dist_step_widget = QtGui.QDoubleSpinBox(parent=self) self.prop_dist_start_label = QtGui.QLabel('Start') self.prop_dist_start_label.setAlignment(QtCore.Qt.AlignCenter) self.prop_dist_stop_label = QtGui.QLabel('Stop') self.prop_dist_stop_label.setAlignment(QtCore.Qt.AlignCenter) self.prop_dist_step_label = QtGui.QLabel('Step') self.prop_dist_step_label.setAlignment(QtCore.Qt.AlignCenter) for widget in (self.prop_dist_start_widget, self.prop_dist_stop_widget, self.prop_dist_step_widget): widget.setSuffix(' m') widget.setRange(0.0, 1.0) widget.setSingleStep(10 ^ -(widget.decimals())) widget.setDecimals(5) widget.editingFinished.connect(self.update_propagation_distance) self.set_multi_dist_mode( mode=0) # Initialize to single-propagation distance # Button group for single or multiple propagation distances single_prop_dist_btn = QtGui.QPushButton('Single propagation distance', parent=self) single_prop_dist_btn.setCheckable(True) single_prop_dist_btn.setChecked(True) multi_prop_dist_btn = QtGui.QPushButton( 'Multiple propagation distances', parent=self) multi_prop_dist_btn.setCheckable(True) multi_prop_dist_btn.setChecked(False) propagation_distance_mode = QtGui.QButtonGroup(parent=self) propagation_distance_mode.addButton(single_prop_dist_btn, 0) propagation_distance_mode.addButton(multi_prop_dist_btn, 1) propagation_distance_mode.setExclusive(True) propagation_distance_mode.buttonClicked[int].connect( self.set_multi_dist_mode) prop_dist_layout = QtGui.QGridLayout() prop_dist_layout.addWidget(self.prop_dist_start_label, 0, 0) prop_dist_layout.addWidget(self.prop_dist_step_label, 0, 1) prop_dist_layout.addWidget(self.prop_dist_stop_label, 0, 2) prop_dist_layout.addWidget(self.prop_dist_start_widget, 1, 0) prop_dist_layout.addWidget(self.prop_dist_step_widget, 1, 1) prop_dist_layout.addWidget(self.prop_dist_stop_widget, 1, 2) mode_btns = QtGui.QHBoxLayout() mode_btns.addWidget(single_prop_dist_btn) mode_btns.addWidget(multi_prop_dist_btn) propagation_distances_label = QtGui.QLabel( '<h3>Numerical Propagation Distance(s)</h3>') propagation_distances_label.setAlignment(QtCore.Qt.AlignCenter) self.load_fourier_mask_btn = QtGui.QPushButton('Load Fourier mask', self) self.load_fourier_mask_btn.clicked.connect(self.load_fourier_mask) self.clear_fourier_mask_btn = QtGui.QPushButton( 'Clear Fourier mask', self) self.clear_fourier_mask_btn.clicked.connect(self.clear_fourier_mask) self.fourier_mask_path_label = QtGui.QLabel( 'Current Fourier mask: None', self) self.fourier_mask_path_label.setAlignment(QtCore.Qt.AlignCenter) self._fourier_mask_path_signal.connect( self.fourier_mask_path_label.setText) fourier_mask_btns = QtGui.QHBoxLayout() fourier_mask_btns.addWidget(self.load_fourier_mask_btn) fourier_mask_btns.addWidget(self.clear_fourier_mask_btn) fourier_mask_label = QtGui.QLabel('<h3>Fourier Mask Controls</h3>') fourier_mask_label.setAlignment(QtCore.Qt.AlignCenter) layout = QtGui.QVBoxLayout() layout.addWidget(propagation_distances_label) layout.addLayout(prop_dist_layout) layout.addLayout(mode_btns) layout.addWidget(fourier_mask_label) layout.addWidget(self.fourier_mask_path_label) layout.addLayout(fourier_mask_btns) self.setLayout(layout)
def __init__(self, **kwargs): self.holograms = list() super(TimeSeriesCreator, self).__init__(**kwargs) self.setModal(True) self.setWindowTitle('Create hologram time series') # Create reorderable list # Example from http://www.walletfox.com/course/qtreorderablelist.php self.hologram_table = QtGui.QListWidget(parent=self) self.hologram_table.setDragDropMode( QtGui.QAbstractItemView.InternalMove) self.assembly_progress_bar = QtGui.QProgressBar(parent=self) self.assembly_progress_bar.setRange(0, 100) self._assembly_update_signal.connect( self.assembly_progress_bar.setValue) self.assembly_progress_bar.hide() # Wavelength widgets as spinboxes # wavelength 2 and 3 are hidden with a default of None self.wavelength1_widget = QtGui.QSpinBox(parent=self) self.wavelength2_widget = QtGui.QSpinBox(parent=self) self.wavelength3_widget = QtGui.QSpinBox(parent=self) self.wavelength2_widget.hide() self.wavelength3_widget.hide() for widget in (self.wavelength1_widget, self.wavelength2_widget, self.wavelength3_widget): widget.setSuffix(' nm') widget.setMinimum(0) # value of 0 -> not to be counted widget.setMaximum(999) self.wavelength1_widget.setValue(405) self.wavelength1_widget.setMinimum( 1) # At least one wavelength must be given # Create an exclusive button group in which only one-wavelength or three-wavelengths # can be active at one time self.one_wavelength_mode_btn = QtGui.QPushButton( 'Single-wavelength time-series', self) self.one_wavelength_mode_btn.setCheckable(True) self.one_wavelength_mode_btn.setChecked(True) self.three_wavelength_mode_btn = QtGui.QPushButton( 'Three-wavelength time-series', self) self.three_wavelength_mode_btn.setCheckable(True) self.three_wavelength_mode_btn.setChecked(False) self.wavelength_btns = QtGui.QButtonGroup(parent=self) self.wavelength_btns.addButton(self.one_wavelength_mode_btn, id=1) self.wavelength_btns.addButton(self.three_wavelength_mode_btn, id=3) self.wavelength_btns.setExclusive(True) self.wavelength_btns.buttonClicked[int].connect( self.set_wavelength_mode) file_search_btn = QtGui.QPushButton('Add hologram', self) file_search_btn.clicked.connect(self.add_hologram_file) clear_btn = QtGui.QPushButton('Clear holograms', self) clear_btn.clicked.connect(self.clear) accept_btn = QtGui.QPushButton('Create', self) accept_btn.clicked.connect(self.accept) reject_btn = QtGui.QPushButton('Cancel', self) reject_btn.clicked.connect(self.reject) reject_btn.setDefault(True) hologram_btns = QtGui.QHBoxLayout() hologram_btns.addWidget(file_search_btn) hologram_btns.addWidget(clear_btn) wavelength_mode_layout = QtGui.QHBoxLayout() wavelength_mode_layout.addWidget(self.one_wavelength_mode_btn) wavelength_mode_layout.addWidget(self.three_wavelength_mode_btn) wavelength_layout = QtGui.QHBoxLayout() wlabel = QtGui.QLabel('Wavelength(s):') wlabel.setAlignment(QtCore.Qt.AlignCenter) wavelength_layout.addWidget(wlabel) wavelength_layout.addWidget(self.wavelength1_widget) wavelength_layout.addWidget(self.wavelength2_widget) wavelength_layout.addWidget(self.wavelength3_widget) btns = QtGui.QHBoxLayout() btns.addWidget(accept_btn) btns.addWidget(reject_btn) explanation = QtGui.QLabel( 'Add holograms and order them by drag-and-drop') explanation.setAlignment(QtCore.Qt.AlignCenter) layout = QtGui.QVBoxLayout() layout.addWidget(explanation) layout.addLayout(hologram_btns) layout.addWidget(self.hologram_table) layout.addLayout(wavelength_mode_layout) layout.addLayout(wavelength_layout) layout.addWidget(self.assembly_progress_bar) layout.addLayout(btns) self.setLayout(layout)