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__ = "Mask widget for trigger display" 00013 __author__ = "Martin Kocian, SLAC" 00014 __date__ = ("$Date: 2005/06/03 23:03:42 $").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 mask (QWidget): 00023 00024 def __init__(self,parent= None,name = None,fl = 0): 00025 QWidget.__init__(self,parent,name,fl) 00026 if not name: 00027 self.setName("mask") 00028 self.__nbox=0 00029 self.__box=[] 00030 self.__mask=0x0 00031 self.__labels=[] 00032 self.__title=QLabel(self,"title") 00033 self.__title.setAlignment(QLabel.AlignCenter|QLabel.AlignVCenter) 00034 self.clearWState(Qt.WState_Polished) 00035 00036 def setup(self,nbox): 00037 self.__nbox=nbox 00038 for i in range(nbox): 00039 self.__box.append(QCheckBox(self,"")) 00040 self.__labels.append(QLabel(self,"")) 00041 self.__labels[i].setAlignment(QLabel.AlignRight|QLabel.AlignVCenter) 00042 font=self.__labels[i].font() 00043 font.setPointSize(8) 00044 self.__labels[i].setFont(font) 00045 QObject.connect(self.__box[i],SIGNAL("clicked()"),self.updateMask) 00046 00047 def setTitle(self,text): 00048 self.__title.setText(text) 00049 def setLabel(self,i,text): 00050 self.__labels[i].setText(text) 00051 def updateMask(self): 00052 self.__mask=0x0 00053 for i in range(self.__nbox): 00054 if self.__box[i].isChecked(): 00055 self.__mask|=1<<i 00056 self.emit(PYSIGNAL("update"), (self.__mask,)) 00057 def getMask(self): 00058 return self.__mask 00059 def setMask(self,mask): 00060 m=0x0 00061 for i in range (self.__nbox): 00062 m|=1<<i 00063 self.__box[i].setChecked(mask&(1<<i)) 00064 self.__mask=mask&m 00065 00066 def resizeEvent(self,rev): 00067 height=rev.size().height() 00068 width=rev.size().width() 00069 ch=(height-15)/self.__nbox 00070 self.__title.setGeometry(0,height-15,width,15) 00071 for i in range(self.__nbox): 00072 self.__labels[i].setGeometry(0,i*ch,width-12,ch) 00073 self.__box[i].setGeometry(width-12,i*ch+ch/2-6,12,12) 00074 00075 00076 00077 if __name__ == "__main__": 00078 a = QApplication(sys.argv) 00079 QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()")) 00080 w = mask() 00081 w.setup(12) 00082 w.setLabel(10,"a") 00083 w.setTitle("Hallo") 00084 w.setMask(0xffff) 00085 w.setGeometry(300,400,50,164) 00086 a.setMainWidget(w) 00087 w.show() 00088 a.exec_loop()