diff --git a/ARESvis/ARESvis.py b/ARESvis/ARESvis.py index 1401a1e..048cfab 100755 --- a/ARESvis/ARESvis.py +++ b/ARESvis/ARESvis.py @@ -35,9 +35,11 @@ bitmask for simulation: 0x80: """ +import os.path + from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QSlider, QLineEdit,\ QCheckBox, QHBoxLayout, QVBoxLayout, QGroupBox, QGridLayout, QComboBox -from PyQt5.QtGui import QPainter, QColor, QPen, QBrush, QPolygon, QPolygonF, QTransform, QPainterPath +from PyQt5.QtGui import QPainter, QColor, QPen, QBrush, QPolygon, QPolygonF, QTransform, QPainterPath, QPixmap from PyQt5.QtCore import QPoint, QPointF, Qt,pyqtSignal import PyQt5.QtGui as QtGui @@ -144,7 +146,22 @@ class ARESdevice(): 'cc':22, # detector angle } self.setGeometry(g) - + self._pic=pic=dict() + base=os.path.join(os.path.dirname(os.path.realpath(__file__)),'pic') + print(base) + for k,v in ( + ('ir','ARES_2Theta_InnerRing.png'), + ('or','ARES_2Theta_OuterRing.png'), + ('bl','ARES_Below.png'), + ('df','ARES_Diffractometer.png'), + ('di','ARES_Diode.png'), + ('jf','ARES_Jungfrau.png'), + ('lm','ARES_LaserMirror.png'), + ('ma','ARES_Master.png'), + ('mi','ARES_Mirrors.png'), + ('pb','ARES_Parabola.png'), + ): + pic[k]=QPixmap(os.path.join(base,v)) def setGeometry(self,geo): self._geo=geo @@ -219,6 +236,7 @@ class ARESdevice(): # scl scaling for x and y translation of coordinate systems # paintMode: mode how to paint the diffraction beam p=self._paint + pic=self._pic ofs=p['ofs'] rArm=p['rArm'] @@ -233,6 +251,9 @@ class ARESdevice(): aDet=p['aDet'] aTrg=p['aTrg'] sclTrf=p['sclTrf'] + #x=p.get('x',0) + #y=p.get('y',0) + #print(x,y) tickW,tickL=3,20 # tick px-width, tick len diW,diH=40,20 # diodes @@ -324,6 +345,42 @@ class ARESdevice(): #qp.setPen(penRd) #qp.drawRect(-10, -10+rArm, 20, 20) + #--- pixmaps --- + 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 + 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) + + pm=pic['di'] #diode 2 + w,h=pm.width(),pm.height() + qp.setTransform(tf2Th);qp.rotate(54);qp.translate(0,-290-71);qp.scale(.64,.64) + qp.drawPixmap(QPointF(-w/2,-h/2),pm) + + 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 + 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 + 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 + w,h=pm.width(),pm.height() + qp.setTransform(tfDet);qp.rotate(165.4);qp.translate(-0, -205);qp.scale(.32,.32) + qp.drawPixmap(QPointF(-w/2,-h/2),pm) + #--- RIXS-arm devices --- qp.setTransform(tfArm) qp.setPen(QPen(QtCore.Qt.red, tickW, QtCore.Qt.SolidLine)) @@ -385,7 +442,7 @@ class ARESdevice(): #parabola mirror qp.setTransform(tf0) qp.setPen(penBk) - qp.setBrush(QColor(80,80,80,128)) + qp.setBrush(QColor(192,192,0,192)) a,b=50.8,12 path=QPainterPath() path.moveTo(-b-a/2,a) @@ -462,7 +519,10 @@ class WndVisualize(QWidget): ('aDet',(0,360,), 30), # angle detector ('aTrg',(0,360,), 30), # angle target ('sclA', ( -8, 8), 1), - ('sclD', (-8, 8), 1),): + ('sclD', (-8, 8), 1), + #('x', (-100, 100), 10), + #('y', (-100, 100), 10), + ): wLb=QLabel(f"{key}",objectName=key) #MOST BE with as it is changed later and else creates a seg fault @@ -474,6 +534,8 @@ class WndVisualize(QWidget): else: v=pDev['sclTrf'][1] v=int(round(np.log2(v)*2)) + #elif key in ('x','y'): + # v=0 else: v=pDev[key] wSl.setValue(v) @@ -639,21 +701,21 @@ class WndVisualize(QWidget): dev=app._dev if dev.containsPoint(mousePos): self._devSel=dev - wGrp=self._wdGrpDraw - wGrp.setTitle(dev._name) - devP=dev._paint - for wSl in wGrp.findChildren(QSlider): - #_log.info(wSl) - key=wSl.objectName() - if key.startswith('scl'): - if key[-1]=='A': - v=devP['sclTrf'][0] - else: - v=devP['sclTrf'][1] - v=int(round(np.log2(v)*2)) - else: - v=devP[key] - wSl.setValue(int(v)) + #wGrp=self._wdGrpDraw + #wGrp.setTitle(dev._name) + #devP=dev._paint + #for wSl in wGrp.findChildren(QSlider): + # #_log.info(wSl) + # key=wSl.objectName() + # if key.startswith('scl'): + # if key[-1]=='A': + # v=devP['sclTrf'][0] + # else: + # v=devP['sclTrf'][1] + # v=int(round(np.log2(v)*2)) + # else: + # v=devP[key] + # wSl.setValue(int(v)) self._mouseDrag={'obj':dev,'start':(mousePos,dev._paint['ofs'])} try: diff --git a/ARESvis/pic/ARES_2Theta_InnerRing.png b/ARESvis/pic/ARES_2Theta_InnerRing.png new file mode 100644 index 0000000..7f9f099 Binary files /dev/null and b/ARESvis/pic/ARES_2Theta_InnerRing.png differ diff --git a/ARESvis/pic/ARES_2Theta_OuterRing.png b/ARESvis/pic/ARES_2Theta_OuterRing.png new file mode 100644 index 0000000..ce8b103 Binary files /dev/null and b/ARESvis/pic/ARES_2Theta_OuterRing.png differ diff --git a/ARESvis/pic/ARES_Below.png b/ARESvis/pic/ARES_Below.png new file mode 100644 index 0000000..6506f42 Binary files /dev/null and b/ARESvis/pic/ARES_Below.png differ diff --git a/ARESvis/pic/ARES_Diffractometer.png b/ARESvis/pic/ARES_Diffractometer.png new file mode 100644 index 0000000..95646e7 Binary files /dev/null and b/ARESvis/pic/ARES_Diffractometer.png differ diff --git a/ARESvis/pic/ARES_Diode.png b/ARESvis/pic/ARES_Diode.png new file mode 100644 index 0000000..6e3e105 Binary files /dev/null and b/ARESvis/pic/ARES_Diode.png differ diff --git a/ARESvis/pic/ARES_Jungfrau.png b/ARESvis/pic/ARES_Jungfrau.png new file mode 100644 index 0000000..1cb7646 Binary files /dev/null and b/ARESvis/pic/ARES_Jungfrau.png differ diff --git a/ARESvis/pic/ARES_LaserMirror.png b/ARESvis/pic/ARES_LaserMirror.png new file mode 100644 index 0000000..2cd6fb6 Binary files /dev/null and b/ARESvis/pic/ARES_LaserMirror.png differ diff --git a/ARESvis/pic/ARES_Master.png b/ARESvis/pic/ARES_Master.png new file mode 100644 index 0000000..c142cb7 Binary files /dev/null and b/ARESvis/pic/ARES_Master.png differ diff --git a/ARESvis/pic/ARES_Mirrors.png b/ARESvis/pic/ARES_Mirrors.png new file mode 100644 index 0000000..ee9d9a1 Binary files /dev/null and b/ARESvis/pic/ARES_Mirrors.png differ diff --git a/ARESvis/pic/ARES_Parabola.png b/ARESvis/pic/ARES_Parabola.png new file mode 100644 index 0000000..bc96347 Binary files /dev/null and b/ARESvis/pic/ARES_Parabola.png differ diff --git a/RIXSconfig/RIXSconfig.py b/RIXSconfig/RIXSconfig.py index 3dedaf7..6d324aa 100755 --- a/RIXSconfig/RIXSconfig.py +++ b/RIXSconfig/RIXSconfig.py @@ -13,9 +13,8 @@ EPICS simulation motor PVs: ~/Documents/prj/SwissFEL/test_ioc/MotorSim/iocBoot/SATES30-RIXS/SATES30-RIXS.cmd caQtDM -attach ~/Documents/prj/SwissFEL/test_ioc/MotorSim/iocBoot/SATES30-RIXS/SATES30-RIXS.ui - -bitmask for simulation: - 0x01: EPICS motors +bitmask for modes: + 0x01: 0x02: 0x04: 0x08: @@ -23,8 +22,6 @@ bitmask for simulation: 0x20: 0x40: 0x80: - - """ @@ -86,9 +83,6 @@ def obj_info(obj,p=''): except AttributeError: pass - - - #Ui_MainWindow, QMainWindow = loadUiType("graphEx1.ui") #class RIXSgrating(QMainWindow, Ui_MainWindow): # def __init__(self, ): @@ -114,7 +108,7 @@ class WndMainRIXS(QWidget): self._wDevs=w=QWidget(self) w.move(10, 10) lv=QVBoxLayout(w) - lv.addWidget(w) + #lv.addWidget(w) for pb in ('Visualize','Vars'): w=QPushButton(pb) @@ -447,11 +441,11 @@ class RIXSdevice(): p=self._paint sclA,sclD=p['sclTrf'] p.update({ - 'r1':int(geo['r1']*sclD), - 'r2':int(geo['r2']*sclD), - 'aa':int((90-geo['aa'])*sclA), - 'bb':int((90-geo['bb'])*sclA), - 'cc':int(geo['cc']), + 'r1':geo['r1']*sclD, + 'r2':geo['r2']*sclD, + 'aa':(90-geo['aa'])*sclA, + 'bb':(90-geo['bb'])*sclA, + 'cc':geo['cc'], }) def geometry2motor(self): @@ -1061,7 +1055,7 @@ class WndVars(QWidget): self.update_label(k,v) self.update() - def update_label(self, k,v,**kwargs): + def update_label(self,k,v,**kwargs): #_log.info(f'{k}:{v}:{kwargs}') app=QApplication.instance() dev=app._dev