Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

multibar.py

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__ = "Multibar 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.5 $"
00016 __release__  = "$Name: R04-12-00 $"
00017 __credits__  = "SLAC"
00018 
00019 
00020 from qt import *
00021 from bar import bar
00022 from math import *
00023 
00024 
00025 class multibar(QWidget):
00026     def __init__(self,parent = None,name = None,fl = 0):
00027         QWidget.__init__(self,parent,name,fl)
00028         if not name:
00029             self.setName("multibar")
00030     def setup(self,nbars,lw=0):
00031 
00032         self.__minscale=1
00033         self.__fullscale=1
00034         self.lwid=lw
00035         self.line2 = QFrame(self,"line2")
00036         self.line2.setFrameShape(QFrame.HLine)
00037         self.line2.setFrameShadow(QFrame.Plain)
00038         self.line2.setLineWidth(3)
00039         self.line2.setFrameShape(QFrame.HLine)
00040 
00041         self.line1 = QFrame(self,"line1")
00042         self.line1.setFrameShape(QFrame.VLine)
00043         self.line1.setFrameShadow(QFrame.Plain)
00044         self.line1.setLineWidth(3)
00045         self.line1.setFrameShape(QFrame.VLine)
00046 
00047         self.line2_2 = QFrame(self,"line2_2")
00048         self.line2_2.setFrameShape(QFrame.HLine)
00049         self.line2_2.setFrameShadow(QFrame.Plain)
00050         self.line2_2.setLineWidth(3)
00051         self.line2_2.setFrameShape(QFrame.HLine)
00052 
00053         self.low = QLabel(self,"low")
00054         self.low.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight)
00055         self.low.setScaledContents(1)
00056 
00057         self.font=QFont("Times")
00058         self.titlefont=QFont("Times")
00059 
00060         self.nbars=nbars
00061         self.bars=[]
00062         self.labels=[]
00063         self.__values=[]
00064         for i in range (nbars):
00065             self.bars.append( bar(self,"bar_%d"%i))
00066             self.labels.append(QLabel(self,"label_%d"%i))
00067             self.labels[i].setAlignment(QLabel.AlignVCenter | QLabel.AlignCenter)
00068             self.labels[i].setScaledContents(1)
00069             self.__values.append(0)
00070 
00071         self.line5_2 = QFrame(self,"line5_2")
00072         self.line5_2.setFrameShape(QFrame.HLine)
00073         self.line5_2.setFrameShadow(QFrame.Plain)
00074         self.line5_2.setLineWidth(2)
00075         self.line5_2.setFrameShape(QFrame.HLine)
00076 
00077         self.line2_3 = QFrame(self,"line2_3")
00078         self.line2_3.setFrameShape(QFrame.HLine)
00079         self.line2_3.setFrameShadow(QFrame.Plain)
00080         self.line2_3.setLineWidth(3)
00081         self.line2_3.setFrameShape(QFrame.HLine)
00082 
00083         self.line5_2_2 = QFrame(self,"line5_2_2")
00084         self.line5_2_2.setFrameShape(QFrame.HLine)
00085         self.line5_2_2.setFrameShadow(QFrame.Plain)
00086         self.line5_2_2.setLineWidth(2)
00087         self.line5_2_2.setFrameShape(QFrame.HLine)
00088 
00089 
00090         self.high = QLabel(self,"high")
00091         self.high.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight)
00092         self.high.setScaledContents(1)
00093 
00094         self.title=QLabel(self,"title")
00095         self.title.setAlignment(QLabel.AlignVCenter| QLabel.AlignCenter)
00096         self.title.setScaledContents(1)
00097 
00098         self.languageChange()
00099 
00100         #self.resize(QSize(124,168).expandedTo(self.minimumSizeHint()))
00101         self.clearWState(Qt.WState_Polished)
00102 
00103 
00104     def languageChange(self):
00105         self.setCaption(self.__tr("Form1"))
00106         self.low.setText(self.__tr("low"))
00107         self.title.setText(self.__tr("Title"))
00108         for i in range(self.nbars):
00109             self.labels[i].setText(self.__tr("level"))
00110         self.high.setText(self.__tr("high"))
00111 
00112 
00113     def __tr(self,s,c = None):
00114         return qApp.translate("multibar",s,c)
00115 
00116     def resizeEvent(self,rev):
00117         xel=float(rev.size().width())/(8.+self.lwid+self.nbars*6)
00118         yel=float(rev.size().height())/17.
00119         self.line2.setGeometry(QRect(xel*(5.+self.lwid),yel*2+yel*12-3,xel*2,3))
00120         self.line1.setGeometry(QRect(xel*(5+self.lwid),yel*2,3,yel*12))
00121         self.line2_2.setGeometry(QRect(xel*(5+self.lwid),yel*2+yel*6-1,xel*2,3))
00122         self.low.setGeometry(QRect(0,yel*2+yel*11,xel*(5+self.lwid),yel*1.))
00123         self.line5_2.setGeometry(QRect(xel*(5+self.lwid),yel*2+yel*3-2,xel*1.5,2))
00124         self.line2_3.setGeometry(QRect(xel*(5+self.lwid),yel*2,xel*2,3))
00125         self.line5_2_2.setGeometry(QRect(xel*(5+self.lwid),yel*2+yel*9-2,xel*1.5,2))
00126         self.high.setGeometry(QRect(0,yel*2,xel*(5+self.lwid),yel*1.))
00127         self.title.setGeometry(xel*(7+self.lwid),0,xel*self.nbars*6,yel*2)
00128         self.titlefont.setPointSizeFloat(yel*1.4)
00129         self.title.setFont(self.titlefont)
00130         self.font.setPointSizeFloat(yel*.7)
00131         self.low.setFont(self.font)
00132         self.high.setFont(self.font)
00133         for i in range (self.nbars):
00134             self.bars[i].setGeometry(QRect(xel*(8+self.lwid)+i*6*xel,yel*2,xel*4,yel*12))
00135             self.labels[i].setGeometry(QRect(i*6*xel+(7+self.lwid)*xel,yel*2+yel*12,xel*6,yel*3.))
00136             self.labels[i].setFont(self.font)
00137 
00138    
00139     def setHigh(self,high):
00140         self.high.setText(self.__tr(high))
00141 
00142     def setLow(self,low):
00143         self.low.setText(self.__tr(low))
00144 
00145     def setBarTitle(self,i,title):
00146         if i<self.nbars:
00147             self.labels[i].setText(self.__tr(title))
00148 
00149     def setTitle(self,title):
00150         self.title.setText(self.__tr(title))
00151 
00152     def setScale(self,scale):
00153         for i in range(self.nbars):
00154             self.bars[i].setScale(scale)
00155 
00156     def setMinScale(self,min):
00157         self.__minscale=min
00158 
00159     def setSlidingScale(self,scale):
00160         self.__fullscale=scale
00161         self.setScale(scale)
00162         self.setHigh("%d"%scale)
00163         self.setLow("0")
00164 
00165     def displaySlidingScaleValue(self,i,val):
00166         self.__values[i]=val
00167         maxval=max(self.__values)
00168         if maxval>0 and (maxval>self.__fullscale or maxval<self.__fullscale*.2):
00169             l=pow(10,floor(log10(maxval)))
00170             if maxval/l>5:newscale=10*l
00171             elif maxval/l>2:newscale=5*l
00172             else:newscale=2*l
00173             if newscale<self.__minscale:
00174                 newscale=self.__minscale
00175             self.setSlidingScale(newscale)
00176         self.bars[i].displayValue(val)

Generated on Fri Jul 21 13:26:31 2006 for LATTE R04-12-00 by doxygen 1.4.3