00001 #!/usr/local/bin/python 00002 # 00003 # Copyright 2004 00004 # by 00005 # The Board of Trustees of the 00006 # Leland Stanford Junior University. 00007 # All rights reserved. 00008 # 00009 00010 00011 __facility__ = "Trigger" 00012 __abstract__ = "Bar with scale for trigger display" 00013 __author__ = "Martin Kocian, SLAC" 00014 __date__ = ("$Date: 2005/06/15 23:42:30 $").split(' ')[1] 00015 __version__ = "$Revision: 2.3 $" 00016 __release__ = "$Name: R04-12-00 $" 00017 __credits__ = "SLAC" 00018 00019 00020 00021 from qt import * 00022 from bar import bar 00023 from math import * 00024 00025 00026 class barw(QWidget): 00027 def __init__(self,parent = None,name = None,fl = 0): 00028 QWidget.__init__(self,parent,name,fl) 00029 00030 if not name: 00031 self.setName("barw") 00032 00033 self.__minscale=1 00034 self.__fullscale=1 00035 00036 self.line2 = QFrame(self,"line2") 00037 self.line2.setFrameShape(QFrame.HLine) 00038 self.line2.setFrameShadow(QFrame.Plain) 00039 self.line2.setLineWidth(3) 00040 self.line2.setFrameShape(QFrame.HLine) 00041 00042 self.line1 = QFrame(self,"line1") 00043 self.line1.setFrameShape(QFrame.VLine) 00044 self.line1.setFrameShadow(QFrame.Plain) 00045 self.line1.setLineWidth(3) 00046 self.line1.setFrameShape(QFrame.VLine) 00047 00048 self.line2_2 = QFrame(self,"line2_2") 00049 self.line2_2.setFrameShape(QFrame.HLine) 00050 self.line2_2.setFrameShadow(QFrame.Plain) 00051 self.line2_2.setLineWidth(3) 00052 self.line2_2.setFrameShape(QFrame.HLine) 00053 00054 self.low = QLabel(self,"low") 00055 self.low.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight) 00056 self.low.setScaledContents(1) 00057 00058 self.font=QFont("Times") 00059 self.font.setPointSizeFloat(12.) 00060 00061 self.bar = bar(self,"bar") 00062 00063 self.line5_2 = QFrame(self,"line5_2") 00064 self.line5_2.setFrameShape(QFrame.HLine) 00065 self.line5_2.setFrameShadow(QFrame.Plain) 00066 self.line5_2.setLineWidth(2) 00067 self.line5_2.setFrameShape(QFrame.HLine) 00068 00069 self.line2_3 = QFrame(self,"line2_3") 00070 self.line2_3.setFrameShape(QFrame.HLine) 00071 self.line2_3.setFrameShadow(QFrame.Plain) 00072 self.line2_3.setLineWidth(3) 00073 self.line2_3.setFrameShape(QFrame.HLine) 00074 00075 self.line5_2_2 = QFrame(self,"line5_2_2") 00076 self.line5_2_2.setFrameShape(QFrame.HLine) 00077 self.line5_2_2.setFrameShadow(QFrame.Plain) 00078 self.line5_2_2.setLineWidth(2) 00079 self.line5_2_2.setFrameShape(QFrame.HLine) 00080 00081 self.label = QLabel(self,"label") 00082 self.label.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight) 00083 self.label.setScaledContents(1) 00084 00085 self.high = QLabel(self,"high") 00086 self.high.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight) 00087 self.high.setScaledContents(1) 00088 00089 self.languageChange() 00090 00091 #self.resize(QSize(124,168).expandedTo(self.minimumSizeHint())) 00092 self.clearWState(Qt.WState_Polished) 00093 00094 00095 def languageChange(self): 00096 self.setCaption(self.__tr("Form1")) 00097 self.low.setText(self.__tr("low")) 00098 self.label.setText(self.__tr("level")) 00099 self.high.setText(self.__tr("high")) 00100 00101 00102 def __tr(self,s,c = None): 00103 return qApp.translate("barw",s,c) 00104 00105 def resizeEvent(self,rev): 00106 #print "resizing done" 00107 xel=float(rev.size().width())/11. 00108 yel=float(rev.size().height())/16. 00109 self.line2.setGeometry(QRect(xel*4.,yel*13-3,xel*2,3)) 00110 self.line1.setGeometry(QRect(xel*4,yel*1,3,12*yel)) 00111 self.line2_2.setGeometry(QRect(xel*4,yel*7-1,xel*2,3)) 00112 self.low.setGeometry(QRect(0,yel*12,xel*4,yel*1.6)) 00113 self.bar.setGeometry(QRect(xel*7,yel,xel*4,yel*12)) 00114 self.line5_2.setGeometry(QRect(xel*4,yel*4-2,xel,2)) 00115 self.line2_3.setGeometry(QRect(xel*4,yel*1,xel*2,3)) 00116 self.line5_2_2.setGeometry(QRect(xel*4,yel*10-2,xel,2)) 00117 self.label.setGeometry(QRect(0,yel*14,xel*11,yel*1.6)) 00118 self.high.setGeometry(QRect(0,0,xel*4,yel*1.6)) 00119 self.font.setPointSizeFloat(yel*1.6) 00120 self.label.setFont(self.font) 00121 self.low.setFont(self.font) 00122 self.high.setFont(self.font) 00123 00124 00125 def setHigh(self,high): 00126 self.high.setText(self.__tr(high)) 00127 00128 def setLow(self,low): 00129 self.low.setText(self.__tr(low)) 00130 00131 def setTitle(self,title): 00132 self.label.setText(self.__tr(title)) 00133 00134 def setMinScale(self,min): 00135 self.__minscale=min 00136 00137 def setSlidingScale(self,scale): 00138 self.__fullscale=scale 00139 self.bar.setScale(scale) 00140 self.setHigh("%d"%scale) 00141 self.setLow("0") 00142 00143 def displaySlidingScaleValue(self,val): 00144 if val>0 and (val>self.__fullscale or val<self.__fullscale*.2): 00145 l=pow(10,floor(log10(val))) 00146 if val/l>5:newscale=10*l 00147 elif val/l>2:newscale=5*l 00148 else:newscale=2*l 00149 if newscale<self.__minscale: 00150 newscale=self.__minscale 00151 self.setSlidingScale(newscale) 00152 self.bar.displayValue(val)