Commit 5a4a62b6 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

gui reorg

parent 31e811a4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3,8 +3,8 @@ PySEN revision module
"""
import sys
__version__  = "2.1"
__release__  = "b1"
__date__     = "Mar 28, 2025"
__release__  = "b2"
__date__     = "Mar 31, 2025"

def version(full=False):
    "get pysen version number"
+48 −83
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ from ..config import wavelength_bandwidth
from ..constants import ANGSTROM, OMEGA_N
from ..echo.fit import flux_weighted_eshape as echo_shape
#
from .ui_SimpleEchoSimulator import Ui_SimpleEchoSimMainWindow as Ui_MainWindow
from .ui_EchoSimWidget import Ui_EchoSimWidget

MICRO=1e-6

@@ -25,17 +25,12 @@ def sqt(t, coh, tcoh, inc, tinc, bgr=0):
    "S(Q,t)/S(Q,0)"
    return coh*f_exp(t,tcoh)-1/3*(inc*f_exp(t,tinc)+bgr)

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
class EchoSimWidget(Ui_EchoSimWidget):
    """Main  for viewing and deleting available groups."""
    #pylint: disable=too-many-instance-attributes
    def __init__(self, parent=None, **kwargs):
        """init MainWindow"""
        super().__init__(parent)
        self.setupUi(self)

        self.menuBar.setNativeMenuBar(False)
        #self.menuBar.setCornerWidget(self.menuHelp, Qt.TopRightCorner)
        #
        super().__init__()
        self.pos   = kwargs.pop('pos',  'p2')
        self.lmax  = kwargs.pop('lmax', 8.000)
        self.lmin  = self.lmax - wavelength_bandwidth(pos=self.pos)
@@ -43,6 +38,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        self.tmin, self.tmax = 1e-3, 1e+3
        #print(self.pos, self.lmax, self.lmin, self.ntbin)

        #
        self.setupUi(parent)

    def setupUi(self, parent=None):
        super().setupUi(parent)
        #
        dynamic_canvas = FigureCanvas(Figure(figsize=(5, 3)))
        self.verticalLayout.addWidget(dynamic_canvas)
@@ -51,17 +51,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        self._init_canvas()

        #
        self.dblSpinBoxCoh.valueChanged.connect(self.handleSpinBoxCoh)
        self.dblSpinBoxInc.valueChanged.connect(self.handleSpinBoxInc)
        self.dblSpinBoxBgr.valueChanged.connect(self.handleSpinBoxBgr)
        #
        self.hSliderTauCoh.valueChanged.connect(self.handleSliderTauCoh)
        self.hSliderTauInc.valueChanged.connect(self.handleSliderTauInc)
        self.hSliderTauEcho.valueChanged.connect(self.handleSliderTauEcho)
        #
        #self.dblSpinBoxTcoh.valueChanged.connect(self.handleSpinBoxTauCoh)
        #self.dblSpinBoxTinc.valueChanged.connect(self.handleSpinBoxTauInc)
        #self.dblSpinBoxTecho.valueChanged.connect(self.handleSpinBoxTauEcho)
        #
        self.inpTauCoh.setValidator(QtGui.QDoubleValidator(1e-6, 1e6, 3))
        self.inpTauInc.setValidator(QtGui.QDoubleValidator(1e-6, 1e6, 3))
@@ -71,14 +60,15 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        self.inpTauInc.returnPressed.connect(self.handleInpTauInc)
        self.inpTauEcho.returnPressed.connect(self.handleInpTauEcho)

        # File menu actions
        self.actionExit.triggered.connect(QtWidgets.qApp.quit)
        self.actionReset.triggered.connect(self.reset)
        self.actionAbout.triggered.connect(self.about_box)
        self.hSliderTauCoh.valueChanged.connect(self.handleTauCohSlider)
        self.hSliderTauInc.valueChanged.connect(self.handleTauIncSlider)
        self.hSliderTauEcho.valueChanged.connect(self.handleTauEchoSlider)

        self.dblSpinBoxCoh.valueChanged.connect(self.handleIntensity)
        self.dblSpinBoxInc.valueChanged.connect(self.handleIntensity)
        self.dblSpinBoxBgr.valueChanged.connect(self.handleIntensity)
        #
        self._reset_values()

        self.resetButton.clicked.connect(self.reset)

    def _fmt_time(self, label, value):
        "format time"
@@ -93,77 +83,51 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        else:
            label.setText(f"{value*1e6:8.1f} fs")

    # Intensities
    @QtCore.Slot(float)
    def handleSpinBoxCoh(self, _value):
        "Icoh handler"
        self._update_canvas()

    @QtCore.Slot(float)
    def handleSpinBoxInc(self, _value):
        "Iinc handler"
        self._update_canvas()

    @QtCore.Slot(float)
    def handleSpinBoxBgr(self, _value):
        "Ibgr handler"
        self._update_canvas()


    # Tau sliders
    @QtCore.Slot(int)
    def handleSliderTauCoh(self, value):
        "tau coh slider handler"
    def handleTauCohSlider(self, value):
        "tau echo slider handler"
        tau = 10**(value/1000.0)
        self.inpTauCoh.setText(f"{tau:.4g}")
        self._update_canvas()
        self.update()
    
    @QtCore.Slot(int)
    def handleSliderTauInc(self, value):
        "tau inc slider handler"
    def handleTauIncSlider(self, value):
        "tau echo slider handler"
        tau = 10**(value/1000.0)
        self.inpTauInc.setText(f"{tau:.4g}")
        self._update_canvas()
        self.update()

    @QtCore.Slot(int)
    def handleSliderTauEcho(self, value):
    
    def handleTauEchoSlider(self, value):
        "tau echo slider handler"
        tau = 10**(value/1000.0)
        self.inpTauEcho.setText(f"{tau:.4g}")
        self._update_canvas()
        self.update()

    
    def handleInpTauCoh(self):
        "input tau coh handler"
        text   = self.inpTauCoh.text()
        text   = self.echo.inpTauCoh.text()
        slider = int(log10(float(text))*1000)
        self.hSliderTauCoh.setValue(slider)
        self._update_canvas()
        self.update_canvas()

    def handleInpTauInc(self):
        "input tau inc handler"
        text   = self.inpTauInc.text()
        slider = int(log10(float(text))*1000)
        self.hSliderTauInc.setValue(slider)
        self._update_canvas()
        self.update_canvas()

    def handleInpTauEcho(self):
        "input tau echo handler"
        text   = self.inpTauEcho.text()
        slider = int(log10(float(text))*1000)
        self.hSliderTauEcho.setValue(slider)
        self._update_canvas()
        self.update_canvas()

    def handleIntensity(self, _value):
        "intensity changed handler"
        self.update()

    def _reset_values(self):
        "reset simulator values"
        self.dblSpinBoxCoh.setValue(104)
        self.dblSpinBoxInc.setValue(12)
        self.dblSpinBoxBgr.setValue(0)
        #self.inpTauCoh.setText("100.000")
        #self.inpTauInc.setText("0.010")
        #self.inpTauEcho.setText("1.00")
        self.hSliderTauCoh.setValue( 2000)
        self.hSliderTauInc.setValue(-3000)
        self.hSliderTauEcho.setValue(1)

    def _init_canvas(self):
        "initialize canvas"
@@ -202,7 +166,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        ax.grid(True)


    def _update_canvas(self):
    def update(self):
        "draw all figures"
        #pylint: disable=too-many-statements
        #FIXME: refactor
@@ -276,15 +240,16 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        ax.figure.canvas.draw()

    def reset(self):
        "reset app"
        self._reset_values()
        self._update_canvas()

    def help(self):
        "help method"

    def about_box(self):
        "help about"
        msg = """To Be Written"""
        QtWidgets.QMessageBox.about(self.parent(), self.windowTitle(), msg)
        self.activateWindow()
        "reset simulator values"
        self.dblSpinBoxCoh.setValue(104)
        self.dblSpinBoxInc.setValue(12)
        self.dblSpinBoxBgr.setValue(0)
        #self.inpTauCoh.setText("100.000")
        #self.inpTauInc.setText("0.010")
        #self.inpTauEcho.setText("1.00")
        self.hSliderTauCoh.setValue( 2000)
        self.hSliderTauInc.setValue(-3000)
        self.hSliderTauEcho.setValue(1)
        #
        self.update()
+334 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>EchoSimWidget</class>
 <widget class="QWidget" name="EchoSimWidget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>960</width>
    <height>640</height>
   </rect>
  </property>
  <property name="sizePolicy">
   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QWidget" name="verticalLayoutWidget">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>10</y>
     <width>941</width>
     <height>471</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout"/>
  </widget>
  <widget class="QWidget" name="gridLayoutWidget">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>486</y>
     <width>941</width>
     <height>121</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <property name="spacing">
     <number>5</number>
    </property>
    <item row="0" column="9">
     <widget class="QLabel" name="label_ns_1">
      <property name="text">
       <string>ns</string>
      </property>
     </widget>
    </item>
    <item row="0" column="6">
     <widget class="QSlider" name="hSliderTauCoh">
      <property name="minimum">
       <number>-6000</number>
      </property>
      <property name="maximum">
       <number>6000</number>
      </property>
      <property name="pageStep">
       <number>1000</number>
      </property>
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="tickPosition">
       <enum>QSlider::TicksAbove</enum>
      </property>
      <property name="tickInterval">
       <number>1000</number>
      </property>
     </widget>
    </item>
    <item row="3" column="7">
     <widget class="QLineEdit" name="inpTauInc">
      <property name="maximumSize">
       <size>
        <width>80</width>
        <height>16777215</height>
       </size>
      </property>
      <property name="maxLength">
       <number>32</number>
      </property>
      <property name="alignment">
       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
      </property>
     </widget>
    </item>
    <item row="3" column="4">
     <widget class="QLabel" name="labelTauInc">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;τ&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;inc&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
      <property name="textFormat">
       <enum>Qt::RichText</enum>
      </property>
     </widget>
    </item>
    <item row="0" column="4">
     <widget class="QLabel" name="labelTauCoh">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;τ&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;coh&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
      <property name="textFormat">
       <enum>Qt::RichText</enum>
      </property>
     </widget>
    </item>
    <item row="3" column="1">
     <widget class="QLabel" name="labelInc">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;I&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;inc&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
     </widget>
    </item>
    <item row="4" column="11">
     <widget class="QPushButton" name="resetButton">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="text">
       <string>Reset</string>
      </property>
     </widget>
    </item>
    <item row="4" column="2">
     <widget class="QDoubleSpinBox" name="dblSpinBoxBgr">
      <property name="decimals">
       <number>1</number>
      </property>
      <property name="maximum">
       <double>1000.000000000000000</double>
      </property>
     </widget>
    </item>
    <item row="4" column="1">
     <widget class="QLabel" name="labelBgr">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;I&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;bgr&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
     </widget>
    </item>
    <item row="0" column="0">
     <spacer name="horizontalSpacer_2">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
        <width>40</width>
        <height>20</height>
       </size>
      </property>
     </spacer>
    </item>
    <item row="4" column="6">
     <widget class="QSlider" name="hSliderTauEcho">
      <property name="minimum">
       <number>-3000</number>
      </property>
      <property name="maximum">
       <number>3000</number>
      </property>
      <property name="pageStep">
       <number>1000</number>
      </property>
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="tickPosition">
       <enum>QSlider::TicksAbove</enum>
      </property>
      <property name="tickInterval">
       <number>1000</number>
      </property>
     </widget>
    </item>
    <item row="4" column="4">
     <widget class="QLabel" name="labelTauEcho">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;τ&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;echo&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
      <property name="textFormat">
       <enum>Qt::RichText</enum>
      </property>
     </widget>
    </item>
    <item row="0" column="7">
     <widget class="QLineEdit" name="inpTauCoh">
      <property name="maximumSize">
       <size>
        <width>80</width>
        <height>16777215</height>
       </size>
      </property>
      <property name="maxLength">
       <number>32</number>
      </property>
      <property name="alignment">
       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
      </property>
     </widget>
    </item>
    <item row="3" column="9">
     <widget class="QLabel" name="label_ns_2">
      <property name="text">
       <string>ns</string>
      </property>
     </widget>
    </item>
    <item row="0" column="1">
     <widget class="QLabel" name="labelCoh">
      <property name="text">
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;I&lt;/span&gt;&lt;span style=&quot; font-size:18pt; vertical-align:sub;&quot;&gt;coh&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
      </property>
     </widget>
    </item>
    <item row="0" column="3">
     <spacer name="horizontalSpacer">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
        <width>40</width>
        <height>20</height>
       </size>
      </property>
     </spacer>
    </item>
    <item row="3" column="2">
     <widget class="QDoubleSpinBox" name="dblSpinBoxInc">
      <property name="decimals">
       <number>1</number>
      </property>
      <property name="maximum">
       <double>1000.000000000000000</double>
      </property>
      <property name="value">
       <double>30.000000000000000</double>
      </property>
     </widget>
    </item>
    <item row="0" column="2">
     <widget class="QDoubleSpinBox" name="dblSpinBoxCoh">
      <property name="decimals">
       <number>1</number>
      </property>
      <property name="maximum">
       <double>1000.000000000000000</double>
      </property>
      <property name="value">
       <double>90.000000000000000</double>
      </property>
     </widget>
    </item>
    <item row="4" column="7">
     <widget class="QLineEdit" name="inpTauEcho">
      <property name="maximumSize">
       <size>
        <width>80</width>
        <height>16777215</height>
       </size>
      </property>
      <property name="maxLength">
       <number>32</number>
      </property>
      <property name="alignment">
       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
      </property>
     </widget>
    </item>
    <item row="3" column="6">
     <widget class="QSlider" name="hSliderTauInc">
      <property name="minimum">
       <number>-6000</number>
      </property>
      <property name="maximum">
       <number>6000</number>
      </property>
      <property name="pageStep">
       <number>1000</number>
      </property>
      <property name="value">
       <number>0</number>
      </property>
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="tickPosition">
       <enum>QSlider::TicksAbove</enum>
      </property>
      <property name="tickInterval">
       <number>1000</number>
      </property>
     </widget>
    </item>
    <item row="4" column="9">
     <widget class="QLabel" name="label_ns_3">
      <property name="text">
       <string>ns</string>
      </property>
     </widget>
    </item>
    <item row="0" column="10">
     <spacer name="horizontalSpacer_3">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="sizeType">
       <enum>QSizePolicy::MinimumExpanding</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
        <width>40</width>
        <height>20</height>
       </size>
      </property>
     </spacer>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>
+2 −1
Original line number Diff line number Diff line
@@ -6,7 +6,8 @@ endif
UISRC=NSEMainWindow.ui \
      FileMonMainWindow.ui \
	  QTauMainWindow.ui \
	  SimpleEchoSimulator.ui
	  SimpleEchoSimulator.ui \
	  EchoSimWidget.ui

PYSRC=${UISRC:%.ui=ui_%.py}

Loading