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__ = "Radio button 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 radiomask (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=0x1 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 if self.__nbox>0: 00038 for i in range(self.__nbox): 00039 self.__labels[i].deleteLater() 00040 self.__box[i].deleteLater() 00041 self.buttongroup.deleteLater() 00042 self.__mask=0x1 00043 self.__labels=[] 00044 self.__box=[] 00045 self.__nbox=nbox 00046 self.buttongroup=QButtonGroup(self,"group") 00047 for i in range(nbox): 00048 self.__box.append(QRadioButton(self.buttongroup,"")) 00049 self.buttongroup.insert(self.__box[i],i) 00050 self.__labels.append(QLabel(self.buttongroup,"")) 00051 self.__labels[i].setAlignment(QLabel.AlignCenter|QLabel.AlignVCenter) 00052 self.__box[0].setChecked(1) 00053 QObject.connect(self.buttongroup,SIGNAL("clicked(int)"),self.updateMask) 00054 def setTitle(self,text): 00055 self.__title.setText(text) 00056 def click(self,id): 00057 self.__box[id].setChecked(1) 00058 self.updateMask(id) 00059 def setLabel(self,i,text): 00060 self.__labels[i].setText(text) 00061 def updateMask(self,i): 00062 self.__mask=i 00063 self.emit(PYSIGNAL("update"), (self.__mask,)) 00064 def getMask(self): 00065 return self.__mask 00066 00067 def resizeEvent(self,rev): 00068 height=rev.size().height() 00069 width=rev.size().width() 00070 ch=(width)/self.__nbox 00071 self.__title.setGeometry(0,0,width,20) 00072 self.buttongroup.setGeometry(2,22,width-4,36) 00073 for i in range(self.__nbox): 00074 self.__labels[i].setGeometry(i*ch+5,20,ch-12,12) 00075 self.__box[i].setGeometry(i*ch+ch/2+2-7,4,16,18) 00076 00077 00078 00079 if __name__ == "__main__": 00080 a = QApplication(sys.argv) 00081 QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()")) 00082 w = radiomask() 00083 w.setup(16) 00084 w.setLabel(10,"10") 00085 w.setLabel(11,"11") 00086 w.setTitle("Hallo") 00087 w.click(4) 00088 w.setGeometry(300,400,350,60) 00089 w.setup(2) 00090 a.setMainWidget(w) 00091 w.show() 00092 a.exec_loop()