diff --git a/artiq/gui/entries.py b/artiq/gui/entries.py index 0581eda60..dc065e111 100644 --- a/artiq/gui/entries.py +++ b/artiq/gui/entries.py @@ -5,7 +5,6 @@ from PyQt5 import QtCore, QtGui, QtWidgets from artiq.gui.tools import LayoutWidget, disable_scroll_wheel from artiq.gui.scanwidget import ScanWidget -from artiq.gui.scientific_spinbox import ScientificSpinBox logger = logging.getLogger(__name__) @@ -158,7 +157,7 @@ class _RangeScan(LayoutWidget): disable_scroll_wheel(scanner) self.addWidget(scanner, 0, 0, -1, 1) - start = ScientificSpinBox() + start = QtWidgets.QDoubleSpinBox() start.setStyleSheet("QDoubleSpinBox {color:blue}") start.setMinimumSize(110, 0) start.setSizePolicy(QtWidgets.QSizePolicy( @@ -172,7 +171,7 @@ class _RangeScan(LayoutWidget): disable_scroll_wheel(npoints) self.addWidget(npoints, 1, 1) - stop = ScientificSpinBox() + stop = QtWidgets.QDoubleSpinBox() stop.setStyleSheet("QDoubleSpinBox {color:red}") stop.setMinimumSize(110, 0) disable_scroll_wheel(stop) diff --git a/artiq/gui/scientific_spinbox.py b/artiq/gui/scientific_spinbox.py deleted file mode 100644 index 65cbba669..000000000 --- a/artiq/gui/scientific_spinbox.py +++ /dev/null @@ -1,71 +0,0 @@ -import re -from PyQt5 import QtGui, QtWidgets - -# after -# http://jdreaver.com/posts/2014-07-28-scientific-notation-spin-box-pyside.html - - -_inf = float("inf") -# Regular expression to find floats. Match groups are the whole string, the -# whole coefficient, the decimal part of the coefficient, and the exponent -# part. -_float_re = re.compile(r"(([+-]?\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?)") - - -def valid_float_string(string): - match = _float_re.search(string) - if match: - return match.groups()[0] == string - return False - - -class FloatValidator(QtGui.QValidator): - def validate(self, string, position): - if valid_float_string(string): - return self.Acceptable, string, position - if string == "" or string[position-1] in "eE.-+": - return self.Intermediate, string, position - return self.Invalid, string, position - - def fixup(self, text): - match = _float_re.search(text) - if match: - return match.groups()[0] - return "" - - -class ScientificSpinBox(QtWidgets.QDoubleSpinBox): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.setMinimum(-_inf) - self.setMaximum(_inf) - self.validator = FloatValidator() - self.setDecimals(20) - - def validate(self, text, position): - return self.validator.validate(text, position) - - def fixup(self, text): - return self.validator.fixup(text) - - def valueFromText(self, text): - return float(text) - - def textFromValue(self, value): - return format_float(value) - - def stepBy(self, steps): - text = self.cleanText() - groups = _float_re.search(text).groups() - decimal = float(groups[1]) - decimal += steps - new_string = "{:g}".format(decimal) + (groups[3] if groups[3] else "") - self.lineEdit().setText(new_string) - - -def format_float(value): - """Modified form of the 'g' format specifier.""" - string = "{:g}".format(value) - string = string.replace("e+", "e") - string = re.sub("e(-?)0*(\d+)", r"e\1\2", string) - return string