def onButEvaluate(self): logger.debug('onButEvaluate', __name__) det = self.get_detector_selected() if det is None: return if not os.path.exists(fnm.path_metrology_text()): msg = 'Input file %s DOES NOT exist!' % fnm.path_metrology_text() logger.warning(msg, __name__) return list_of_metrology_scripts = cp.dict_of_metrology_scripts[det] if self.script == 'Select': msg = 'Script for processing metrology file is not selected. Select it first...' logger.warning(msg, __name__) return #print 'list_of_metrology_scripts', list_of_metrology_scripts #for CSPAD script CSPADV1 if det == cp.list_of_dets[ 0] and self.script == list_of_metrology_scripts[0]: msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) self.procCspadV1() # for other detectors and scripts for now... else: msg = 'Script %s is not yet implemented for detector %s...' % ( self.script, det) logger.warning(msg, __name__) return
def onButEvaluate(self): logger.debug('onButEvaluate', __name__) det = self.get_detector_selected() if det is None: return if not os.path.exists(fnm.path_metrology_text()): msg = 'Input file %s DOES NOT exist!' % fnm.path_metrology_text() logger.warning(msg, __name__) return list_of_metrology_scripts = cp.dict_of_metrology_scripts[det] if self.script == 'Select': msg = 'Script for processing metrology file is not selected. Select it first...' logger.warning(msg, __name__) return fname_metrology = fnm.path_metrology_text() #print 'list_of_metrology_scripts', list_of_metrology_scripts #for CSPAD script CSPADV1 CXI-like if det == cp.list_of_dets[ 0] and self.script == list_of_metrology_scripts[0]: msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspadV1(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) #for CSPAD script CSPADV2 XPP-like elif det == cp.list_of_dets[ 0] and self.script == list_of_metrology_scripts[1]: msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspadV2(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) #for CSPAD2x2 script CSPAD2X2V1 elif det == cp.list_of_dets[ 1] and self.script == list_of_metrology_scripts[0]: msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspad2x2V1(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) # for other detectors and scripts for now... else: msg = 'Script %s is not yet implemented for detector %s...' % ( self.script, det) logger.warning(msg, __name__) return
def onButEvaluate(self): logger.debug('onButEvaluate', __name__) det = self.get_detector_selected() if det is None : return if not os.path.exists(fnm.path_metrology_text()) : msg = 'Input file %s DOES NOT exist!' % fnm.path_metrology_text() logger.warning(msg, __name__) return list_of_metrology_scripts = cp.dict_of_metrology_scripts[det] if self.script == 'Select' : msg = 'Script for processing metrology file is not selected. Select it first...' logger.warning(msg, __name__) return fname_metrology = fnm.path_metrology_text() #print 'list_of_metrology_scripts', list_of_metrology_scripts #for CSPAD script CSPADV1 CXI-like if det == cp.list_of_dets[0] and self.script == list_of_metrology_scripts[0] : msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspadV1(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) #for CSPAD script CSPADV2 XPP-like elif det == cp.list_of_dets[0] and self.script == list_of_metrology_scripts[1] : msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspadV2(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) #for CSPAD2x2 script CSPAD2X2V1 elif det == cp.list_of_dets[1] and self.script == list_of_metrology_scripts[0] : msg = 'Evaluate parameters for %s using script %s' % (det, self.script) logger.info(msg, __name__) optal = OpticAlignmentCspad2x2V1(fname_metrology, print_bits=0, plot_bits=0, \ exp=self.instr_name.value(), det=det) self.procCspad(optal) # for other detectors and scripts for now... else : msg = 'Script %s is not yet implemented for detector %s...' % (self.script, det) logger.warning(msg, __name__) return
def checkTextFileName(self): edi = self.ediFileText par = self.fname_metrology_text if fnm.path_metrology_text() != fnm.path_metrology_text_def() : msg = 'TEXT FILE WILL BE OVERWRITTEN!\nUse default name %s\n for output file' % fnm.path_metrology_text_def() resp = gu.confirm_or_cancel_dialog_box(parent=self.butConvert, text=msg, title='Please confirm or cancel!') if resp : logger.info('Approved:\n' + msg.replace('\n',' '), __name__) par.setDefault() edi.setText(fnm.path_metrology_text_def()) else : logger.info('Selected current file name: %s' % fnm.path_metrology_text(), __name__)
def procCspad(self, optal): """Create and save interim files for calibration types""" self.list_of_calib_types = ['center', 'tilt', 'geometry'] fname_metrology = fnm.path_metrology_text() msg = 'procCspad(V1,V2,2x2V1) for metrology data in file %s' % fname_metrology logger.info(msg, __name__) txt_qc_table_xy = optal.txt_qc_table_xy() txt_qc_table_z = optal.txt_qc_table_z() txt_center = optal.txt_center_pix_formatted_array() txt_tilt = optal.txt_tilt_formatted_array() txt_geometry = optal.txt_geometry() logger.info('Quality check in X-Y plane:\n'+txt_qc_table_xy, __name__) logger.info('Quality check in Z:\n'+txt_qc_table_z, __name__) logger.info('parameters of type "center":\n'+txt_center, __name__) logger.info('parameters of type "tilt":\n'+txt_tilt, __name__) logger.info('parameters of type "geometry":\n'+txt_geometry, __name__) # Save calibration files in work directory dic_type_fname = self.dict_metrology_alignment_const_fname_for_type() gu.save_textfile(txt_center, dic_type_fname['center']) gu.save_textfile(txt_tilt, dic_type_fname['tilt']) gu.save_textfile(txt_geometry, dic_type_fname['geometry']) msg = 'Save interim metrology alignment files:' for type in self.list_of_calib_types : msg += '\n %s %s' % (type.ljust(16), dic_type_fname[type]) logger.info(msg, __name__)
def onButFileText(self): logger.debug('onButFileText', __name__) but = self.butFileText edi = self.ediFileText par = self.fname_metrology_text basename = os.path.basename(fnm.path_metrology_text()) fname, ext = os.path.splitext(basename) filter = 'Text files (*' + ext + ')\nAll files (*)' self.onButFile(but, edi, par, filter, set_path=True)
def onButFileText(self): logger.debug('onButFileText', __name__) but = self.butFileText edi = self.ediFileText par = self.fname_metrology_text basename = os.path.basename( fnm.path_metrology_text() ) fname, ext = os.path.splitext(basename) filter = 'Text files (*' + ext + ')\nAll files (*)' self.onButFile(but, edi, par, filter, set_path=True)
def onButConvert(self): logger.debug('onButConvert', __name__) self.checkTextFileName() #ifname = fnm.path_metrology_xlsx() #ofname = fnm.path_metrology_text() list_ofnames = convert_xlsx_to_text(fnm.path_metrology_xlsx(), fnm.path_metrology_text(), print_bits=0) msg = 'File %s is converted to the temporarty metrology text file(s):\n' % fnm.path_metrology_xlsx() for name in list_ofnames : msg += ' %s\n' % name logger.info(msg, __name__)
def onButViewText(self): logger.debug('onButViewText', __name__) try: cp.guifilebrowser.close() #self.but_view.setStyleSheet(cp.styleButtonBad) except: #self.but_view.setStyleSheet(cp.styleButtonGood) cp.guifilebrowser = GUIFileBrowser( None, fnm.get_list_of_metrology_text_files(), fnm.path_metrology_text()) cp.guifilebrowser.move(self.pos().__add__(QtCore.QPoint( 880, 40))) # open window with offset w.r.t. parent cp.guifilebrowser.show()
def onButViewText(self): logger.debug('onButViewText', __name__) try : cp.guifilebrowser.close() #self.but_view.setStyleSheet(cp.styleButtonBad) except : #self.but_view.setStyleSheet(cp.styleButtonGood) list_of_files = fnm.get_list_of_metrology_text_files() if self.script != 'Select' : list_of_files += self.list_metrology_alignment_const_fnames() cp.guifilebrowser = GUIFileBrowser(None, list_of_files, fnm.path_metrology_text()) cp.guifilebrowser.move(self.pos().__add__(QtCore.QPoint(880,40))) # open window with offset w.r.t. parent cp.guifilebrowser.show()
def onButConvert(self): logger.debug('onButConvert', __name__) if not os.path.exists(fnm.path_metrology_xlsx()) : msg = 'Input file %s DOES NOT exist!' % fnm.path_metrology_xlsx() logger.warning(msg, __name__) return self.checkTextFileName() #ifname = fnm.path_metrology_xlsx() #ofname = fnm.path_metrology_text() list_ofnames = convert_xlsx_to_text(fnm.path_metrology_xlsx(), fnm.path_metrology_text(), print_bits=0) msg = 'File %s is converted to the temporarty metrology text file(s):\n' % fnm.path_metrology_xlsx() for name in list_ofnames : msg += ' %s\n' % name logger.info(msg, __name__)
def onButConvert(self): logger.debug('onButConvert', __name__) if not os.path.exists(fnm.path_metrology_xlsx()): msg = 'Input file %s DOES NOT exist!' % fnm.path_metrology_xlsx() logger.warning(msg, __name__) return self.checkTextFileName() #ifname = fnm.path_metrology_xlsx() #ofname = fnm.path_metrology_text() list_ofnames = convert_xlsx_to_text(fnm.path_metrology_xlsx(), fnm.path_metrology_text(), print_bits=0) msg = 'File %s is converted to the temporarty metrology text file(s):\n' % fnm.path_metrology_xlsx( ) for name in list_ofnames: msg += ' %s\n' % name logger.info(msg, __name__)
def procCspadV1(self): """Create and save interim files for calibration types""" self.list_of_calib_types = ['center', 'tilt', 'geometry'] fname_metrology = fnm.path_metrology_text() msg = 'procCspadV1 for metrology data in file %s' % fname_metrology logger.info(msg, __name__) optal = OpticAlignmentCspadV1(fname_metrology, print_bits=0, plot_bits=0) txt_qc_table_xy = optal.txt_qc_table_xy() txt_qc_table_z = optal.txt_qc_table_z() txt_center = optal.txt_center_pix_formatted_array() txt_tilt = optal.txt_tilt_formatted_array() txt_geometry = optal.txt_geometry() logger.info('Quality check in X-Y plane:\n' + txt_qc_table_xy, __name__) logger.info('Quality check in Z:\n' + txt_qc_table_z, __name__) logger.info('parameters of type "center":\n' + txt_center, __name__) logger.info('parameters of type "tilt":\n' + txt_tilt, __name__) logger.info('parameters of type "geometry":\n' + txt_geometry, __name__) # Save calibration files in work directory dic_type_fname = self.dict_metrology_alignment_const_fname_for_type() gu.save_textfile(txt_center, dic_type_fname['center']) gu.save_textfile(txt_tilt, dic_type_fname['tilt']) gu.save_textfile(txt_geometry, dic_type_fname['geometry']) msg = 'Save interim metrology alignment files:' for type in self.list_of_calib_types: msg += '\n %s %s' % (type.ljust(16), dic_type_fname[type]) logger.info(msg, __name__)
def __init__(self, parent=None, app=None): self.name = 'GUIMetrology' self.myapp = app QtGui.QWidget.__init__(self, parent) self.fname_prefix = cp.fname_prefix self.fname_metrology_xlsx = cp.fname_metrology_xlsx self.fname_metrology_text = cp.fname_metrology_text self.img_arr = None self.list_of_calib_types = ['center', 'tilt', 'geometry'] cp.setIcons() self.setGeometry(10, 25, 650, 30) self.setWindowTitle('Metrology') #self.setWindowIcon(cp.icon_monitor) self.palette = QtGui.QPalette() self.resetColorIsSet = False self.setFrame() self.setParams() #self.titFileXlsx = QtGui.QLabel('File xlsx:') self.ediFileXlsx = QtGui.QLineEdit(fnm.path_metrology_xlsx()) self.ediFileXlsx.setReadOnly(True) self.ediFileText = QtGui.QLineEdit(fnm.path_metrology_text()) self.ediFileText.setReadOnly(True) self.butFileXlsx = QtGui.QPushButton(' 1. Select xlsx file:') self.butConvert = QtGui.QPushButton(' 2. Convert xlsx to text file(s)') self.butFileText = QtGui.QPushButton(' 3. Select text file:') self.butEvaluate = QtGui.QPushButton(' 4. Evaluate') self.butDeploy = QtGui.QPushButton(' 5. Deploy') self.butList = QtGui.QPushButton('List') self.butRemove = QtGui.QPushButton('Remove') self.butViewOffice = QtGui.QPushButton('View xlsx') self.butViewText = QtGui.QPushButton('View text') self.butScript = QtGui.QPushButton(self.script + cp.char_expand) self.butSrc = QtGui.QPushButton(self.source_name + cp.char_expand) self.labSrc = QtGui.QLabel('for detector') self.labScript = QtGui.QLabel('using script') self.guirunrange = GUIRunRange() self.butViewOffice.setIcon(cp.icon_monitor) self.butViewText.setIcon(cp.icon_monitor) #self.butConvert .setIcon(cp.icon_convert) self.grid = QtGui.QGridLayout() self.grid_row = 0 self.grid.addWidget(self.butFileXlsx, self.grid_row, 0) self.grid.addWidget(self.ediFileXlsx, self.grid_row, 1, 1, 8) self.grid.addWidget(self.butViewOffice, self.grid_row, 8) self.grid.addWidget(self.butConvert, self.grid_row + 1, 0) self.grid.addWidget(self.butList, self.grid_row + 1, 1, 1, 1) self.grid.addWidget(self.butRemove, self.grid_row + 1, 2, 1, 1) self.grid.addWidget(self.butFileText, self.grid_row + 2, 0) self.grid.addWidget(self.ediFileText, self.grid_row + 2, 1, 1, 8) self.grid.addWidget(self.butViewText, self.grid_row + 2, 8) self.grid.addWidget(self.butEvaluate, self.grid_row + 3, 0) self.grid.addWidget(self.labScript, self.grid_row + 3, 1) self.grid.addWidget(self.butScript, self.grid_row + 3, 2) self.grid.addWidget(self.butDeploy, self.grid_row + 4, 0) self.grid.addWidget(self.labSrc, self.grid_row + 4, 1) self.grid.addWidget(self.butSrc, self.grid_row + 4, 2) self.grid.addWidget(self.guirunrange, self.grid_row + 4, 3, 1, 5) #self.setLayout(self.grid) self.vbox = QtGui.QVBoxLayout() self.vbox.addLayout(self.grid) self.vbox.addStretch(1) self.setLayout(self.vbox) self.connect(self.butFileXlsx, QtCore.SIGNAL('clicked()'), self.onButFileXlsx) self.connect(self.butFileText, QtCore.SIGNAL('clicked()'), self.onButFileText) self.connect(self.butViewOffice, QtCore.SIGNAL('clicked()'), self.onButViewOffice) self.connect(self.butViewText, QtCore.SIGNAL('clicked()'), self.onButViewText) self.connect(self.butConvert, QtCore.SIGNAL('clicked()'), self.onButConvert) self.connect(self.butRemove, QtCore.SIGNAL('clicked()'), self.onButRemove) self.connect(self.butList, QtCore.SIGNAL('clicked()'), self.onButList) self.connect(self.butEvaluate, QtCore.SIGNAL('clicked()'), self.onButEvaluate) self.connect(self.butDeploy, QtCore.SIGNAL('clicked()'), self.onButDeploy) self.connect(self.butScript, QtCore.SIGNAL('clicked()'), self.onButScript) self.connect(self.butSrc, QtCore.SIGNAL('clicked()'), self.onButSrc) self.showToolTips() self.setStyle() cp.guimetrology = self
def __init__ (self, parent=None, app=None) : self.name = 'GUIMetrology' self.myapp = app QtGui.QWidget.__init__(self, parent) self.fname_prefix = cp.fname_prefix self.fname_metrology_xlsx = cp.fname_metrology_xlsx self.fname_metrology_text = cp.fname_metrology_text self.img_arr = None self.list_of_calib_types = ['center', 'tilt', 'geometry'] cp.setIcons() self.setGeometry(10, 25, 725, 200) self.setWindowTitle('Metrology') #self.setWindowIcon(cp.icon_monitor) self.palette = QtGui.QPalette() self.resetColorIsSet = False self.setFrame() self.setParams() #self.titFileXlsx = QtGui.QLabel('File xlsx:') self.ediFileXlsx = QtGui.QLineEdit ( fnm.path_metrology_xlsx() ) self.ediFileXlsx.setReadOnly(True) self.ediFileText = QtGui.QLineEdit ( fnm.path_metrology_text() ) self.ediFileText.setReadOnly(True) self.butFileXlsx = QtGui.QPushButton(' 1. Select xlsx file:') self.butConvert = QtGui.QPushButton(' 2. Convert xlsx to text file(s)') self.butFileText = QtGui.QPushButton(' 3. Select text file:') self.butEvaluate = QtGui.QPushButton(' 4. Evaluate') self.butDeploy = QtGui.QPushButton(' 5. Deploy') self.butList = QtGui.QPushButton('List') self.butRemove = QtGui.QPushButton('Remove') self.butViewOffice= QtGui.QPushButton('View xlsx') self.butViewText = QtGui.QPushButton('View text') self.butScript = QtGui.QPushButton(self.script + cp.char_expand ) self.butSrc = QtGui.QPushButton(self.source_name + cp.char_expand ) self.labSrc = QtGui.QLabel('for detector') self.labScript = QtGui.QLabel('using script') self.guirange = GUIRange() self.butViewOffice .setIcon(cp.icon_monitor) self.butViewText .setIcon(cp.icon_monitor) #self.butConvert .setIcon(cp.icon_convert) self.grid = QtGui.QGridLayout() self.grid_row = 0 self.grid.addWidget(self.butFileXlsx, self.grid_row, 0) self.grid.addWidget(self.ediFileXlsx, self.grid_row, 1, 1, 8) self.grid.addWidget(self.butViewOffice, self.grid_row, 8) self.grid.addWidget(self.butConvert, self.grid_row+1, 0) self.grid.addWidget(self.butList, self.grid_row+1, 1, 1, 1) self.grid.addWidget(self.butRemove, self.grid_row+1, 2, 1, 1) self.grid.addWidget(self.butFileText, self.grid_row+2, 0) self.grid.addWidget(self.ediFileText, self.grid_row+2, 1, 1, 8) self.grid.addWidget(self.butViewText, self.grid_row+2, 8) self.grid.addWidget(self.butEvaluate, self.grid_row+3, 0) self.grid.addWidget(self.labScript, self.grid_row+3, 1) self.grid.addWidget(self.butScript, self.grid_row+3, 2) self.grid.addWidget(self.butDeploy, self.grid_row+4, 0) self.grid.addWidget(self.labSrc, self.grid_row+4, 1) self.grid.addWidget(self.butSrc, self.grid_row+4, 2) self.grid.addWidget(self.guirange, self.grid_row+4, 3, 1, 5) #self.setLayout(self.grid) self.vbox = QtGui.QVBoxLayout() self.vbox.addLayout(self.grid) self.vbox.addStretch(1) self.setLayout(self.vbox) self.connect( self.butFileXlsx, QtCore.SIGNAL('clicked()'), self.onButFileXlsx ) self.connect( self.butFileText, QtCore.SIGNAL('clicked()'), self.onButFileText ) self.connect( self.butViewOffice, QtCore.SIGNAL('clicked()'), self.onButViewOffice ) self.connect( self.butViewText, QtCore.SIGNAL('clicked()'), self.onButViewText ) self.connect( self.butConvert, QtCore.SIGNAL('clicked()'), self.onButConvert ) self.connect( self.butRemove, QtCore.SIGNAL('clicked()'), self.onButRemove ) self.connect( self.butList, QtCore.SIGNAL('clicked()'), self.onButList ) self.connect( self.butEvaluate, QtCore.SIGNAL('clicked()'), self.onButEvaluate ) self.connect( self.butDeploy, QtCore.SIGNAL('clicked()'), self.onButDeploy ) self.connect( self.butScript, QtCore.SIGNAL('clicked()'), self.onButScript ) self.connect( self.butSrc, QtCore.SIGNAL('clicked()'), self.onButSrc ) self.showToolTips() self.setStyle() cp.guimetrology = self
def __init__ (self, parent=None, app=None) : self.name = 'GUIMetrology' self.myapp = app QtGui.QWidget.__init__(self, parent) self.fname_prefix = cp.fname_prefix self.fname_metrology_xlsx = cp.fname_metrology_xlsx self.fname_metrology_text = cp.fname_metrology_text self.img_arr = None cp.setIcons() self.setGeometry(10, 25, 650, 30) self.setWindowTitle('Metrology') #self.setWindowIcon(cp.icon_monitor) self.palette = QtGui.QPalette() self.resetColorIsSet = False self.setFrame() #self.titFileXlsx = QtGui.QLabel('File xlsx:') self.ediFileXlsx = QtGui.QLineEdit ( fnm.path_metrology_xlsx() ) self.ediFileXlsx.setReadOnly(True) self.ediFileText = QtGui.QLineEdit ( fnm.path_metrology_text() ) self.ediFileText.setReadOnly(True) self.butFileXlsx = QtGui.QPushButton(' 1. Select xlsx file:') self.butConvert = QtGui.QPushButton(' 2. Convert xlsx to text file(s)') self.butFileText = QtGui.QPushButton(' 3. Select text file:') self.butEvaluate = QtGui.QPushButton(' 4. Evaluate') self.butDeploy = QtGui.QPushButton(' 5. Deploy') self.butList = QtGui.QPushButton('List') self.butRemove = QtGui.QPushButton('Remove') self.butViewOffice= QtGui.QPushButton('View xlsx') self.butViewText = QtGui.QPushButton('View text') self.butViewOffice .setIcon(cp.icon_monitor) self.butViewText .setIcon(cp.icon_monitor) #self.butConvert .setIcon(cp.icon_convert) self.grid = QtGui.QGridLayout() self.grid_row = 0 self.grid.addWidget(self.butFileXlsx, self.grid_row, 0) self.grid.addWidget(self.ediFileXlsx, self.grid_row, 1, 1, 8) self.grid.addWidget(self.butViewOffice, self.grid_row, 8) self.grid.addWidget(self.butConvert, self.grid_row+1, 0) self.grid.addWidget(self.butList, self.grid_row+1, 1, 1, 1) self.grid.addWidget(self.butRemove, self.grid_row+1, 2, 1, 1) self.grid.addWidget(self.butFileText, self.grid_row+2, 0) self.grid.addWidget(self.ediFileText, self.grid_row+2, 1, 1, 8) self.grid.addWidget(self.butViewText, self.grid_row+2, 8) self.grid.addWidget(self.butEvaluate, self.grid_row+3, 0) self.grid.addWidget(self.butDeploy, self.grid_row+4, 0) #self.setLayout(self.grid) self.vbox = QtGui.QVBoxLayout() self.vbox.addLayout(self.grid) self.vbox.addStretch(1) self.setLayout(self.vbox) self.connect( self.butFileXlsx, QtCore.SIGNAL('clicked()'), self.onButFileXlsx ) self.connect( self.butFileText, QtCore.SIGNAL('clicked()'), self.onButFileText ) self.connect( self.butViewOffice, QtCore.SIGNAL('clicked()'), self.onButViewOffice ) self.connect( self.butViewText, QtCore.SIGNAL('clicked()'), self.onButViewText ) self.connect( self.butConvert, QtCore.SIGNAL('clicked()'), self.onButConvert ) self.connect( self.butRemove, QtCore.SIGNAL('clicked()'), self.onButRemove ) self.connect( self.butList, QtCore.SIGNAL('clicked()'), self.onButList ) self.connect( self.butEvaluate, QtCore.SIGNAL('clicked()'), self.onButEvaluate ) self.connect( self.butDeploy, QtCore.SIGNAL('clicked()'), self.onButDeploy ) self.showToolTips() self.setStyle() cp.guimetrology = self