Commit 3517de71 authored by Tong Zhang's avatar Tong Zhang
Browse files

ENH: Support ellipse size control.

parent 4ebedd5e
...@@ -16,6 +16,7 @@ Show the available templates: ...@@ -16,6 +16,7 @@ Show the available templates:
import sys import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtCore import pyqtSlot from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QColor from PyQt5.QtGui import QColor
from PyQt5.QtGui import QDoubleValidator from PyQt5.QtGui import QDoubleValidator
...@@ -49,6 +50,9 @@ TWISS_KEYS_Y = [ ...@@ -49,6 +50,9 @@ TWISS_KEYS_Y = [
class MyAppWindow(BaseAppForm, Ui_MainWindow): class MyAppWindow(BaseAppForm, Ui_MainWindow):
ellipse_size_factor_changed = pyqtSignal()
def __init__(self, version, **kws): def __init__(self, version, **kws):
super(self.__class__, self).__init__() super(self.__class__, self).__init__()
...@@ -69,6 +73,10 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -69,6 +73,10 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
def _post_init(self): def _post_init(self):
"""Initialize UI, user customized code put here. """Initialize UI, user customized code put here.
""" """
#
self._size_factor = self.size_factor_sbox.value()
self.ellipse_size_factor_changed.connect(self.draw_ellipse)
# initial vars for FLAME model # initial vars for FLAME model
self.results = None self.results = None
self.last_bs = None self.last_bs = None
...@@ -125,7 +133,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -125,7 +133,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
self.quad_info_btn.clicked.connect(self.on_query_quad_info) self.quad_info_btn.clicked.connect(self.on_query_quad_info)
self.elem_info_btn.clicked.connect(self.on_query_elem_info) self.elem_info_btn.clicked.connect(self.on_query_elem_info)
# auto xyscale # auto xyscale (ellipse drawing)
self.on_auto_xlim() self.on_auto_xlim()
self.on_auto_ylim() self.on_auto_ylim()
...@@ -159,6 +167,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -159,6 +167,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
2. update drawing with online simulated results 2. update drawing with online simulated results
""" """
self.quad_selected.B2 = grad self.quad_selected.B2 = grad
# update simulation # update simulation
ARIS_LAT.sync_settings() ARIS_LAT.sync_settings()
_, fm = ARIS_LAT.run() _, fm = ARIS_LAT.run()
...@@ -197,6 +206,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -197,6 +206,7 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
self.envelope_plot.setLineID(1) self.envelope_plot.setLineID(1)
self.envelope_plot.update_curve(pos, yrms) self.envelope_plot.update_curve(pos, yrms)
@pyqtSlot()
def draw_ellipse(self): def draw_ellipse(self):
"""Draw x and y beam ellipse onto the figure area. """Draw x and y beam ellipse onto the figure area.
""" """
...@@ -215,14 +225,14 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -215,14 +225,14 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
self._plot_ellipse(self.x_ellipse_plot, self._plot_ellipse(self.x_ellipse_plot,
params_x, params_x,
color='b', color='b',
factor=4, factor=self._size_factor,
xoy='x', xoy='x',
fill='g', fill='g',
anote=False) anote=False)
self._plot_ellipse(self.y_ellipse_plot, self._plot_ellipse(self.y_ellipse_plot,
params_y, params_y,
color='r', color='r',
factor=4, factor=self._size_factor,
xoy='y', xoy='y',
fill='m', fill='m',
anote=False) anote=False)
...@@ -374,6 +384,12 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow): ...@@ -374,6 +384,12 @@ class MyAppWindow(BaseAppForm, Ui_MainWindow):
self.ylim_y1_lineEdit.setText(f'{y0:.1f}') self.ylim_y1_lineEdit.setText(f'{y0:.1f}')
self.ylim_y2_lineEdit.setText(f'{y1:.1f}') self.ylim_y2_lineEdit.setText(f'{y1:.1f}')
@pyqtSlot(int)
def on_ellipse_size_changed(self, i: int) -> None:
"""Ellipse size factor changed.
"""
self._size_factor = i
self.ellipse_size_factor_changed.emit()
if __name__ == "__main__": if __name__ == "__main__":
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment