def __init__(self, argument): LayoutWidget.__init__(self) self.argument = argument self.stack = QtWidgets.QStackedWidget() self.addWidget(self.stack, 1, 0, colspan=4) procdesc = argument["desc"] state = argument["state"] self.widgets = OrderedDict() self.widgets["NoScan"] = _NoScan(procdesc, state["NoScan"]) self.widgets["LinearScan"] = _RangeScan(procdesc, state["LinearScan"]) self.widgets["RandomScan"] = _RangeScan(procdesc, state["RandomScan"]) self.widgets["ExplicitScan"] = _ExplicitScan(state["ExplicitScan"]) for widget in self.widgets.values(): self.stack.addWidget(widget) self.radiobuttons = OrderedDict() self.radiobuttons["NoScan"] = QtWidgets.QRadioButton("No scan") self.radiobuttons["LinearScan"] = QtWidgets.QRadioButton("Linear") self.radiobuttons["RandomScan"] = QtWidgets.QRadioButton("Random") self.radiobuttons["ExplicitScan"] = QtWidgets.QRadioButton("Explicit") scan_type = QtWidgets.QButtonGroup() for n, b in enumerate(self.radiobuttons.values()): self.addWidget(b, 0, n) scan_type.addButton(b) b.toggled.connect(self._scan_type_toggled) selected = argument["state"]["selected"] self.radiobuttons[selected].setChecked(True)
def __init__(self, argument): LayoutWidget.__init__(self) self.argument = argument self.stack = QtWidgets.QStackedWidget() self.addWidget(self.stack, 1, 0, colspan=4) procdesc = argument["desc"] state = argument["state"] self.widgets = OrderedDict() self.widgets["NoScan"] = _NoScan(procdesc, state["NoScan"]) self.widgets["RangeScan"] = _RangeScan(procdesc, state["RangeScan"]) self.widgets["CenterScan"] = _CenterScan(procdesc, state["CenterScan"]) self.widgets["ExplicitScan"] = _ExplicitScan(state["ExplicitScan"]) for widget in self.widgets.values(): self.stack.addWidget(widget) self.radiobuttons = OrderedDict() self.radiobuttons["NoScan"] = QtWidgets.QRadioButton("No scan") self.radiobuttons["RangeScan"] = QtWidgets.QRadioButton("Range") self.radiobuttons["CenterScan"] = QtWidgets.QRadioButton("Center") self.radiobuttons["ExplicitScan"] = QtWidgets.QRadioButton("Explicit") scan_type = QtWidgets.QButtonGroup() for n, b in enumerate(self.radiobuttons.values()): self.addWidget(b, 0, n) scan_type.addButton(b) b.toggled.connect(self._scan_type_toggled) selected = argument["state"]["selected"] self.radiobuttons[selected].setChecked(True)
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] self.value = QtWidgets.QDoubleSpinBox() disable_scroll_wheel(self.value) self.value.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: self.value.setMinimum(procdesc["global_min"]/scale) else: self.value.setMinimum(float("-inf")) if procdesc["global_max"] is not None: self.value.setMaximum(procdesc["global_max"]/scale) else: self.value.setMaximum(float("inf")) self.value.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: self.value.setSuffix(" " + procdesc["unit"]) self.addWidget(QtWidgets.QLabel("Value:"), 0, 0) self.addWidget(self.value, 0, 1) self.value.setValue(state["value"]/scale) def update(value): state["value"] = value*scale self.value.valueChanged.connect(update)
def __init__(self): LayoutWidget.__init__(self) self.waiting_spinner = QtWaitingSpinner() self.addWidget(self.waiting_spinner, 1, 1) self.addWidget(QtWidgets.QLabel("Repository scan in progress..."), 1, 2)
def __init__(self, state): LayoutWidget.__init__(self) self.value = QtWidgets.QLineEdit() self.addWidget(QtWidgets.QLabel("Sequence:"), 0, 0) self.addWidget(self.value, 0, 1) float_regexp = r"(([+-]?\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?)" regexp = "(float)?( +float)* *".replace("float", float_regexp) self.value.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(regexp))) self.value.setText(" ".join([str(x) for x in state["sequence"]])) def update(text): if self.value.hasAcceptableInput(): state["sequence"] = [float(x) for x in text.split()] self.value.textEdited.connect(update)
def __init__(self, state): LayoutWidget.__init__(self) self.value = QtWidgets.QLineEdit() self.addWidget(QtWidgets.QLabel("Sequence:"), 0, 0) self.addWidget(self.value, 0, 1) float_regexp = "[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?" regexp = "(float)?( +float)* *".replace("float", float_regexp) self.value.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(regexp), self.value)) self.value.setText(" ".join([str(x) for x in state["sequence"]])) def update(text): state["sequence"] = [float(x) for x in text.split()] self.value.textEdited.connect(update)
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] self.value = ScientificSpinBox() disable_scroll_wheel(self.value) self.value.setDecimals(procdesc["ndecimals"]) self.value.setPrecision() if procdesc["global_min"] is not None: self.value.setMinimum(procdesc["global_min"] / scale) else: self.value.setMinimum(float("-inf")) if procdesc["global_max"] is not None: self.value.setMaximum(procdesc["global_max"] / scale) else: self.value.setMaximum(float("inf")) self.value.setSingleStep(procdesc["global_step"] / scale) self.value.setRelativeStep() if procdesc["unit"]: self.value.setSuffix(" " + procdesc["unit"]) self.addWidget(QtWidgets.QLabel("Value:"), 0, 0) self.addWidget(self.value, 0, 1) self.value.setValue(state["value"] / scale) def update(value): state["value"] = value * scale self.value.valueChanged.connect(update) self.repetitions = QtWidgets.QSpinBox() self.repetitions.setMinimum(1) self.repetitions.setMaximum((1 << 31) - 1) disable_scroll_wheel(self.repetitions) self.addWidget(QtWidgets.QLabel("Repetitions:"), 1, 0) self.addWidget(self.repetitions, 1, 1) self.repetitions.setValue(state["repetitions"]) def update_repetitions(value): state["repetitions"] = value self.repetitions.valueChanged.connect(update_repetitions)
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) center = ScientificSpinBox() disable_scroll_wheel(center) apply_properties(center) center.setPrecision() center.setRelativeStep() center.setValue(state["center"]/scale) self.addWidget(center, 0, 1) self.addWidget(QtWidgets.QLabel("Center:"), 0, 0) span = ScientificSpinBox() disable_scroll_wheel(span) apply_properties(span) span.setPrecision() span.setRelativeStep() span.setMinimum(0) span.setValue(state["span"]/scale) self.addWidget(span, 1, 1) self.addWidget(QtWidgets.QLabel("Span:"), 1, 0) step = ScientificSpinBox() disable_scroll_wheel(step) apply_properties(step) step.setPrecision() step.setRelativeStep() step.setMinimum(0) step.setValue(state["step"]/scale) self.addWidget(step, 2, 1) self.addWidget(QtWidgets.QLabel("Step:"), 2, 0) randomize = QtWidgets.QCheckBox("Randomize") self.addWidget(randomize, 3, 1) randomize.setChecked(state["randomize"]) def update_center(value): state["center"] = value*scale def update_span(value): state["span"] = value*scale def update_step(value): state["step"] = value*scale def update_randomize(value): state["randomize"] = value center.valueChanged.connect(update_center) span.valueChanged.connect(update_span) step.valueChanged.connect(update_step) randomize.stateChanged.connect(update_randomize)
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) scanner = ScanWidget() disable_scroll_wheel(scanner) self.addWidget(scanner, 0, 0, -1, 1) start = ScientificSpinBox() start.setStyleSheet("QDoubleSpinBox {color:blue}") start.setMinimumSize(110, 0) start.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)) disable_scroll_wheel(start) self.addWidget(start, 0, 1) npoints = QtWidgets.QSpinBox() npoints.setMinimum(1) npoints.setMaximum((1 << 31) - 1) disable_scroll_wheel(npoints) self.addWidget(npoints, 1, 1) stop = ScientificSpinBox() stop.setStyleSheet("QDoubleSpinBox {color:red}") stop.setMinimumSize(110, 0) disable_scroll_wheel(stop) self.addWidget(stop, 2, 1) randomize = QtWidgets.QCheckBox("Randomize") self.addWidget(randomize, 3, 1) apply_properties(start) start.setPrecision() start.setRelativeStep() apply_properties(stop) stop.setPrecision() stop.setRelativeStep() apply_properties(scanner) def update_start(value): state["start"] = value*scale scanner.setStart(value) if start.value() != value: start.setValue(value) def update_stop(value): state["stop"] = value*scale scanner.setStop(value) if stop.value() != value: stop.setValue(value) def update_npoints(value): state["npoints"] = value scanner.setNum(value) if npoints.value() != value: npoints.setValue(value) def update_randomize(value): state["randomize"] = value randomize.setChecked(value) scanner.startChanged.connect(update_start) scanner.numChanged.connect(update_npoints) scanner.stopChanged.connect(update_stop) start.valueChanged.connect(update_start) npoints.valueChanged.connect(update_npoints) stop.valueChanged.connect(update_stop) randomize.stateChanged.connect(update_randomize) scanner.setStart(state["start"]/scale) scanner.setNum(state["npoints"]) scanner.setStop(state["stop"]/scale) randomize.setChecked(state["randomize"])
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) scanner = ScanWidget() disable_scroll_wheel(scanner) self.addWidget(scanner, 0, 0, -1, 1) start = ScientificSpinBox() start.setStyleSheet("QDoubleSpinBox {color:blue}") start.setMinimumSize(110, 0) start.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)) disable_scroll_wheel(start) self.addWidget(start, 0, 1) npoints = QtWidgets.QSpinBox() npoints.setMinimum(1) npoints.setMaximum((1 << 31) - 1) disable_scroll_wheel(npoints) self.addWidget(npoints, 1, 1) stop = ScientificSpinBox() stop.setStyleSheet("QDoubleSpinBox {color:red}") stop.setMinimumSize(110, 0) disable_scroll_wheel(stop) self.addWidget(stop, 2, 1) def update_start(value): state["start"] = value*scale scanner.setStart(value) def update_stop(value): state["stop"] = value*scale scanner.setStop(value) def update_npoints(value): state["npoints"] = value scanner.setNum(value) scanner.startChanged.connect(start.setValue) scanner.numChanged.connect(npoints.setValue) scanner.stopChanged.connect(stop.setValue) start.valueChanged.connect(update_start) npoints.valueChanged.connect(update_npoints) stop.valueChanged.connect(update_stop) scanner.setStart(state["start"]/scale) scanner.setNum(state["npoints"]) scanner.setStop(state["stop"]/scale) apply_properties(start) apply_properties(stop) apply_properties(scanner)
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) center = ScientificSpinBox() disable_scroll_wheel(center) apply_properties(center) center.setPrecision() center.setRelativeStep() center.setValue(state["center"]) self.addWidget(center, 0, 1) self.addWidget(QtWidgets.QLabel("Center:"), 0, 0) span = ScientificSpinBox() disable_scroll_wheel(span) apply_properties(span) span.setPrecision() span.setRelativeStep() span.setMinimum(0) span.setValue(state["span"]) self.addWidget(span, 1, 1) self.addWidget(QtWidgets.QLabel("Span:"), 1, 0) step = ScientificSpinBox() disable_scroll_wheel(step) apply_properties(step) step.setPrecision() step.setRelativeStep() step.setMinimum(0) step.setValue(state["step"]) self.addWidget(step, 2, 1) self.addWidget(QtWidgets.QLabel("Step:"), 2, 0) randomize = QtWidgets.QCheckBox("Randomize") self.addWidget(randomize, 3, 1) randomize.setChecked(state["randomize"]) def update_center(value): state["center"] = value*scale def update_span(value): state["span"] = value*scale def update_step(value): state["step"] = value*scale def update_randomize(value): state["randomize"] = value center.valueChanged.connect(update_center) span.valueChanged.connect(update_span) step.valueChanged.connect(update_step) randomize.stateChanged.connect(update_randomize)