SFELPHOTON-1752: add diode. Other work still ongoing. So this is a beta version
This commit is contained in:
@@ -44,7 +44,7 @@ from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QSlider
|
||||
QCheckBox, QHBoxLayout, QVBoxLayout, QGroupBox, QGridLayout, QComboBox
|
||||
from PyQt5.QtGui import QPainter, QColor, QPen, QBrush, QPolygon, QPolygonF, QTransform, QPainterPath, \
|
||||
QPixmap, QMouseEvent, QImage
|
||||
from PyQt5.QtCore import QPoint, QPointF, Qt,pyqtSignal
|
||||
from PyQt5.QtCore import QPoint, QPointF, Qt,pyqtSignal,QObject
|
||||
|
||||
#import PyQt5.QtGui as QtGui
|
||||
#import PyQt5.QtCore as QtCore
|
||||
@@ -315,12 +315,12 @@ class ARESdevice():
|
||||
#qp.drawRect(-10, -10+rArm, 20, 20)
|
||||
|
||||
#--- pixmaps ---
|
||||
pm=pic['bl'] #bellow
|
||||
pm=pic['bl'] # bellow
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfArm);qp.translate(0, -rArm);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h),pm)
|
||||
|
||||
pm=pic['mi'] #foccussing mirror
|
||||
pm=pic['mi'] # foccussing mirror
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tf2Th);qp.translate(-39.6,-273.6);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
@@ -330,26 +330,31 @@ class ARESdevice():
|
||||
qp.setTransform(tf2Th);qp.rotate(54);qp.translate(0,-240);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
pm=pic['df'] #diffrantometer
|
||||
pm=pic['df'] # diffrantometer
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfTrg);qp.translate(22, 17);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
pm=pic['jf'] #jungfrau detector
|
||||
pm=pic['jf'] # jungfrau detector
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfJFr);qp.translate(-25, -225);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
pm=pic['lm'] #laser mirror
|
||||
pm=pic['lm'] # laser mirror
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfDet);qp.rotate(181-7);qp.translate(13, -193);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
pm=pic['di'] #diode
|
||||
pm=pic['di'] # diode det1
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfDet);qp.rotate(165.4);qp.translate(-0, -205);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
pm=pic['di'] # diode det2
|
||||
w,h=pm.width(),pm.height()
|
||||
qp.setTransform(tfDet);qp.rotate(-96);qp.translate(-0, -205);qp.scale(.64,.64)
|
||||
qp.drawPixmap(QPointF(-w/2,-h/2),pm)
|
||||
|
||||
#--- RIXS-arm devices ---
|
||||
qp.setTransform(tfArm)
|
||||
qp.setPen(QPen(Qt.red, tickW, Qt.SolidLine))
|
||||
@@ -394,7 +399,9 @@ class ARESdevice():
|
||||
qp.setPen(penBk)
|
||||
qp.setBrush(QColor(0,0,255,192))
|
||||
qp.setTransform(tfDet);qp.rotate(165.4);qp.translate(-diW/2,-rDet)
|
||||
qp.drawRect(0, 0, diW, diH) # diode1
|
||||
qp.drawRect(0, 0, diW, diH) # diode det1
|
||||
qp.setTransform(tfDet);qp.rotate(-96);qp.translate(-diW/2,-rDet)
|
||||
qp.drawRect(0, 0, diW, diH) # diode det2
|
||||
qp.setTransform(tfDet);qp.rotate(181);qp.translate(0,-rDet+miW/2);qp.rotate(-45)
|
||||
qp.drawRect(-int(miW/2), 0, miW, miH) # mirror1
|
||||
|
||||
@@ -441,7 +448,7 @@ class ARESdevice():
|
||||
qp.setPen(penBl)
|
||||
qp.setTransform(QTransform())
|
||||
for r,a,tf in ((rArm,aArm,tfArm),(r2Th,a2Th,tf2Th),(rDet,aDet,tfDet),(rJFr,aJFr,tfJFr),(rTrg/2,aTrg,tfTrg),):
|
||||
p=QPoint(*tf.map(0, -r+40))
|
||||
p=QPoint(*tf.map(0, int(-r+40)))
|
||||
txt=f'{a:.5g}°'
|
||||
txr=qp.boundingRect(p.x(), p.y(), 0, 0, Qt.AlignLeft, txt)
|
||||
txr.moveTop(int(txr.y()-txr.height()/2))
|
||||
@@ -468,11 +475,16 @@ class WndVisualize(QWidget):
|
||||
'SATES30-MCS001:MOT_6.RBV' :'txPar',
|
||||
'SATES30-ACSFM:MOT_TZ.RBV' :'tzFM',
|
||||
}
|
||||
#updSignal=pyqtSignal(str, float, str)
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.initUI()
|
||||
self.connectEPICS()
|
||||
# self.update() must be called in main thread. Else gui may block after some time
|
||||
# PV monitoring is done in a separate thread. Therefore functions as:
|
||||
# OnConnectionChange, OnValueChange MUST NOT call update, but use this Signal helper class.
|
||||
#self.updSignal.connect(lambda key,value,col: self.vis_update(key,value,col))
|
||||
|
||||
def initUI(self):
|
||||
self.setGeometry(560, 100, 1300, 800)
|
||||
@@ -597,6 +609,7 @@ class WndVisualize(QWidget):
|
||||
except KeyError as e:
|
||||
_log.warning(f"can't handle PV: {pvname}:{value}")
|
||||
return
|
||||
#self._updSignal.emit() # self.update() would block after some time
|
||||
self.vis_update(key,value,'008000')
|
||||
|
||||
def vis_update(self,key,value,col='000000'):
|
||||
|
||||
Reference in New Issue
Block a user