コード例 #1
0
    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)
コード例 #2
0
    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)