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 widget for trigger display" 00013 __author__ = "Martin Kocian, SLAC" 00014 __date__ = ("$Date: 2005/05/16 18:30:35 $").split(' ')[1] 00015 __version__ = "$Revision: 2.1 $" 00016 __release__ = "$Name: R04-12-00 $" 00017 __credits__ = "SLAC" 00018 00019 from qt import * 00020 import sys 00021 00022 class bar (QWidget): 00023 00024 def __init__(self,parent= None,name = None,fl = 0): 00025 QWidget.__init__(self,parent,name,fl) 00026 self.__val=0 00027 self.__rval=0 00028 self.__fullscale=10 00029 self.__color=QColor("green") 00030 self.__orientation=0 # vertical 00031 self.__minorab=0 00032 self.__minorcolor=QColor("yellow") 00033 self.__minorlevel=0 00034 self.__majorab=0 00035 self.__majorcolor=QColor("red") 00036 self.__majorlevel=0 00037 if not name: 00038 self.setName("bar") 00039 00040 00041 self.languageChange() 00042 00043 self.clearWState(Qt.WState_Polished) 00044 00045 00046 def languageChange(self): 00047 self.setCaption(self.__tr("Form1")) 00048 00049 00050 00051 def __tr(self,s,c = None): 00052 return qApp.translate("bar",s,c) 00053 def setColor(self,col): 00054 self.__color=QColor(col) 00055 self.update() 00056 def setMinor(self,level,abovebelow=1,color="yellow"): 00057 #ab=0 is off ab=1 is alarm above level, -1 is alarm below level 00058 self.__minorlevel=level 00059 self.__minorab=abovebelow 00060 self.__minorcolor=QColor(color) 00061 def setMajor(self,level,abovebelow=1,color="red"): 00062 self.__majorlevel=level 00063 self.__majorab=abovebelow 00064 self.__majorcolor=QColor(color) 00065 def setScale(self,scale): 00066 self.__fullscale=scale 00067 self.update() 00068 def setOrientation(self,st): 00069 if st=="vertical": 00070 self.__orientation=0 00071 else: 00072 self.__orientation=1 00073 def getOrientation(): 00074 return self.__orientation 00075 00076 def displayValue(self,a0): 00077 self.__rval=a0 00078 if a0>=0 and a0 <=self.__fullscale: 00079 self.__val=a0 00080 elif a0<0: 00081 self.__val=0 00082 else: 00083 self.__val=self.__fullscale 00084 self.update() 00085 00086 00087 def paintEvent(self,pe): 00088 try: 00089 r= pe.rect() 00090 painter=QPainter() 00091 painter.begin( self ) 00092 painter.setBrush(self.paletteBackgroundColor()) 00093 pen=QPen() 00094 pen.setColor(QColor("black")) 00095 pen.setWidth(1) 00096 painter.setPen(pen) 00097 ar=QPointArray(4) 00098 ar.setPoint(0, 0,0 ) 00099 ar.setPoint(1, self.size().width()-1,0) 00100 ar.setPoint(2,self.size().width()-1, self.size().height()-1) 00101 ar.setPoint(3,0,self.size().height()-1) 00102 painter.drawPolygon(ar) 00103 brush=QBrush(self.__color ) 00104 if self.__minorab==1 and self.__rval>self.__minorlevel: brush=QBrush(self.__minorcolor) 00105 if self.__minorab==-1 and self.__rval<self.__minorlevel: brush=QBrush(self.__minorcolor) 00106 if self.__majorab==1 and self.__rval>self.__majorlevel: brush=QBrush(self.__majorcolor) 00107 if self.__majorab==-1 and self.__rval<self.__majorlevel: brush=QBrush(self.__majorcolor) 00108 00109 painter.setBrush( brush ) 00110 painter.setPen(self.paletteBackgroundColor()) 00111 hval=float(self.__val)/self.__fullscale*(self.size().width()-2) 00112 if hval<0: hval=0 00113 vval=float(self.__val)/self.__fullscale*(self.size().height()-2) 00114 if vval<0:vval=0 00115 if self.__orientation==0: 00116 painter.drawRect( 1,self.size().height()-vval-1, 00117 self.size().width()-2,vval ) 00118 else: 00119 painter.drawRect(1,1,hval,self.size().height()-2) 00120 except : 00121 print "Unexpected error:", sys.exc_info()[1] 00122 00123 00124 00125 if __name__ == "__main__": 00126 a = QApplication(sys.argv) 00127 QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()")) 00128 w = bar() 00129 a.setMainWidget(w) 00130 w.show() 00131 a.exec_loop()