Source code for sas.qtgui.Calculators.KiessigPanel

from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets

from sas.qtgui.UI import main_resources_rc
from .UI.KiessigPanel import Ui_KiessigPanel
import sas.qtgui.Utilities.GuiUtils as GuiUtils

# sas-global
from sas.sascalc.calculator.kiessig_calculator import KiessigThicknessCalculator


[docs]class KiessigPanel(QtWidgets.QDialog, Ui_KiessigPanel):
[docs] def __init__(self, parent=None): super(KiessigPanel, self).__init__() self.setupUi(self) # disable the context help icon self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint) self.setWindowTitle("Kiessig Thickness Calculator") self.manager = parent self.thickness = KiessigThicknessCalculator() rx = QtCore.QRegExp("[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?") self.deltaq_in.setValidator(QtGui.QRegExpValidator(rx, self.deltaq_in)) # signals self.helpButton.clicked.connect(self.onHelp) self.computeButton.setVisible(False) self.closeButton.clicked.connect(self.onClose) self.deltaq_in.textChanged.connect(self.onCompute) self.deltaq_in.setText("0.05") # Set focus away from Close self.computeButton.setFocus() # no reason to have this widget resizable self.setFixedSize(self.minimumSizeHint())
[docs] def onHelp(self): """ Bring up the Kiessig fringe calculator Documentation whenever the HELP button is clicked. Calls DocumentationWindow with the path of the location within the documentation tree (after /doc/ ....". """ location = "/user/qtgui/Calculators/kiessig_calculator_help.html" self.manager.showHelp(location)
[docs] def onCompute(self): """ Execute the computation of thickness """ try: self.thickness.set_deltaq(dq=float(self.deltaq_in.text())) kiessing_result = self.thickness.compute_thickness() if kiessing_result: float_as_str = "{:.3f}".format(kiessing_result) self.lengthscale_out.setText(float_as_str) else: # error or division by zero self.lengthscale_out.setText("") except (ArithmeticError, ValueError): self.lengthscale_out.setText("")
[docs] def onClose(self): """ close the window containing this panel """ self.close()