class Init_Keeper_Panel(JPanel): def __init__(self,rfq_keeper_controller): self.rfq_keeper_controller = rfq_keeper_controller self.setLayout(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() self.setBorder(etched_border) buttons_panel = JPanel(FlowLayout(FlowLayout.LEFT,3,3)) #--------------------------------------------- init_keeper_button = JButton("Initialize Keeper") init_keeper_button.addActionListener(Init_Keeper_Button_Listener(self.rfq_keeper_controller)) #--------------------------------------------- buttons_panel.add(init_keeper_button) #--------------------------------------------- info_panel = JPanel(GridLayout(6,2)) label_current_integral = JLabel("Current Integral [nC]=",JLabel.RIGHT) label_reprate = JLabel("Rep. rate[Hz]=",JLabel.RIGHT) label_rfq_pw = JLabel("RFQ Pulse Width=",JLabel.RIGHT) label_target_pwr =JLabel("Avg. Pwr. on Target[kW]=",JLabel.RIGHT) label_rfq_max_pw_correction = JLabel("Max PW Correction=",JLabel.RIGHT) label_update_time = JLabel("Update Time [sec]=",JLabel.RIGHT) #------- self.current_integral_text = DoubleInputTextField("G12.5") self.reprate_text = DoubleInputTextField("F4.1") self.rfq_pw_text = DoubleInputTextField("F6.1") self.target_pwr_text = DoubleInputTextField("F9.3") self.rfq_max_pw_correction_text = DoubleInputTextField("F6.1") self.update_time_text = DoubleInputTextField("F6.1") #------- self.current_integral_text.setHorizontalAlignment(JTextField.CENTER) self.reprate_text.setHorizontalAlignment(JTextField.CENTER) self.rfq_pw_text.setHorizontalAlignment(JTextField.CENTER) self.target_pwr_text.setHorizontalAlignment(JTextField.CENTER) self.rfq_max_pw_correction_text.setHorizontalAlignment(JTextField.CENTER) self.update_time_text.setHorizontalAlignment(JTextField.CENTER) #------- self.rfq_max_pw_correction_text.setValue(20.) self.update_time_text .setValue(1.0) #------- info_panel.add(label_current_integral) info_panel.add(self.current_integral_text) info_panel.add(label_reprate) info_panel.add(self.reprate_text) info_panel.add(label_rfq_pw) info_panel.add(self.rfq_pw_text) info_panel.add(label_target_pwr) info_panel.add(self.target_pwr_text) info_panel.add(label_rfq_max_pw_correction) info_panel.add(self.rfq_max_pw_correction_text) info_panel.add(label_update_time) info_panel.add(self.update_time_text) #---------------------------------------------- inner_0_panel = JPanel(BorderLayout()) inner_0_panel.add(buttons_panel,BorderLayout.NORTH) inner_0_panel.add(info_panel,BorderLayout.CENTER) self.add(inner_0_panel,BorderLayout.NORTH)
class Init_and_Fit_Params_Controller: def __init__(self,linac_wizard_document,transverse_twiss_fitting_controller): self.linac_wizard_document = linac_wizard_document self.transverse_twiss_fitting_controller = transverse_twiss_fitting_controller self.main_panel = JPanel(BorderLayout()) tmp_panel = JPanel(GridLayout(7,2)) self.eKin_text = DoubleInputTextField(0.,ScientificNumberFormat(7),8) eKin_lbl = JLabel("eKin[MeV]=",JLabel.RIGHT) self.current_text = DoubleInputTextField(0.,ScientificNumberFormat(4),8) current_lbl = JLabel("Curr.[mA]=",JLabel.RIGHT) self.fit_err_text = DoubleInputTextField(0.,ScientificNumberFormat(4),8) fit_err_lbl = JLabel("Fit Err,%=",JLabel.RIGHT) self.fit_err_text.setValue(5.0) self.fit_iter_text = DoubleInputTextField(0.,ScientificNumberFormat(1),8) iter_lbl = JLabel("Fit Iterations=",JLabel.RIGHT) self.fit_iter_text.setValue(200) self.fit_iter_left_text = DoubleInputTextField(0.,ScientificNumberFormat(1),8) iter_left_lbl = JLabel("Iters. Left=",JLabel.RIGHT) self.avg_diff_text = DoubleInputTextField(0.,ScientificNumberFormat(7),8) avg_diff_lbl = JLabel("Avg.Diff.[mm]=",JLabel.RIGHT) tmp_panel.add(eKin_lbl) tmp_panel.add(self.eKin_text) tmp_panel.add(current_lbl) tmp_panel.add(self.current_text) tmp_panel.add(fit_err_lbl) tmp_panel.add(self.fit_err_text) tmp0_lbl = JLabel("==========",JLabel.RIGHT) tmp1_lbl = JLabel("==========",JLabel.RIGHT) tmp_panel.add(tmp0_lbl) tmp_panel.add(tmp1_lbl) tmp_panel.add(iter_lbl) tmp_panel.add(self.fit_iter_text) tmp_panel.add(iter_left_lbl) tmp_panel.add(self.fit_iter_left_text) tmp_panel.add(avg_diff_lbl) tmp_panel.add(self.avg_diff_text) #----etched border etched_border = BorderFactory.createEtchedBorder() #------buttons panel ------------ one_pass_button = JButton("Make One Pass") one_pass_button.addActionListener(One_Pass_Listener(self.linac_wizard_document)) fit_button = JButton("Start Fitting") fit_button.addActionListener(Twiss_Fitting_Listener(self.linac_wizard_document)) stop_fit_button = JButton("Stop Fitting") stop_fit_button.addActionListener(Stop_Twiss_Fitting_Listener(self.linac_wizard_document)) buttons_panel = JPanel(GridLayout(3,1)) button0_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button0_panel.add(one_pass_button) button1_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button1_panel.add(fit_button) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button2_panel.add(stop_fit_button) buttons_panel.add(button0_panel) buttons_panel.add(button1_panel) buttons_panel.add(button2_panel) #--------- Final Twiss parameters table ----- self.final_twiss_params_holder = Twiss_Params_Holder() self.finalTwiss_table = JTable(Final_Twiss_Table_Model(self.final_twiss_params_holder)) self.finalTwiss_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.finalTwiss_table.setFillsViewportHeight(true) self.finalTwiss_table.setPreferredScrollableViewportSize(Dimension(180,80)) final_to_init_button = JButton("Copy Results To Initial Twiss") final_to_init_button.addActionListener(Copy_Twiss_Listener(self.transverse_twiss_fitting_controller)) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button2_panel.add(final_to_init_button) finalTwiss_panel = JPanel(BorderLayout()) finalTwiss_panel.add(JScrollPane(self.finalTwiss_table), BorderLayout.CENTER) finalTwiss_panel.add(button2_panel,BorderLayout.SOUTH) border = BorderFactory.createTitledBorder(etched_border,"Final Twiss Fitting Results") finalTwiss_panel.setBorder(border) #---------make main panel -------------- tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp_panel,BorderLayout.NORTH) tmp1_panel.add(buttons_panel,BorderLayout.SOUTH) tmp2_panel = JPanel(BorderLayout()) tmp2_panel.add(tmp1_panel,BorderLayout.WEST) tmp2_panel.add(finalTwiss_panel,BorderLayout.CENTER) self.main_panel.add(tmp2_panel,BorderLayout.NORTH) def getMainPanel(self): return self.main_panel
class Init_and_Fit_Params_Controller: def __init__(self, linac_wizard_document, transverse_twiss_fitting_controller): self.linac_wizard_document = linac_wizard_document self.transverse_twiss_fitting_controller = transverse_twiss_fitting_controller self.main_panel = JPanel(BorderLayout()) tmp_panel = JPanel(GridLayout(7, 2)) self.eKin_text = DoubleInputTextField(0., ScientificNumberFormat(7), 8) eKin_lbl = JLabel("eKin[MeV]=", JLabel.RIGHT) self.current_text = DoubleInputTextField(0., ScientificNumberFormat(4), 8) current_lbl = JLabel("Curr.[mA]=", JLabel.RIGHT) self.fit_err_text = DoubleInputTextField(0., ScientificNumberFormat(4), 8) fit_err_lbl = JLabel("Fit Err,%=", JLabel.RIGHT) self.fit_err_text.setValue(5.0) self.fit_iter_text = DoubleInputTextField(0., ScientificNumberFormat(1), 8) iter_lbl = JLabel("Fit Iterations=", JLabel.RIGHT) self.fit_iter_text.setValue(200) self.fit_iter_left_text = DoubleInputTextField( 0., ScientificNumberFormat(1), 8) iter_left_lbl = JLabel("Iters. Left=", JLabel.RIGHT) self.avg_diff_text = DoubleInputTextField(0., ScientificNumberFormat(7), 8) avg_diff_lbl = JLabel("Avg.Diff.[mm]=", JLabel.RIGHT) tmp_panel.add(eKin_lbl) tmp_panel.add(self.eKin_text) tmp_panel.add(current_lbl) tmp_panel.add(self.current_text) tmp_panel.add(fit_err_lbl) tmp_panel.add(self.fit_err_text) tmp0_lbl = JLabel("==========", JLabel.RIGHT) tmp1_lbl = JLabel("==========", JLabel.RIGHT) tmp_panel.add(tmp0_lbl) tmp_panel.add(tmp1_lbl) tmp_panel.add(iter_lbl) tmp_panel.add(self.fit_iter_text) tmp_panel.add(iter_left_lbl) tmp_panel.add(self.fit_iter_left_text) tmp_panel.add(avg_diff_lbl) tmp_panel.add(self.avg_diff_text) #----etched border etched_border = BorderFactory.createEtchedBorder() #------buttons panel ------------ one_pass_button = JButton("Make One Pass") one_pass_button.addActionListener( One_Pass_Listener(self.linac_wizard_document)) fit_button = JButton("Start Fitting") fit_button.addActionListener( Twiss_Fitting_Listener(self.linac_wizard_document)) stop_fit_button = JButton("Stop Fitting") stop_fit_button.addActionListener( Stop_Twiss_Fitting_Listener(self.linac_wizard_document)) buttons_panel = JPanel(GridLayout(3, 1)) button0_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button0_panel.add(one_pass_button) button1_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button1_panel.add(fit_button) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button2_panel.add(stop_fit_button) buttons_panel.add(button0_panel) buttons_panel.add(button1_panel) buttons_panel.add(button2_panel) #--------- Final Twiss parameters table ----- self.final_twiss_params_holder = Twiss_Params_Holder() self.finalTwiss_table = JTable( Final_Twiss_Table_Model(self.final_twiss_params_holder)) self.finalTwiss_table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION) self.finalTwiss_table.setFillsViewportHeight(true) self.finalTwiss_table.setPreferredScrollableViewportSize( Dimension(180, 80)) final_to_init_button = JButton("Copy Results To Initial Twiss") final_to_init_button.addActionListener( Copy_Twiss_Listener(self.transverse_twiss_fitting_controller)) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button2_panel.add(final_to_init_button) finalTwiss_panel = JPanel(BorderLayout()) finalTwiss_panel.add(JScrollPane(self.finalTwiss_table), BorderLayout.CENTER) finalTwiss_panel.add(button2_panel, BorderLayout.SOUTH) border = BorderFactory.createTitledBorder( etched_border, "Final Twiss Fitting Results") finalTwiss_panel.setBorder(border) #---------make main panel -------------- tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp_panel, BorderLayout.NORTH) tmp1_panel.add(buttons_panel, BorderLayout.SOUTH) tmp2_panel = JPanel(BorderLayout()) tmp2_panel.add(tmp1_panel, BorderLayout.WEST) tmp2_panel.add(finalTwiss_panel, BorderLayout.CENTER) self.main_panel.add(tmp2_panel, BorderLayout.NORTH) def getMainPanel(self): return self.main_panel
class Abstract_Cavity_Controller: def __init__(self, main_loop_controller, cav_wrapper): self.main_loop_controller = main_loop_controller self.cav_wrapper = cav_wrapper self.main_panel = JPanel(BorderLayout()) self.parameters_panel = JPanel(BorderLayout()) #---- backward cavity amplitude move params panel0 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) cav_amp_backward_steps_mult_label = JLabel( "N cav. amp. backward steps multiplier =", JLabel.RIGHT) self.cav_amp_backward_steps_mult_text = DoubleInputTextField( 1.0, ScientificNumberFormat(2), 5) panel0.add(cav_amp_backward_steps_mult_label) panel0.add(self.cav_amp_backward_steps_mult_text) #---- cavity's wait time multiplier panel1 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) cav_amp_wait_time_mult_label = JLabel( "Cav. amp. time wait multiplier =", JLabel.RIGHT) self.cav_amp_wait_time_mult_text = DoubleInputTextField( 3.0, ScientificNumberFormat(2), 5) panel1.add(cav_amp_wait_time_mult_label) panel1.add(self.cav_amp_wait_time_mult_text) #---- cavity's safe amplitude up and down limits panel2 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) safe_relative_amp_up_label = JLabel("Cav. amp. safe Up [%]=", JLabel.RIGHT) self.safe_relative_amp_up_text = DoubleInputTextField( 7.0, ScientificNumberFormat(2), 5) panel2.add(safe_relative_amp_up_label) panel2.add(self.safe_relative_amp_up_text) panel3 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) safe_relative_amp_down_label = JLabel("Cav. amp. safe Down [%]=", JLabel.RIGHT) self.safe_relative_amp_down_text = DoubleInputTextField( 7.0, ScientificNumberFormat(2), 5) panel3.add(safe_relative_amp_down_label) panel3.add(self.safe_relative_amp_down_text) #----- cavity's guess phase[deg] and amplitude[%] corrections after 360 deg full scan for inner BPMs panel4 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) guess_phase_shift_label = JLabel( "Cav. Guess Phase Shift after Full Scan [deg]=", JLabel.RIGHT) self.guess_phase_shift_text = DoubleInputTextField( 0.0, ScientificNumberFormat(2), 5) panel4.add(guess_phase_shift_label) panel4.add(self.guess_phase_shift_text) panel5 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 3)) guess_cav_amp_shift_label = JLabel( "Cav. Amp Shift after Full Scan [%]=", JLabel.RIGHT) self.guess_cav_amp_shift_text = DoubleInputTextField( 0.0, ScientificNumberFormat(2), 5) panel5.add(guess_cav_amp_shift_label) panel5.add(self.guess_cav_amp_shift_text) #----------------------------------------------- params_panel = JPanel(GridLayout(6, 1, 1, 1)) params_panel.add(panel0) params_panel.add(panel1) params_panel.add(panel2) params_panel.add(panel3) params_panel.add(panel4) params_panel.add(panel5) #------------------------------------------------ self.parameters_panel.add(params_panel, BorderLayout.NORTH) #------------------------------------------------ self.scan_progress_bar = Scan_Progress_Bar(self.main_loop_controller, self) #------------------------------------------------ cav_wrapper.safe_relative_amp_up_text = self.safe_relative_amp_up_text cav_wrapper.safe_relative_amp_down_text = self.safe_relative_amp_down_text def getMainPanel(self): return self.main_panel def getParamsPanel(self): return self.parameters_panel def getScanProgressBarPanel(self): return self.scan_progress_bar.scan_progress_panel def getScanProgressBar(self): return self.scan_progress_bar def runSetUpAlgorithm(self): """ Returns (true, text) in the case of the success """ text = "Good. Cav=" + self.cav_wrapper.alias return (true, text) def init(self): """ reads the pv values """ self.cav_wrapper.init() self.scan_progress_bar.init() def writeDataToXML(self, root_da): """ Abstract method. This method should be implemented in the subclass """ cav_cntrl_data_da = root_da.createChild("CAVITY_CONTROLLER_" + self.cav_wrapper.alias) def readDataFromXML(self, cav_cntrl_data_da): """ Abstract method. This method should be implemented in the subclass """ pass def checkBPM_Usage(self, bpm_wrapper): """ Abstract method. Returns True or False about this controller usage of the BPM """ return false def timeSleep(self, time_sleep): n_parts = 5 tm = time_sleep / n_parts for ind in range(n_parts): time.sleep(tm) self.scan_progress_bar.count_and_update(tm) if (self.main_loop_controller.loop_run_state.shouldStop): return def setMaxTimeCount(self): """ Abstract method. It should be implemented in each subclass. It returns the maximal time count. """ print "Debug. Abstract_Cavity_Controller.setMaxTimeCount() This method should be implemented in a subclass." self.scan_progress_bar.setMaxTimeCount(100.) return self.scan_progress_bar.count_max def getPastaFittingTime(self): """ Abstract method. It should be implemented in each subclass. """ return 0. def initProgressBar(self): self.scan_progress_bar.init() def wrtiteAbstractCntrlToXML(self, root_da): abstr_cntrl_data_da = root_da.createChild( "ABSTRACT_CAVITY_CONTROLLER_PARAMS") abstr_cntrl_data_da.setValue( "amp_steps_mult", self.cav_amp_backward_steps_mult_text.getValue()) abstr_cntrl_data_da.setValue( "amp_time_mult", self.cav_amp_wait_time_mult_text.getValue()) abstr_cntrl_data_da.setValue("amp_safe_up_percent", self.safe_relative_amp_up_text.getValue()) abstr_cntrl_data_da.setValue( "amp_safe_down_percent", self.safe_relative_amp_down_text.getValue()) abstr_cntrl_data_da.setValue("guess_phase_shift", self.guess_phase_shift_text.getValue()) abstr_cntrl_data_da.setValue("guess_amp_shift_percent", self.guess_cav_amp_shift_text.getValue()) def readAbstractCntrlFromXML(self, root_da): abstr_cntrl_data_da = root_da.childAdaptor( "ABSTRACT_CAVITY_CONTROLLER_PARAMS") self.cav_amp_backward_steps_mult_text.setValue( abstr_cntrl_data_da.doubleValue("amp_steps_mult")) self.cav_amp_wait_time_mult_text.setValue( abstr_cntrl_data_da.doubleValue("amp_time_mult")) if (abstr_cntrl_data_da.hasAttribute("amp_safe_up_percent")): self.safe_relative_amp_up_text.setValue( abstr_cntrl_data_da.doubleValue("amp_safe_up_percent")) if (abstr_cntrl_data_da.hasAttribute("amp_safe_down_percent")): self.safe_relative_amp_down_text.setValue( abstr_cntrl_data_da.doubleValue("amp_safe_down_percent")) if (abstr_cntrl_data_da.hasAttribute("guess_phase_shift")): self.guess_phase_shift_text.setValue( abstr_cntrl_data_da.doubleValue("guess_phase_shift")) if (abstr_cntrl_data_da.hasAttribute("guess_amp_shift_percent")): self.guess_cav_amp_shift_text.setValue( abstr_cntrl_data_da.doubleValue("guess_amp_shift_percent"))
class Abstract_Cavity_Controller: def __init__(self,main_loop_controller,cav_wrapper): self.main_loop_controller = main_loop_controller self.cav_wrapper = cav_wrapper self.main_panel = JPanel(BorderLayout()) self.parameters_panel = JPanel(BorderLayout()) #---- backward cavity amplitude move params panel0 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) cav_amp_backward_steps_mult_label = JLabel("N cav. amp. backward steps multiplier =",JLabel.RIGHT) self.cav_amp_backward_steps_mult_text = DoubleInputTextField(1.0,ScientificNumberFormat(2),5) panel0.add(cav_amp_backward_steps_mult_label) panel0.add(self.cav_amp_backward_steps_mult_text) #---- cavity's wait time multiplier panel1 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) cav_amp_wait_time_mult_label = JLabel("Cav. amp. time wait multiplier =",JLabel.RIGHT) self.cav_amp_wait_time_mult_text = DoubleInputTextField(3.0,ScientificNumberFormat(2),5) panel1.add(cav_amp_wait_time_mult_label) panel1.add(self.cav_amp_wait_time_mult_text) #---- cavity's safe amplitude up and down limits panel2 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) safe_relative_amp_up_label = JLabel("Cav. amp. safe Up [%]=",JLabel.RIGHT) self.safe_relative_amp_up_text = DoubleInputTextField(7.0,ScientificNumberFormat(2),5) panel2.add(safe_relative_amp_up_label) panel2.add(self.safe_relative_amp_up_text) panel3 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) safe_relative_amp_down_label = JLabel("Cav. amp. safe Down [%]=",JLabel.RIGHT) self.safe_relative_amp_down_text = DoubleInputTextField(7.0,ScientificNumberFormat(2),5) panel3.add(safe_relative_amp_down_label) panel3.add(self.safe_relative_amp_down_text) #----- cavity's guess phase[deg] and amplitude[%] corrections after 360 deg full scan for inner BPMs panel4 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) guess_phase_shift_label = JLabel("Cav. Guess Phase Shift after Full Scan [deg]=",JLabel.RIGHT) self.guess_phase_shift_text = DoubleInputTextField(0.0,ScientificNumberFormat(2),5) panel4.add(guess_phase_shift_label) panel4.add(self.guess_phase_shift_text) panel5 = JPanel(FlowLayout(FlowLayout.LEFT,1,3)) guess_cav_amp_shift_label = JLabel("Cav. Amp Shift after Full Scan [%]=",JLabel.RIGHT) self.guess_cav_amp_shift_text = DoubleInputTextField(0.0,ScientificNumberFormat(2),5) panel5.add(guess_cav_amp_shift_label) panel5.add(self.guess_cav_amp_shift_text) #----------------------------------------------- params_panel = JPanel(GridLayout(6,1,1,1)) params_panel.add(panel0) params_panel.add(panel1) params_panel.add(panel2) params_panel.add(panel3) params_panel.add(panel4) params_panel.add(panel5) #------------------------------------------------ self.parameters_panel.add(params_panel,BorderLayout.NORTH) #------------------------------------------------ self.scan_progress_bar = Scan_Progress_Bar(self.main_loop_controller,self) #------------------------------------------------ cav_wrapper.safe_relative_amp_up_text = self.safe_relative_amp_up_text cav_wrapper.safe_relative_amp_down_text = self.safe_relative_amp_down_text def getMainPanel(self): return self.main_panel def getParamsPanel(self): return self.parameters_panel def getScanProgressBarPanel(self): return self.scan_progress_bar.scan_progress_panel def getScanProgressBar(self): return self.scan_progress_bar def runSetUpAlgorithm(self): """ Returns (true, text) in the case of the success """ text = "Good. Cav="+self.cav_wrapper.alias return (true,text) def init(self): """ reads the pv values """ self.cav_wrapper.init() self.scan_progress_bar.init() def writeDataToXML(self,root_da): """ Abstract method. This method should be implemented in the subclass """ cav_cntrl_data_da = root_da.createChild("CAVITY_CONTROLLER_"+self.cav_wrapper.alias) def readDataFromXML(self,cav_cntrl_data_da): """ Abstract method. This method should be implemented in the subclass """ pass def checkBPM_Usage(self,bpm_wrapper): """ Abstract method. Returns True or False about this controller usage of the BPM """ return false def timeSleep(self, time_sleep): n_parts = 5 tm = time_sleep/n_parts for ind in range(n_parts): time.sleep(tm) self.scan_progress_bar.count_and_update(tm) if(self.main_loop_controller.loop_run_state.shouldStop): return def setMaxTimeCount(self): """ Abstract method. It should be implemented in each subclass. It returns the maximal time count. """ print "Debug. Abstract_Cavity_Controller.setMaxTimeCount() This method should be implemented in a subclass." self.scan_progress_bar.setMaxTimeCount(100.) return self.scan_progress_bar.count_max def getPastaFittingTime(self): """ Abstract method. It should be implemented in each subclass. """ return 0. def initProgressBar(self): self.scan_progress_bar.init() def wrtiteAbstractCntrlToXML(self,root_da): abstr_cntrl_data_da = root_da.createChild("ABSTRACT_CAVITY_CONTROLLER_PARAMS") abstr_cntrl_data_da.setValue("amp_steps_mult",self.cav_amp_backward_steps_mult_text.getValue()) abstr_cntrl_data_da.setValue("amp_time_mult",self.cav_amp_wait_time_mult_text.getValue()) abstr_cntrl_data_da.setValue("amp_safe_up_percent",self.safe_relative_amp_up_text.getValue()) abstr_cntrl_data_da.setValue("amp_safe_down_percent",self.safe_relative_amp_down_text.getValue()) abstr_cntrl_data_da.setValue("guess_phase_shift",self.guess_phase_shift_text.getValue()) abstr_cntrl_data_da.setValue("guess_amp_shift_percent",self.guess_cav_amp_shift_text.getValue()) def readAbstractCntrlFromXML(self,root_da): abstr_cntrl_data_da = root_da.childAdaptor("ABSTRACT_CAVITY_CONTROLLER_PARAMS") self.cav_amp_backward_steps_mult_text.setValue(abstr_cntrl_data_da.doubleValue("amp_steps_mult")) self.cav_amp_wait_time_mult_text.setValue(abstr_cntrl_data_da.doubleValue("amp_time_mult")) if(abstr_cntrl_data_da.hasAttribute("amp_safe_up_percent")): self.safe_relative_amp_up_text.setValue(abstr_cntrl_data_da.doubleValue("amp_safe_up_percent")) if(abstr_cntrl_data_da.hasAttribute("amp_safe_down_percent")): self.safe_relative_amp_down_text.setValue(abstr_cntrl_data_da.doubleValue("amp_safe_down_percent")) if(abstr_cntrl_data_da.hasAttribute("guess_phase_shift")): self.guess_phase_shift_text.setValue(abstr_cntrl_data_da.doubleValue("guess_phase_shift")) if(abstr_cntrl_data_da.hasAttribute("guess_amp_shift_percent")): self.guess_cav_amp_shift_text.setValue(abstr_cntrl_data_da.doubleValue("guess_amp_shift_percent"))