#! /usr/env/python #-------------------------------------------------------------------------------- """ Application: Dialog_Mgr for DAQ_96_Gui COOR Message Dialog for the Graphical User Interface to the DAQ_96 Control Program """ #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- import string from Tkinter import * import Pmw from MultiShell import updateComboBox from MultiShell import updateIntVar from Print_Utils import printLine from Itc_Coor_Client import coor_reply_timeout_sec #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- class Dialog_Mgr : MgrTemplStr=[[ "Find_DAC(*)", "TrgMgr_Find_DAC ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( )" ], [ "", "" ], [ "Profile RawADC(*)", "TrgMgr_Profile_BLS ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( )" ], [ "Profile OutputEt(*)", "TrgMgr_Profile_AdfEt ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( )" ], [ "Adf Out Const(*)", "TrgMgr_AdfOut_Const ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Value " ], [ "Raw ADC Thresh(*)", "TrgMgr_RawAdc_Thresh ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Value " ], [ "RawMux BLS Aligned(*)", "TrgMgr_Adf_RawAdc_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_BlsAligned" ], [ "RawMux Simu Turn(*)", "TrgMgr_Adf_RawAdc_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_SimuTurn" ], [ "RawMem Capt Monit(*)", "TrgMgr_Adf_RawAdc_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_CaptureMonitor" ], [ "RawMem Capt@Thresh(*)", "TrgMgr_Adf_RawAdc_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_CaptureAtThresh" ], [ "RawMem Capt Immed(*)", "TrgMgr_Adf_RawAdc_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Capt Immed" ], [ "RawMem Simu Turn(*)", "TrgMgr_Adf_RawAdc_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_PlaySimuTurn" ], [ "OutMux Filt Always(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_Filtered_Always" ], [ "OutMux Filt LiveX(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_Filtered_LiveX" ], [ "OutMux Rand Always(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_Prn_Always" ], [ "OutMux Rand LiveX(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_Prn_LiveX" ], [ "OutMux Simu Always(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_SimuTurn_Always" ], [ "OutMux Simu LiveX(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_SimuTurn_LiveX" ], [ "OutMux Cnst Always(*)", "TrgMgr_Adf_OutputEt_Mux ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mux_Constant_Always" ], [ "", "" ], [ "OutMem Capt Monit(*)", "TrgMgr_Adf_OutputEt_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_CaptureMonitor" ], [ "OutMem Capt@Thresh(*)", "TrgMgr_Adf_OutputEt_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_CaptureAtThresh" ], [ "OutMem Capt Immed(*)", "TrgMgr_Adf_OutputEt_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Capt Immed" ], [ "OutMem Simu Turn(*)", "TrgMgr_Adf_OutputEt_Mem ZZ_Tower TT_Eta( <+/-E:+/-E> ) TT_Phi( ) Mem_PlaySimuTurn" ], [ "", "" ] ] MgrTwrTypeStr= [ "EM", "HD" ] def __init__ ( self, MShell, FrameNum ) : self.MShell = MShell self.MgrFrame = FrameNum # printLine ( "Dialog", 'Frame #%d is "%s"' % ( FrameNum, MShell.frameName[FrameNum] ) ) #-------------------------------------------------------------------------------- def createInterface(self): MShell = self.MShell MShell.addFieldLabel ( nFrame = self.MgrFrame, labelName = 'Access: Send TrgMgr Expert Messages', column = 1, columnspan = 4, width = 35, row = MShell.nextFieldRow() ) MShell.addFieldLabel ( nFrame = self.MgrFrame, labelName = "Msg Template", column = 1, row = MShell.nextFieldRow() ) MgrTemplateFrame = \ MShell.addFieldFrame ( nFrame = self.MgrFrame, labelName = "Template for TrgMgr Msg", column = 2, columnspan = 3, row = MShell.currentFieldRow() ) self.MgrTemplateNum_var = IntVar() self.MgrTemplateNum_var.set(0) for TemplateNum in range (len(self.MgrTemplStr)) : if ( self.MgrTemplStr[TemplateNum][0] != "" ) : MShell.addFieldRadioB ( frame = MgrTemplateFrame, labelName = self.MgrTemplStr[TemplateNum][0], value = TemplateNum, column = TemplateNum % 2, row = TemplateNum / 2, gridPady = 0, font = ('Verdana',7), variable = self.MgrTemplateNum_var, command = lambda t=TemplateNum : self.MgrUpdateTemplate ( TemplateNum = t ) ) self.MgrMessage_box = \ MShell.addFieldCombo ( nFrame = self.MgrFrame, labelName ="TrgMgr Msg", helpMessage ="TrgMgr Msg", statusMessage="TrgMgr Msg", initValue ="Pick a template above", font = ('Verdana',7), columnspan = 3, width = 43 ) MShell.addFieldLabel ( nFrame = self.MgrFrame, labelName = "(*) TT Type", column = 1, row = MShell.nextFieldRow() ) MgrTwrTypeFrame = \ MShell.addFieldFrame ( nFrame = self.MgrFrame, labelName = "Trigger Tower Type", column = 2, columnspan = 1, row = MShell.currentFieldRow() ) self.MgrTwrTypeNum_var = IntVar() self.MgrTwrTypeNum_var.set(0) for TwrTypeNum in range (2) : if ( self.MgrTemplStr[TwrTypeNum][0] != "" ) : MShell.addFieldRadioB ( frame = MgrTwrTypeFrame, labelName = self.MgrTwrTypeStr[TwrTypeNum], value = TwrTypeNum, column = TwrTypeNum, row = 0, gridPady = 0, font = ('Verdana',7), variable = self.MgrTwrTypeNum_var, command = lambda t=TwrTypeNum : self.MgrUpdateTemplate ( TwrTypeNum = t ) ) MShell.addFieldButton ( nFrame = self.MgrFrame, labelName = 'Send Request', helpMessage = 'Send Request', statusMessage= 'Send Request', column = 3, gridSticky = W, row = MShell.currentFieldRow(), command = self.Mgr_Send_TrgMgr_Msg ) MShell.addFieldButton ( nFrame = self.MgrFrame, labelName = 'COOR Msg...', helpMessage = 'Send COOR Messages', statusMessage= 'Send COOR Messages', column = 4, row = MShell.currentFieldRow(), command = lambda: MShell.selectFrame(MShell.MsgFrame) ) self.MgrReply_box = \ MShell.addFieldEntry ( nFrame = self.MgrFrame, labelName ="Reply", helpMessage ="Reply", statusMessage="Reply", initValue ="-", bg = 'gray80', columnspan = 3, font = ('Verdana',7), width = 43 ) #-------------------------------------------------------------------------------- def Mgr_Send_TrgMgr_Msg ( self, Message = None, TimeOut_sec = coor_reply_timeout_sec, Comment = None ) : updateComboBox ( self.MgrMessage_box, Message ) Message_str = self.MgrMessage_box.get() reply = self.MShell.coor_client.sendCoorMsg ( Message_str, TimeOut_sec ) self.MgrReply_box.setentry( string.split( reply, ' ', 1 )[1] ) return reply #-------------------------------------------------------------------------------- def MgrUpdateTemplate ( self, TwrTypeNum = None, TemplateNum = None ) : if ( TwrTypeNum == None ) : TwrTypeNum = self.MgrTwrTypeNum_var.get() if ( TemplateNum == None ) : TemplateNum = self.MgrTemplateNum_var.get() Template_str = self.MgrTemplStr[TemplateNum][1] TwrTypeLoc = string.find ( Template_str, "ZZ" ) if ( TwrTypeLoc >= 0 ) : Template_str = Template_str [:TwrTypeLoc] + self.MgrTwrTypeStr[TwrTypeNum] + Template_str [TwrTypeLoc+2:] updateComboBox ( self.MgrMessage_box, Template_str )