def _build_Session(vip): tb = 'Session' vip.content['captions'][tb]['lb'] = {'_lb_session_line' : "Session" ,'F_dict_index' : "Session list index:" } vip.content['captions'][tb]['bn'] = {'_bn_session_save' : "Save to file" ,'_bn_session_load' : "Load from file" ,'_bn_session_browse' : "Browse files" ,'_bn_session_save_local' : "Save to local" ,'_bn_session_load_local' : "Load from local" } vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = {'FILE_PATH_session' : lambda text: se.le_or_dm_change(vip, tb, 'FILE_PATH_session', text) } vip.content['events'][tb]['dm'] = {'F_dict_index' : lambda text: se.le_or_dm_change(vip, tb, 'F_dict_index', text) } vip.content['events'][tb]['bn'] = {'_bn_session_save' : lambda: se.bn_save_session_to_file(vip) ,'_bn_session_load' : lambda: se.bn_load_session_to_vip(vip) ,'_bn_session_save_local' : lambda: se.bn_vip_to_list_session(vip) ,'_bn_session_load_local' : lambda: se.bn_list_session_to_vip(vip) ,'_bn_session_browse' : lambda: se.bn_browse_for(vip, 'FILE_PATH_session') } vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = {'F_dict_index' : sorted(vip._sessions_local.keys()) } sw.__fill_widgets(vip, tb) ### ---------- vip._qWidgets['lb'][tb]['_lb_session_line'].setAlignment(QtCore.Qt.AlignCenter) ########## ########## hBoxs hBox_ks = ['_browse', '_path', '_file_bns', '_list_dm', '_list_bns'] hBoxs = {k : QtGui.QHBoxLayout() for k in hBox_ks} hBoxs['_browse'].addWidget(vip._qWidgets['lb'][tb]['_lb_session_line']) hBoxs['_browse'].addWidget(vip._qWidgets['bn'][tb]['_bn_session_browse']) hBoxs['_file_bns'].addWidget(vip._qWidgets['bn'][tb]['_bn_session_save']) hBoxs['_file_bns'].addWidget(vip._qWidgets['bn'][tb]['_bn_session_load']) hBoxs['_path'].addWidget(vip._qWidgets['le'][tb]['FILE_PATH_session']) hBoxs['_list_dm'].addWidget(vip._qWidgets['lb'][tb]['F_dict_index']) hBoxs['_list_dm'].addWidget(vip._qWidgets['dm'][tb]['F_dict_index']) hBoxs['_list_dm'].addStretch(.1) hBoxs['_list_bns'].addWidget(vip._qWidgets['bn'][tb]['_bn_session_save_local']) hBoxs['_list_bns'].addWidget(vip._qWidgets['bn'][tb]['_bn_session_load_local']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in hBox_ks: vBox.addLayout(hBoxs[k])
def _build_Canvas_columns(vip, tb): from widgets.ResultCanvas_QTAgg import Canvas2dData, Canvas3dData vip.Canvas[tb]['2d_data'] = Canvas2dData(tb, vip) vip.Canvas[tb]['3d_data'] = Canvas3dData(tb, vip) ########## ########## vip.content['captions'][tb]['lb'] = {'_lb_data_set' : "Data set" ,'_lb_plot_function' : "with 3d data plotted as" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {'B_keep_updated' : "Update "+tb} vip.content['events'][tb]['le'] = {} vip.content['events'][tb]['cb'] = {'B_keep_updated' : lambda state: se.cb_toggled(vip, tb, 'B_keep_updated')} vip.content['events'][tb]['dm'] = {'F_data_set' : lambda text: se.dm_plot_canvas_change(vip, tb, 'F_data_set' , text) ,'F_plot_function' : lambda text: se.dm_plot_canvas_change(vip, tb, 'F_plot_function', text) } vip.content['events'][tb]['bn'] = {} vip.content['cb_vals'][tb] = {'B_keep_updated' : ('ON', 'OFF')} vip.content['dm_vals'][tb] = {'F_data_set' : menus.DATA_SET_KEYS ,'F_plot_function' : menus.PLOT_FUNCTION_KEYS } sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE-2) #### ---------- colours = {'Plot_column_1' : {'2d_data' : cs.COLOR_TRACE_1, '3d_data' : cs.COLOR_DENSITY_1} ,'Plot_column_2' : {'2d_data' : cs.COLOR_TRACE_2, '3d_data' : cs.COLOR_DENSITY_2} ,'Plot_column_3' : {'2d_data' : cs.COLOR_TRACE_3, '3d_data' : cs.COLOR_DENSITY_3} ,'Plot_column_4' : {'2d_data' : cs.COLOR_TRACE_4, '3d_data' : cs.COLOR_DENSITY_4} } for plot_type, color in colours[tb].iteritems(): vip.Canvas[tb][plot_type]._Figure.set_facecolor(color) ########## ########## hBoxs hBox = QtGui.QHBoxLayout() hBox.addWidget(vip._qWidgets['cb'][tb]['B_keep_updated']) hBox.addLayout(vip._blanks.next()) hBox.addStretch(.1) hBox.addWidget(vip._qWidgets['lb'][tb]['_lb_data_set']) hBox.addWidget(vip._qWidgets['dm'][tb]['F_data_set']) hBox.addWidget(vip._qWidgets['lb'][tb]['_lb_plot_function']) hBox.addWidget(vip._qWidgets['dm'][tb]['F_plot_function']) ########## ########## vBo vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addWidget(vip.Canvas[tb]['2d_data']) vBox.addWidget(vip.Canvas[tb]['3d_data']) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBox)
def _build_Window_buttons(vip): qw_ref = '_Popup_Windows' tab_ws = ['le', 'dm', 'cb', 'bn', 'lb'] for k in tab_ws: vip._qWidgets[k][qw_ref] = {} for k in ['captions', 'events']: vip.content[k][qw_ref] = {} ########## ########## content vip.content['captions'][qw_ref]['lb'] = {'_lb_popup' : " Popup windows "} vip.content['captions'][qw_ref]['bn'] = {'_bn_plots_12' : "Plot columns 1, 2" ,'_bn_plots_34' : "Plot columns 3, 4" ,'_bn_notes' : "Notes" ,'_bn_options' : "Options" # "Check connection" ,'_bn_scripts' : "Scripts" # "Check connection" } vip.content['captions'][qw_ref]['cb'] = {} vip.content['events'][qw_ref]['le'] = {} vip.content['events'][qw_ref]['cb'] = {} vip.content['events'][qw_ref]['dm'] = {} vip.content['events'][qw_ref]['bn'] = {'_bn_plots_12' : lambda: se.bn_open_plots_12(vip) ,'_bn_plots_34' : lambda: se.bn_open_plots_34(vip) ,'_bn_scripts' : lambda: se.bn_open_scripts(vip) ,'_bn_options' : lambda: se.bn_open_options(vip) ,'_bn_notes' : lambda: se.bn_open_notes_in_editor(vip) } sw.__fill_widgets(vip, qw_ref) vip._qWidgets['lb'][qw_ref]['_lb_popup'].setAlignment(QtCore.Qt.AlignCenter) ########## ########## hBoxs hBox_ks = ['_row_'+str(i) for i in [1,2,3]] hBoxs = {k : QtGui.QHBoxLayout() for k in hBox_ks} hBoxs['_row_1'].addWidget(vip._qWidgets['lb'][qw_ref]['_lb_popup']) hBoxs['_row_1'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_scripts']) hBoxs['_row_2'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_notes']) hBoxs['_row_2'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_options']) hBoxs['_row_3'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_plots_12']) hBoxs['_row_3'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_plots_34']) ########## ########## vBox vip._popup_window_qw_box = QtGui.QWidget() vBox = QtGui.QVBoxLayout(vip._popup_window_qw_box) for k in hBox_ks: vBox.addLayout(hBoxs[k])
def _build_Instrument_buttons(vip): qw_ref = '_Instruments' tab_ws = ['le', 'dm', 'cb', 'bn', 'lb'] for k in tab_ws: vip._qWidgets[k][qw_ref] = {} for k in ['captions', 'events']: vip.content[k][qw_ref] = {} ########## ########## content vip.content['captions'][qw_ref]['lb'] = {'_lb_instr' : "Instruments"} vip.content['captions'][qw_ref]['bn'] = {'_bn_feedback' : "Feedback" ,'_bn_connect' : "Connect" ,'_bn_adopt' : "Adopt settings" } vip.content['captions'][qw_ref]['cb'] = {} vip.content['events'][qw_ref]['le'] = {} vip.content['events'][qw_ref]['cb'] = {} vip.content['events'][qw_ref]['dm'] = {} vip.content['events'][qw_ref]['bn'] = {'_bn_feedback' : lambda: se.bn_open_GUI_feedback(vip) ,'_bn_connect' : lambda: se.bn_connect_to_lab(vip) ,'_bn_adopt' : lambda: se.bn_adopt_settings(vip) } sw.__fill_widgets(vip, qw_ref) #### ---------- vip._qWidgets['bn'][qw_ref]['_bn_connect'].setFont(QtGui.QFont(cs.FONT, cs.FONTSIZE+4)) vip._qWidgets['bn'][qw_ref]['_bn_connect'].adjustSize() vip._qWidgets['lb'][qw_ref]['_lb_instr'].setAlignment(QtCore.Qt.AlignCenter) ########## ########## hBoxs hBox_ks = ['__instr', '__connect'] hBoxs = {k : QtGui.QHBoxLayout() for k in hBox_ks} hBoxs['__instr'].addWidget(vip._qWidgets['lb'][qw_ref]['_lb_instr']) hBoxs['__instr'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_feedback']) hBoxs['__connect'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_connect']) hBoxs['__connect'].addWidget(vip._qWidgets['bn'][qw_ref]['_bn_adopt']) ########## ########## vBox vip._instrument_qw_box = QtGui.QWidget() vBox = QtGui.QVBoxLayout(vip._instrument_qw_box) for k in hBox_ks: vBox.addLayout(hBoxs[k])
def _build_Meas_main(vip): tb = 'Meas_main' vip.content['captions'][tb]['lb'] = {} vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = { 'B_during_sweep_1': "Measure during sweep 1:" } vip.content['events'][tb]['le'] = {} vip.content['events'][tb]['cb'] = { 'B_during_sweep_1': lambda state: se.cb_toggled(vip, tb, 'B_during_sweep_1') } vip.content['events'][tb]['dm'] = { 'meas_type': lambda text: se.le_or_dm_change(vip, tb, 'meas_type', text) } vip.content['events'][tb]['bn'] = {} vip.content['cb_vals'][tb] = {'B_during_sweep_1': ('ON', 'OFF')} vip.content['dm_vals'][tb] = { 'meas_type': session.Tree['_Routines']['Traces'].keys() + session.Tree['_Routines']['Points'].keys() } sw.__fill_widgets(vip, tb) #### ---------- vip._qWidgets['cb'][tb]['B_during_sweep_1'].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 1)) vip._qWidgets['dm'][tb]['meas_type'].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 1)) ########## ########## hBoxs hBox2 = QtGui.QHBoxLayout() hBox2.addStretch(1) hBox2.addWidget(vip._qWidgets['dm'][tb]['meas_type']) hBox2.addStretch(1) ########## ########## vBo vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(hBox2)
def _build_Freq_query(vip): tb = 'Freq. query' vip.content['captions'][tb]['lb'] = { 'TITLE_instr_name': "Instrument to query:" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = {} vip.content['events'][tb]['dm'] = { "TITLE_instr_name": lambda text: se.le_or_dm_change(vip, tb, "TITLE_instr_name", text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'TITLE_instr_name': session.instr_classification['SG'] } sw.__fill_widgets(vip, tb) ########## ########## hBoxs dm_ks = ['TITLE_instr_name'] hBox_ks = dm_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBox_ks} for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(vip._blanks.next()) for k in dm_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next())
def _build_Printer_demo(vip): tb = 'Printer demo' k = 'string_to_print' vip.content['captions'][tb]['lb'] = {k: "String to be printed:"} vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { k: lambda text: se.le_or_dm_change(vip, tb, k, text) } vip.content['events'][tb]['dm'] = {} vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = {} sw.__fill_widgets(vip, tb) ########## ########## hBoxs hBox_lb = QtGui.QHBoxLayout() hBox_le = QtGui.QHBoxLayout() hBox_lb.addWidget(vip._qWidgets['lb'][tb][k]) hBox_le.addWidget(vip._qWidgets['le'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addStretch(1) vBox.addLayout(hBox_lb) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBox_le) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) vBox.addStretch(1)
def _build_Flux_sweep(vip): tb = 'Flux sweep' vip.content['captions'][tb]['lb'] = { "ssg_ip": "Source:", "vna_ip": "VNA:", "com_port": "COM port:", "dac_port": "DAC port:", "cav_freq": "Cavity freq.:", "span": "Span:", "pow": "Power:", "start_freq": "Start frequency:", "stop_freq": "Stop frequency:", "step_size_ssg": "Step size (source):", "start_flux": "Flux start:", "stop_flux": "Flux stop:", "step_size_srs": "Step size (srs):", "fn": "Results file name:" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { "com_port": lambda text: se.le_or_dm_change(vip, tb, "com_port", text), "dac_port": lambda text: se.le_or_dm_change(vip, tb, "dac_port", text), "cav_freq": lambda text: se.le_or_dm_change(vip, tb, "cav_freq", text), "span": lambda text: se.le_or_dm_change(vip, tb, "span", text), "pow": lambda text: se.le_or_dm_change(vip, tb, "pow", text), "start_freq": lambda text: se.le_or_dm_change(vip, tb, "start_freq", text), "stop_freq": lambda text: se.le_or_dm_change(vip, tb, "stop_freq", text), "step_size_ssg": lambda text: se.le_or_dm_change(vip, tb, "step_size_ssg", text), "start_flux": lambda text: se.le_or_dm_change(vip, tb, "start_flux", text), "stop_flux": lambda text: se.le_or_dm_change(vip, tb, "stop_flux", text), "step_size_srs": lambda text: se.le_or_dm_change(vip, tb, "step_size_srs", text), "fn": lambda text: se.le_or_dm_change(vip, tb, "fn", text) } vip.content['events'][tb]['dm'] = { "ssg_ip": lambda text: se.le_or_dm_change(vip, tb, "ssg_ip", text), "vna_ip": lambda text: se.le_or_dm_change(vip, tb, "vna_ip", text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'ssg_ip': session.instr_classification['SG'], 'vna_ip': session.instr_classification['VNA'] } sw.__fill_widgets(vip, tb) ########## ########## hBoxs dm_ks = vip.content['events'][tb]['dm'].keys() le_ks = [ "com_port", "dac_port", "cav_freq", "span", "pow", "start_freq", "stop_freq", "step_size_ssg", "start_flux", "stop_flux", "step_size_srs", "fn" ] hBox_ks = dm_ks + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBox_ks} for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(vip._blanks.next()) for k in dm_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next())
def _build_Freq_vs_drive_power(vip): tb = 'Freq. vs. drive power' vip.content['captions'][tb]['lb'] = { "Sweep_instr": "Sweep instrument:", "VNA_instr": "VNA instrument:", "R_freq_cavity_VNA": "Freq. (cavity) [GHz]:", "R_freq_span_cavity_VNA": "Freq. span (cavity) [Hz]:", "R_power_SG": "Source power:", "R_freq_start_SG": "Source freq. start [GHz]:", "R_freq_stop_SG": "Source freq. stop [GHz]:", "R_freq_step_size_SG": "Source freq. step size [GHz]:", "R_power_start_SG": "Source power start:", "R_power_stop_SG": "Source power stop:", "R_power_step_size_SG": "Source power step size:" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { "R_freq_cavity_VNA": lambda text: se.le_or_dm_change(vip, tb, "R_freq_cavity_VNA", text), "R_freq_span_cavity_VNA": lambda text: se.le_or_dm_change(vip, tb, "R_freq_span_cavity_VNA", text ), "R_power_SG": lambda text: se.le_or_dm_change(vip, tb, "R_power_SG", text), "R_freq_start_SG": lambda text: se.le_or_dm_change(vip, tb, "R_freq_start_SG", text), "R_freq_stop_SG": lambda text: se.le_or_dm_change(vip, tb, "R_freq_stop_SG", text), "R_freq_step_size_SG": lambda text: se.le_or_dm_change(vip, tb, "R_freq_step_size_SG", text), "R_power_start_SG": lambda text: se.le_or_dm_change(vip, tb, "R_power_start_SG", text), "R_power_stop_SG": lambda text: se.le_or_dm_change(vip, tb, "R_power_stop_SG", text), "R_power_step_size_SG": lambda text: se.le_or_dm_change(vip, tb, "R_power_step_size_SG", text) } vip.content['events'][tb]['dm'] = { "Sweep_instr": lambda text: se.le_or_dm_change(vip, tb, "Sweep_instr", text), "VNA_instr": lambda text: se.le_or_dm_change(vip, tb, "VNA_instr", text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'Sweep_instr': session.instr_classification['SG'], 'VNA_instr': session.instr_classification['VNA'] } sw.__fill_widgets(vip, tb) ########## ########## hBoxs dm_ks = ['Sweep_instr', 'VNA_instr'] le_ks = [ "R_freq_cavity_VNA", "R_freq_span_cavity_VNA", "R_power_SG", "R_freq_start_SG", "R_freq_stop_SG", "R_freq_step_size_SG", "R_power_start_SG", "R_power_stop_SG", "R_power_step_size_SG" ] hBox_ks = dm_ks + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBox_ks} for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addStretch(1) for k in dm_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addStretch(1)
def _build_Sweep(vip): tb = 'Sweep' import interface.measurement as measurement vip.content['captions'][tb]['lb'] = {} vip.content['captions'][tb]['bn'] = { '_bn_do_sweep': cs.BLANK + "Do sweep" + cs.BLANK, '_bn_stop': cs.BLANK + "Stop" + cs.BLANK } vip.content['captions'][tb]['cb'] = { 'B_is_max_1': "Single sweep", 'B_is_max_2': "Double sweep", 'B_is_max_3': "Triple trouble", 'B_find_min': "Get minimum" } vip.content['events'][tb]['le'] = {} vip.content['events'][tb]['cb'] = { 'B_is_max_1': lambda state: se.cb_toggled(vip, tb, 'B_is_max_1'), 'B_is_max_2': lambda state: se.cb_toggled(vip, tb, 'B_is_max_2'), 'B_is_max_3': lambda state: se.cb_toggled(vip, tb, 'B_is_max_3'), 'B_find_min': lambda state: se.cb_toggled(vip, tb, 'B_find_min') } vip.content['events'][tb]['dm'] = { 'sweep_title_1': lambda text: se.le_or_dm_change(vip, tb, 'sweep_title_1', text), 'sweep_title_2': lambda text: se.le_or_dm_change(vip, tb, 'sweep_title_2', text), 'sweep_title_3': lambda text: se.le_or_dm_change(vip, tb, 'sweep_title_3', text) } vip.content['events'][tb]['bn'] = { '_bn_do_sweep': lambda: measurement.bn_do_sweep(vip), '_bn_stop': lambda: se.bn_block_measurement(vip) } vip.content['cb_vals'][tb] = { 'B_is_max_1': ('ON', 'OFF'), 'B_is_max_2': ('ON', 'OFF'), 'B_is_max_3': ('ON', 'OFF'), 'B_find_min': ('ON', 'OFF') } vip.content['dm_vals'][tb] = { 'sweep_title_1': session.Tree['_Sweeps']['Sweep_1'].keys(), 'sweep_title_2': session.Tree['_Sweeps']['Sweep_2'].keys(), 'sweep_title_3': session.Tree['_Sweeps']['Sweep_3'].keys() } sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE + 1) #### ---------- for k in ['_bn_do_sweep']: vip._qWidgets['bn'][tb][k].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 4)) vip._qWidgets['bn'][tb][k].adjustSize() for k in ['_bn_stop']: vip._qWidgets['bn'][tb][k].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 2)) vip._qWidgets['bn'][tb][k].adjustSize() for k in vip.content['captions'][tb]['cb'].keys(): vip._qWidgets['cb'][tb][k].setFixedWidth(200) vip._qWidgets['cb'][tb][k].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 1)) ########## ########## hBoxs _RANGE3 = ['1', '2', '3'] hBoxs = {k: QtGui.QHBoxLayout() for k in ['S', 'P'] + _RANGE3} hBoxs['_B_find_min'] = QtGui.QHBoxLayout() hBoxs['S'].addStretch(1) hBoxs['S'].addWidget(vip._qWidgets['bn'][tb]['_bn_do_sweep']) hBoxs['S'].addWidget(vip._qWidgets['bn'][tb]['_bn_stop']) hBoxs['S'].addStretch(1) hBoxs['_B_find_min'].addWidget(vip._qWidgets['cb'][tb]['B_find_min']) hBoxs['_B_find_min'].addStretch(1) hBoxs['P'].addStretch(1) hBoxs['P'].addWidget(vip._qWidgets['qw']['Meas_main']) ### hBoxs['P'].addStretch(1) for i in _RANGE3: hBoxs[i].addStretch(1) hBoxs[i].addWidget(vip._qWidgets['cb'][tb]['B_is_max_' + i]) hBoxs[i].addWidget(vip._qWidgets['dm'][tb]['sweep_title_' + i]) hBoxs[i].addStretch(1) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(hBoxs['S']) vBox.addLayout(hBoxs['_B_find_min']) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBoxs['P']) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBoxs['1']) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBoxs['2']) vBox.addLayout(hBoxs['3'])
def _build_I_Q_point(vip): from interface.session_widgets import sweep_ks tb = 'I Q point' vip.content['captions'][tb]['lb'] = { 'F_instr_name': "Measurement instrument:", 'F_frequency_shift': "Frequency shift:", '_lb_unit_freq': "[see sweep]" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = { 'B_lock_to_freq': "Lock center frequency to:" } vip.content['events'][tb]['le'] = { 'F_frequency_shift': lambda text: se.le_or_dm_change(vip, tb, 'F_frequency_shift', text) } vip.content['events'][tb]['dm'] = { 'F_instr_name': lambda text: se.le_or_dm_change(vip, tb, 'F_instr_name', text), 'F_lock_to_sweep': lambda text: se.le_or_dm_change(vip, tb, 'F_lock_to_sweep', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = { 'B_lock_to_freq': lambda state: se.cb_toggled(vip, tb, 'B_lock_to_freq') } vip.content['cb_vals'][tb] = {'B_lock_to_freq': ('ON', 'OFF')} vip.content['dm_vals'][tb] = { 'F_instr_name': session.instr_classification[ 'VNA'] # session.instr_classification['SG']+session.instr_classification['VNA']+ , 'F_lock_to_sweep': sweep_ks( 'Freq.' ) # session.instr_classification['SG']+session.instr_classification['VNA']+ } sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ########## ########## hBoxs dm_ks = ['F_instr_name'] le_ks = ['F_frequency_shift'] cb_ks = ['_F_lock_to_sweep'] ks = dm_ks + cb_ks + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in ks} for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) hBoxs['F_frequency_shift'].addWidget( vip._qWidgets['lb'][tb]['_lb_unit_freq']) for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) hBoxs['_F_lock_to_sweep'].addWidget( vip._qWidgets['cb'][tb]['B_lock_to_freq']) hBoxs['_F_lock_to_sweep'].addStretch(.1) hBoxs['_F_lock_to_sweep'].addWidget( vip._qWidgets['dm'][tb]['F_lock_to_sweep']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in ks: vBox.addLayout(hBoxs[k])
def _build_Time_trace(vip): tb = 'Time trace' vip.content['captions'][tb]['lb'] = { 'F_instr_name': "Instrument:" + 10 * cs.BLANK, 'R_time_stop': "Sweep time:" + 8 * cs.BLANK, 'N_sweep_points': "Sweep points:" + 6 * cs.BLANK, '_R_freq_center': "Center frequency:", 'R_freq_start': "Start frequency:" + 3 * cs.BLANK, 'R_freq_stop': "Stop frequency:" + 3 * cs.BLANK, '_R_freq_span': "Frequency span:" + 2 * cs.BLANK } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { 'R_freq_start': lambda text: se.le_pow_vs_freq_start(vip, tb, text), 'R_freq_stop': lambda text: se.le_pow_vs_freq_stop(vip, tb, text), '_R_freq_center': lambda text: se.le_pow_vs_freq_center(vip, tb, text), '_R_freq_span': lambda text: se.le_pow_vs_freq_span(vip, tb, text), 'N_sweep_points': lambda text: se.le_or_dm_change(vip, tb, 'N_sweep_points', text), 'R_time_stop': lambda text: se.le_or_dm_change(vip, tb, 'R_time_stop', text) } vip.content['events'][tb]['dm'] = { 'F_instr_name': lambda text: se.le_or_dm_change(vip, tb, 'F_instr_name', text), 'F_unit_time': lambda text: se.le_or_dm_change(vip, tb, 'F_unit_time', text), 'F_unit_freq': lambda text: se.le_or_dm_change(vip, tb, 'F_unit_freq', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'F_instr_name': session.instr_classification['SA'], 'F_unit_time': menus.TIME_UNITS, 'F_unit_freq': menus.FREQUENCY_UNITS } ### ---------- ### set up two extra line edits (with event functions that affect other line edits) R_freq_start = float(session.default[tb]['R_freq_start']) R_freq_stop = float(session.default[tb]['R_freq_stop']) vip.auxiliary_le[tb]['_R_freq_span'] = str((R_freq_start - R_freq_stop)) vip.auxiliary_le[tb]['_R_freq_center'] = str( (R_freq_start + R_freq_stop) / 2) sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ### to guarantee preference, manually re-write the following ### line edit values with the default session tmp = session.default[tb]['R_freq_start'] settings = {'R_freq_start': tmp, 'R_freq_stop': tmp} vip.set(tb, settings) ########## ########## hBoxs le_ks = ['N_sweep_points', 'R_time_stop', '_R_freq_center'] dm_ks = ['F_instr_name'] hBoxs_ks = dm_ks + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) hBoxs['R_time_stop'].addWidget(vip._qWidgets['dm'][tb]['F_unit_time']) hBoxs['_R_freq_center'].addWidget(vip._qWidgets['dm'][tb]['F_unit_freq']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(hBoxs['F_instr_name']) keysB = ['N_sweep_points', 'R_time_stop', '_R_freq_center'] for k in keysB: vBox.addLayout(hBoxs[k])
def _build_Dig_sample(vip): tb = 'Dig. sample' vip.content['captions'][tb]['lb'] = { 'F_instr_name': "Instrument:" + 10 * cs.BLANK, 'N_samples_factor': "Post trigger samples 64*:" + 1 * cs.BLANK, 'N_records_per_buffer': "Records per buffer:" + 8 * cs.BLANK, 'N_buffers_per_acquisition': "Buffers per acquisition:" + 8 * cs.BLANK, 'F_decimation': "Decimation:" + 1 * cs.BLANK, '_N_sweep_points': "size = init" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { 'N_samples_factor': lambda text: se.le_or_dm_change__N_sweep_points( vip, tb, 'N_samples_factor', text), 'N_records_per_buffer': lambda text: se.le_or_dm_change(vip, tb, 'N_records_per_buffer', text), 'N_buffers_per_acquisition': lambda text: se.le_or_dm_change(vip, tb, 'N_buffers_per_acquisition', text) } vip.content['events'][tb]['dm'] = { 'F_instr_name': lambda text: se.le_or_dm_change(vip, tb, 'F_instr_name', text), 'F_decimation': lambda text: se.le_or_dm_change__N_sweep_points( vip, tb, 'F_decimation', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'F_instr_name': session.instr_classification['Dig'], 'F_decimation': menus.ATS9870['F_decimation'].keys() } ### ---------- sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ########## ########## hBoxs le_ks = [ 'N_samples_factor', 'N_records_per_buffer', 'N_buffers_per_acquisition' ] dm_ks = ['F_instr_name', 'F_decimation'] hBoxs_ks = dm_ks + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) hBoxs['N_samples_factor'].addWidget( vip._qWidgets['lb'][tb]['_N_sweep_points']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(hBoxs['F_instr_name']) keysB = hBoxs_ks for k in keysB: vBox.addLayout(hBoxs[k])
def _build_DAC_VNA(vip): tb = 'Mixer-Dig VNA' vip.content['captions'][tb]['lb'] = { "start_freq": "Start frequency [Hz]:", "stop_freq": "Stop frequency [Hz]:", "IF_freq": "IF frequency [Hz]:", "points": "Points:", 'source_LO': "LO source:", 'source_rf': "rf source:" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { "start_freq": lambda text: se.le_or_dm_change(vip, tb, "start_freq", text), "stop_freq": lambda text: se.le_or_dm_change(vip, tb, "stop_freq", text), "points": lambda text: se.le_or_dm_change(vip, tb, "points", text), "IF_freq": lambda text: se.le_or_dm_change(vip, tb, "IF_freq", text) } vip.content['events'][tb]['dm'] = { 'source_LO': lambda text: se.le_or_dm_change(vip, tb, 'source_LO', text), 'source_rf': lambda text: se.le_or_dm_change(vip, tb, 'source_rf', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'F_unit_freq_source': menus.FREQUENCY_UNITS, 'source_LO': session.instr_classification['SG'], 'source_rf': session.instr_classification['SG'] } sw.__fill_widgets(vip, tb) ########## ########## hBoxs le_ks = ["start_freq", "stop_freq", "IF_freq", "points"] dm_ks = ['source_LO', 'source_rf'] hBox_ks = le_ks + dm_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBox_ks} for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addStretch(.1) for k in dm_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) vBox.addStretch(.1)
def _build_Results(vip): tb = 'Results' vip.content['captions'][tb]['lb'] = {'_lb_session_line' : "Results" ,'_lb_name_index' : "File name:" ,'_lb_result_blank' : "_" ,'_lb_cb_selection' : "Save:" } vip.content['captions'][tb]['bn'] = {'_bn_result_dir_browse' : "Browse" ,'_bn_save_switch' : "Save" ,'_bn_meas_dir_today' : "Today" } vip.content['captions'][tb]['cb'] = {'B_save_result' : "Data to file" ,'B_save_session' : "Session" ,'B_save_screenshot' : "Screenshot" } vip.content['events'][tb]['le'] = {'DIR_PATH_results' : lambda text: se.le_or_dm_change(vip, tb,'DIR_PATH_results', text) ,'TITLE_result' : lambda text: se.le_or_dm_change(vip, tb,'TITLE_result' , text) ,'N_result_index' : lambda text: se.le_or_dm_change(vip, tb,'N_result_index', text) } vip.content['events'][tb]['dm'] = {} import interface.auxiliary_functions as auxi vip.content['events'][tb]['bn'] = {'_bn_result_dir_browse' : lambda: se.bn_browse_for(vip, 'DIR_PATH_results') ,'_bn_save_switch' : lambda: se.bn_save_switch(vip, auxi.textfile_formatting) ,'_bn_meas_dir_today' : lambda: se.bn_meas_dir_today(vip) } vip.content['events'][tb]['cb'] = {'B_save_result' : lambda state: se.cb_toggled(vip, tb,'B_save_result') ,'B_save_session' : lambda state: se.cb_toggled(vip, tb,'B_save_session') ,'B_save_screenshot' : lambda state: se.cb_toggled(vip, tb,'B_save_screenshot') } vip.content['cb_vals'][tb] = {'B_save_result' : ('ON', 'OFF') ,'B_save_session' : ('ON', 'OFF') ,'B_save_screenshot' : ('ON', 'OFF') } sw.__fill_widgets(vip, tb) ### ---------- vip._qWidgets['lb'][tb]['_lb_session_line'].setAlignment(QtCore.Qt.AlignCenter) vip._qWidgets['le'][tb]['N_result_index'].setFixedWidth(50) ########## ########## hBoxs hBox_ks = ['_cbs', '_browse', '_save', '_dir', '_file_name'] hBoxs = {k : QtGui.QHBoxLayout() for k in hBox_ks} hBoxs['_cbs'].addWidget(vip._qWidgets['lb'][tb]['_lb_cb_selection']) hBoxs['_cbs'].addLayout(vip._blanks.next()) hBoxs['_cbs'].addWidget(vip._qWidgets['cb'][tb]['B_save_result']) hBoxs['_cbs'].addLayout(vip._blanks.next()) hBoxs['_cbs'].addWidget(vip._qWidgets['cb'][tb]['B_save_session']) hBoxs['_cbs'].addLayout(vip._blanks.next()) hBoxs['_cbs'].addWidget(vip._qWidgets['cb'][tb]['B_save_screenshot']) hBoxs['_browse'].addWidget(vip._qWidgets['lb'][tb]['_lb_session_line']) hBoxs['_browse'].addWidget(vip._qWidgets['bn'][tb]['_bn_result_dir_browse']) hBoxs['_save'].addWidget(vip._qWidgets['bn'][tb]['_bn_save_switch']) hBoxs['_save'].addWidget(vip._qWidgets['bn'][tb]['_bn_meas_dir_today']) hBoxs['_dir'].addWidget(vip._qWidgets['le'][tb]['DIR_PATH_results']) hBoxs['_file_name'].addWidget(vip._qWidgets['lb'][tb]['_lb_name_index']) hBoxs['_file_name'].addStretch(.1) hBoxs['_file_name'].addWidget(vip._qWidgets['le'][tb]['TITLE_result']) hBoxs['_file_name'].addWidget(vip._qWidgets['lb'][tb]['_lb_result_blank']) hBoxs['_file_name'].addWidget(vip._qWidgets['le'][tb]['N_result_index']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in hBox_ks: vBox.addLayout(hBoxs[k])
def _build_File_sweep(vip, tb): vip.content['captions'][tb]['lb'] = { 'DIR__PATH': "Dir. path:" + 3 * cs.BLANK, 'FILE__NAME_0': 4 * cs.BLANK + "File name:", 'CHANNEL__SWEEP_0': 'Channel' + 4 * cs.BLANK, 'FILE__NAME_1': 4 * cs.BLANK + "File name:", 'CHANNEL__SWEEP_1': 'Channel' + 4 * cs.BLANK } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { 'DIR__PATH': lambda text: se.le_or_dm_change(vip, tb, 'DIR__PATH', text), 'FILE__NAME_0': lambda text: se.le_or_dm_change(vip, tb, 'FILE__NAME_0', text), 'FILE__NAME_1': lambda text: se.le_or_dm_change(vip, tb, 'FILE__NAME_1', text) } vip.content['events'][tb]['dm'] = { 'CHANNEL__SWEEP_0': lambda text: se.le_or_dm_change(vip, tb, 'CHANNEL__SWEEP_0', text), 'CHANNEL__SWEEP_1': lambda text: se.le_or_dm_change(vip, tb, 'CHANNEL__SWEEP_1', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'CHANNEL__SWEEP_0': ['0', '1', '2', '3'], 'CHANNEL__SWEEP_1': ['0', '1', '2', '3'] } sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ### ---------- ########## ########## hBoxs le_ks = [ 'DIR__PATH', 'CHANNEL__SWEEP_0', 'FILE__NAME_0', 'CHANNEL__SWEEP_1', 'FILE__NAME_1' ] hBoxs_ks = le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} hBoxs['DIR__PATH'].addWidget(vip._qWidgets['lb'][tb]['DIR__PATH']) hBoxs['DIR__PATH'].addWidget(vip._qWidgets['le'][tb]['DIR__PATH']) for k in range(2): hBoxs['CHANNEL__SWEEP_' + str(k)].addWidget( vip._qWidgets['lb'][tb]['CHANNEL__SWEEP_' + str(k)]) hBoxs['FILE__NAME_' + str(k)].addWidget( vip._qWidgets['dm'][tb]['CHANNEL__SWEEP_' + str(k)]) hBoxs['FILE__NAME_' + str(k)].addWidget( vip._qWidgets['lb'][tb]['FILE__NAME_' + str(k)]) hBoxs['FILE__NAME_' + str(k)].addWidget( vip._qWidgets['le'][tb]['FILE__NAME_' + str(k)]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in le_ks: vBox.addLayout(hBoxs[k])
def _build_AWG_sweep(vip, tb): ### the values associated with the keywords with __ are not writen to the instrument tabs ### (only sweeped over in the measurement) ### Note: At the moment, H3344 is the only AWG and it has 4 channels (indexed by 0,1,2,3), ### and so is the range implemented here. In case there comes a AWG with more channels, ### a few things must be adjusted here. ### Also, if there are different AWGs with different numbers of channels, that might make things unsafe. from dictionaries.hardware import range_H3344_channels as channels_list sweep_quadruple = [ 'R__start', 'R__stop', 'N__sweep_points', 'R_AUXI_volt_step_size' ] vip.content['captions'][tb]['lb'] = { 'R__start': "Start voltage:" + 3 * cs.BLANK, 'R__stop': "Stop voltage:" + 4 * cs.BLANK, 'N__sweep_points': "Sweep points:" + 3 * cs.BLANK, '_lb_volt_step_size': "Step size:" + 12 * cs.BLANK, 'R_AUXI_volt_step_size': "init", 'USE_channel_': "Apply to", 'F__sweep_type': "Sweep" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = { 'USE_channel_' + ch: ch for ch in channels_list } vip.content['events'][tb]['le'] = { 'R__start': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__start', text), 'R__stop': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__stop', text), 'N__sweep_points': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'N__sweep_points', text) } vip.content['events'][tb]['dm'] = { 'F__sweep_type': lambda text: se.le_or_dm_change(vip, tb, 'F__sweep_type', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = { 'USE_channel_0': lambda state: se.cb_toggled(vip, tb, 'USE_channel_0'), 'USE_channel_1': lambda state: se.cb_toggled(vip, tb, 'USE_channel_1'), 'USE_channel_2': lambda state: se.cb_toggled(vip, tb, 'USE_channel_2'), 'USE_channel_3': lambda state: se.cb_toggled(vip, tb, 'USE_channel_3') } ### I'm not sure if the following shorter function assignment might not make problems: #vip.content['events'][tb]['cb'] = {'USE_channel_'+ch : lambda state: se.cb_toggled(vip, tb, 'USE_channel_'+ch) for ch in channels_list} vip.content['cb_vals'][tb] = { 'USE_channel_' + ch: ('USE', 'DONT_USE') for ch in channels_list } vip.content['dm_vals'][tb] = {'F__sweep_type': ['Amplitude', 'Offset']} sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ### ---------- se._fun_change_step_size_value_label(vip, tb, sweep_quadruple) vip._qWidgets['lb'][tb][sweep_quadruple[3]].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE)) ########## ########## hBoxs le_ks = ['R__start', 'R__stop', 'N__sweep_points'] hBoxs_ks = ['USE_channel_'] + ['F__sweep_type'] + ['__lb_volt_step_size' ] + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} hBoxs['USE_channel_'].addWidget(vip._qWidgets['lb'][tb]['USE_channel_']) for ch in range(4): hBoxs['USE_channel_'].addWidget( vip._qWidgets['cb'][tb]['USE_channel_' + str(ch)]) hBoxs['F__sweep_type'].addWidget(vip._qWidgets['lb'][tb]['F__sweep_type']) hBoxs['F__sweep_type'].addWidget(vip._qWidgets['dm'][tb]['F__sweep_type']) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) hBoxs['__lb_volt_step_size'].addWidget( vip._qWidgets['lb'][tb]['_lb_volt_step_size']) hBoxs['__lb_volt_step_size'].addWidget( vip._qWidgets['lb'][tb]['R_AUXI_volt_step_size']) hBoxs['__lb_volt_step_size'].addStretch(.1) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(hBoxs['USE_channel_']) vBox.addLayout(hBoxs['F__sweep_type']) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(hBoxs['__lb_volt_step_size']) vBox.addLayout(hBoxs['F__sweep_type'])
def _build_Voltage_sweep(vip, tb): ### the values associated with the keywords with __ are not writen to the instrument tabs ### (only sweeped over in the measurement) sweep_quadruple = [ 'R__start', 'R__stop', 'N__sweep_points', 'R_AUXI_volt_step_size' ] vip.content['captions'][tb]['lb'] = { 'R__start': "Start voltage:" + 3 * cs.BLANK, 'F_axis_mode': "Axis mode:" + 2 * cs.BLANK, 'R__stop': "Stop voltage:" + 4 * cs.BLANK, 'N__sweep_points': "Sweep points:" + 3 * cs.BLANK, '_lb_volt_step_size': "Step size:" + 12 * cs.BLANK, 'R_AUXI_volt_step_size': "init" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { 'R__start': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__start', text), 'R__stop': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__stop', text), 'N__sweep_points': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'N__sweep_points', text) } vip.content['events'][tb]['dm'] = { 'F_axis_mode': lambda text: se.le_or_dm_change(vip, tb, 'F_axis_mode', text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = {'F_axis_mode': menus.AXIS_MODES} sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ### ---------- se._fun_change_step_size_value_label(vip, tb, sweep_quadruple) vip._qWidgets['lb'][tb][sweep_quadruple[3]].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE)) ########## ########## hBoxs le_ks = ['R__start', 'R__stop', 'N__sweep_points'] dm_ks = ['F_axis_mode'] hBoxs_ks = dm_ks + ['__lb_volt_step_size'] + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) hBoxs['__lb_volt_step_size'].addWidget( vip._qWidgets['lb'][tb]['_lb_volt_step_size']) hBoxs['__lb_volt_step_size'].addWidget( vip._qWidgets['lb'][tb]['R_AUXI_volt_step_size']) hBoxs['__lb_volt_step_size'].addStretch(.1) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in dm_ks: vBox.addLayout(hBoxs[k]) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(hBoxs['__lb_volt_step_size'])
def _build_Power_sweep(vip, tb): ### the values associated with the keywords with __ are not writen to the ### instrument tabs (only sweeped over in the measurement) sweep_quadruple = [ 'R__start', 'R__stop', 'N__sweep_points', 'R_AUXI_power_step_size' ] vip.content['captions'][tb]['lb'] = { 'F_instr_name': "Instrument:" + 1 * cs.BLANK, 'F_axis_mode': "Axis mode:" + 2 * cs.BLANK, 'R__start': "Start power:" + 3 * cs.BLANK, 'R__stop': "Stop power:" + 3 * cs.BLANK, 'N__sweep_points': "Sweep points:", '_lb_power_step_size': "Step size:" + 7 * cs.BLANK, 'R_AUXI_power_step_size': "", 'F_AUXI_power_star_unit': cs.BLANK + "dBm" + 3 * cs.BLANK, 'F_AUXI_power_stop_unit': cs.BLANK + "dBm" + 3 * cs.BLANK, 'F_AUXI_power_step_size_unit': cs.BLANK + "dBm" + 3 * cs.BLANK } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { 'R__start': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__start', text), 'R__stop': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'R__stop', text), 'N__sweep_points': lambda text: se.le_sweep_quadruple(vip, tb, sweep_quadruple, 'N__sweep_points', text) } vip.content['events'][tb]['dm'] = { 'F_instr_name': lambda text: se.le_or_dm_change(vip, tb, 'F_instr_name', text), 'F_axis_mode': lambda text: se.le_or_dm_change(vip, tb, 'F_axis_mode', text) } vip.content['events'][tb]['cb'] = {} vip.content['events'][tb]['bn'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { 'F_instr_name': session.instr_classification['VNA'] + session.instr_classification['SG'], 'F_axis_mode': menus.AXIS_MODES } sw.__fill_widgets(vip, tb, fontsize=cs.FONTSIZE - 1) ### ---------- vip._qWidgets['lb'][tb][sweep_quadruple[3]].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE)) se._fun_change_step_size_value_label(vip, tb, sweep_quadruple) ########## ########## hBoxs le_ks = ['R__start', 'R__stop', 'N__sweep_points'] dm_ks = ['F_instr_name', 'F_axis_mode'] hBoxs_ks = dm_ks + ['__lb_power_step_size'] + le_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBoxs_ks} for k in le_ks: for w in ['lb', 'le']: hBoxs[k].addWidget(vip._qWidgets[w][tb][k]) for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) hBoxs['R__start'].addWidget( vip._qWidgets['lb'][tb]['F_AUXI_power_star_unit']) hBoxs['R__stop'].addWidget( vip._qWidgets['lb'][tb]['F_AUXI_power_stop_unit']) hBoxs['__lb_power_step_size'].addWidget( vip._qWidgets['lb'][tb]['_lb_power_step_size']) hBoxs['__lb_power_step_size'].addWidget( vip._qWidgets['lb'][tb]['R_AUXI_power_step_size']) hBoxs['__lb_power_step_size'].addStretch(1) hBoxs['__lb_power_step_size'].addWidget( vip._qWidgets['lb'][tb]['F_AUXI_power_step_size_unit']) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in dm_ks: vBox.addLayout(hBoxs[k]) for key in le_ks: vBox.addLayout(hBoxs[key]) vBox.addLayout(hBoxs['__lb_power_step_size'])
def _build_OptionsWindow(vip): tb = 'Options' vip.content['captions'][tb]['lb'] = {"_lb_plot_section" : "Axes relative to figure:" ,"R_x_plot_position" : "x-position:" ,"R_y_plot_position" : "y-position:" ,"R_x_plot_size" : "x-size:" ,"R_y_plot_size" : "y-size:" ,"R_x_plot_label_rotation" : "x-label rotation:" ,"R_axes_font_size" : "Axes font size:" ,"_lb_FILE_PATH_notes" : "Notes file path:" } vip.content['captions'][tb]['bn'] = {'_bn_default' : " Reset from init file " } vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = {"R_x_plot_position" : lambda text: se.le_plot_options_update(vip, "R_x_plot_position" , text) ,"R_y_plot_position" : lambda text: se.le_plot_options_update(vip, "R_y_plot_position" , text) ,"R_x_plot_size" : lambda text: se.le_plot_options_update(vip, "R_x_plot_size" , text) ,"R_y_plot_size" : lambda text: se.le_plot_options_update(vip, "R_y_plot_size" , text) ,"R_x_plot_label_rotation" : lambda text: se.le_plot_options_update(vip, "R_x_plot_label_rotation" , text) ,"R_axes_font_size" : lambda text: se.le_plot_options_update(vip, "R_axes_font_size" , text) ,"FILE_PATH_notes" : lambda text: se.le_or_dm_change(vip, tb, "FILE_PATH_notes" , text) } vip.content['events'][tb]['dm'] = {} vip.content['events'][tb]['bn'] = {'_bn_default' : lambda: se.bn_back_to_default_options(vip)} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = {} sw.__fill_widgets(vip, tb) ########## ########## hBoxs le_ks = ["R_x_plot_label_rotation" ,"R_axes_font_size" ,"R_x_plot_position" ,"R_y_plot_position" ,"R_x_plot_size" ,"R_y_plot_size" ] hBox_ks = ["_lb_plot_section"]+le_ks+['_bn_default']+['_lb_FILE_PATH_notes', 'FILE_PATH_notes'] hBoxs = {k : QtGui.QHBoxLayout() for k in hBox_ks} hBoxs['_lb_plot_section'].addWidget(vip._qWidgets['lb'][tb]['_lb_plot_section']) for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) hBoxs['_bn_default'].addStretch(.1) hBoxs['_bn_default'].addWidget(vip._qWidgets['bn'][tb]['_bn_default']) hBoxs["_lb_FILE_PATH_notes"].addWidget(vip._qWidgets['lb'][tb]["_lb_FILE_PATH_notes"]) hBoxs['_lb_FILE_PATH_notes'].addStretch(.1) hBoxs["FILE_PATH_notes"].addWidget(vip._qWidgets['le'][tb]["FILE_PATH_notes"]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for k in hBox_ks: vBox.addLayout(hBoxs[k]) if (k == '_lb_plot_section') or (k == "R_axes_font_size"): vBox.addLayout(vip._blanks.next()) elif (k == "_bn_default"): vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next()) vBox.addLayout(vip._blanks.next())
def _build_Mixer_calib(vip): tb = 'Mixer calib.' vip.content['captions'][tb]['lb'] = { "center_freq": "Center frequency:", "int_freq": "Int. frequency:", 'R_amplitude': "Amplitude:", "LO_source": "LO source", "spec_source": "spec source" } vip.content['captions'][tb]['bn'] = {} vip.content['captions'][tb]['cb'] = {} vip.content['events'][tb]['le'] = { "center_freq": lambda text: se.le_or_dm_change(vip, tb, "center_freq", text), "int_freq": lambda text: se.le_or_dm_change(vip, tb, "int_freq", text), "R_amplitude": lambda text: se.le_or_dm_change(vip, tb, "R_amplitude", text) } vip.content['events'][tb]['dm'] = { "LO_source": lambda text: se.le_or_dm_change(vip, tb, "LO_source", text), "spec_source": lambda text: se.le_or_dm_change(vip, tb, "spec_source", text) } vip.content['events'][tb]['bn'] = {} vip.content['events'][tb]['cb'] = {} vip.content['cb_vals'][tb] = {} vip.content['dm_vals'][tb] = { "LO_source": session.instr_classification['SG'], "spec_source": session.instr_classification['SG'] } sw.__fill_widgets(vip, tb) ########## ########## hBoxs le_ks = ["center_freq", "int_freq", 'R_amplitude'] dm_ks = ['LO_source', 'spec_source'] hBox_ks = le_ks + dm_ks hBoxs = {k: QtGui.QHBoxLayout() for k in hBox_ks} for k in le_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['le'][tb][k]) for k in dm_ks: hBoxs[k].addWidget(vip._qWidgets['lb'][tb][k]) hBoxs[k].addStretch(.1) hBoxs[k].addWidget(vip._qWidgets['dm'][tb][k]) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) vBox.addLayout(vip._blanks.next()) for k in le_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next()) for k in dm_ks: vBox.addLayout(hBoxs[k]) vBox.addLayout(vip._blanks.next())
def _build_Script(vip): tb = 'Script' import dictionaries.script_dict as script_dict vip.content['captions'][tb]['lb'] = {} vip.content['captions'][tb]['bn'] = { '_bn_run_script': " Run script 3 now " } vip.content['captions'][tb]['cb'] = { 'B_during_sweep_1': "Add to sweep 1", 'B_during_sweep_2': "Add to sweep 2", 'B_during_sweep_3': "Add to sweep 3" } vip.content['events'][tb]['le'] = {} vip.content['events'][tb]['cb'] = { 'B_during_sweep_1': lambda state: se.cb_toggled(vip, tb, 'B_during_sweep_1'), 'B_during_sweep_2': lambda state: se.cb_toggled(vip, tb, 'B_during_sweep_2'), 'B_during_sweep_3': lambda state: se.cb_toggled(vip, tb, 'B_during_sweep_3') } vip.content['events'][tb]['dm'] = { 'script_title_1': lambda text: se.le_or_dm_change(vip, tb, 'script_title_1', text), 'script_title_2': lambda text: se.le_or_dm_change(vip, tb, 'script_title_2', text), 'script_title_3': lambda text: se.le_or_dm_change(vip, tb, 'script_title_3', text) } vip.content['events'][tb]['bn'] = { '_bn_run_script': lambda: se.bn_run_script(vip, '3') } vip.content['cb_vals'][tb] = { 'B_during_sweep_1': ('ON', 'OFF'), 'B_during_sweep_2': ('ON', 'OFF'), 'B_during_sweep_3': ('ON', 'OFF') } vip.content['dm_vals'][tb] = { 'script_title_1': script_dict.script_dictionary.keys(), 'script_title_2': script_dict.script_dictionary.keys(), 'script_title_3': script_dict.script_dictionary.keys() } sw.__fill_widgets(vip, tb) #### ---------- for k in ['_bn_run_script']: vip._qWidgets['bn'][tb][k].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 2)) vip._qWidgets['bn'][tb][k].adjustSize() for k in vip.content['captions'][tb]['cb'].keys(): vip._qWidgets['cb'][tb][k].setFont( QtGui.QFont(cs.FONT, cs.FONTSIZE + 1)) ########## ########## hBoxs _string_range_3 = [str(i) for i in range(1, 4)] hBox = {i: QtGui.QHBoxLayout() for i in _string_range_3 + ["__run"]} for i in _string_range_3: hBox[i].addWidget(vip._qWidgets['dm'][tb]['script_title_' + i]) hBox[i].addWidget(vip._qWidgets['cb'][tb]['B_during_sweep_' + i]) hBox["__run"].addStretch(1) hBox["__run"].addWidget(vip._qWidgets['bn'][tb]['_bn_run_script']) hBox["__run"].addStretch(1) ########## ########## vBox vBox = QtGui.QVBoxLayout(vip._qWidgets['qw'][tb]) for i in _string_range_3: vBox.addLayout(hBox[i]) vBox.addLayout(vip._blanks.next()) vBox.addLayout(hBox['__run']) vBox.addLayout(vip._blanks.next())