BUGFIX: VFT;
change to src layout
This commit is contained in:
45
src/gui_qt/lib/spinboxes.py
Normal file
45
src/gui_qt/lib/spinboxes.py
Normal file
@ -0,0 +1,45 @@
|
||||
from math import inf
|
||||
|
||||
from ..Qt import QtWidgets, QtGui
|
||||
|
||||
|
||||
class SciSpinBox(QtWidgets.QDoubleSpinBox):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
|
||||
self.validator = QtGui.QDoubleValidator(self)
|
||||
|
||||
self.setMinimum(-inf)
|
||||
self.setMaximum(inf)
|
||||
self.setDecimals(1000)
|
||||
self.precision = 0.001
|
||||
|
||||
self._prev_value = float(self.lineEdit().text())
|
||||
|
||||
def valueFromText(self, text: str) -> float:
|
||||
try:
|
||||
self._prev_value = float(self.cleanText())
|
||||
except ValueError:
|
||||
pass
|
||||
return self._prev_value
|
||||
|
||||
def textFromValue(self, value: float) -> str:
|
||||
if value == 0:
|
||||
return '0'
|
||||
else:
|
||||
return f'{value:.3e}'
|
||||
|
||||
def stepBy(self, step: int):
|
||||
self._prev_value = self.value()
|
||||
|
||||
new_value = self._prev_value
|
||||
if new_value != 0.0:
|
||||
new_value *= 10**(step/19.)
|
||||
else:
|
||||
new_value = 0.001
|
||||
|
||||
self.setValue(new_value)
|
||||
self.lineEdit().setText(f'{new_value:.3e}')
|
||||
|
||||
def validate(self, text, pos):
|
||||
return self.validator.validate(text, pos)
|
Reference in New Issue
Block a user