def callResetSettings(self): if ConfirmDialog.confirmed(parent=self, message="Confirm Reset of the Fields?"): self.resetSettings() while self.tab_crystals.count() > 0: self.tab_crystals.removeTab(0) tab_first_crystal = oasysgui.widgetBox(self.tab_crystals, addToLayout=0, margin=4) tab_second_crystal = oasysgui.widgetBox(self.tab_crystals, addToLayout=0, margin=4) self.crystal_1_box = CrystalBox( dcm=self, parent=tab_first_crystal, has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0]) self.crystal_2_box = CrystalBox( dcm=self, parent=tab_second_crystal, has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1]) self.tab_crystals.addTab(tab_first_crystal, "First Crystal") self.tab_crystals.addTab(tab_second_crystal, "Second Crystal") self.setupUI()
def __init__(self): super().__init__() self.runaction = widget.OWAction("Write Shadow File", self) self.runaction.triggered.connect(self.write_file) self.addAction(self.runaction) self.setFixedWidth(590) self.setFixedHeight(190) left_box_1 = oasysgui.widgetBox(self.controlArea, "Shadow File Selection", addSpace=True, orientation="vertical", width=570, height=110) gui.checkBox(left_box_1, self, 'is_automatic_run', 'Automatic Execution') gui.separator(left_box_1, height=10) figure_box = oasysgui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", width=550, height=35) self.le_beam_file_name = oasysgui.lineEdit(figure_box, self, "beam_file_name", "Shadow File Name", labelWidth=120, valueType=str, orientation="horizontal") self.le_beam_file_name.setFixedWidth(330) gui.button(figure_box, self, "...", callback=self.selectFile) button = gui.button(self.controlArea, self, "Write Shadow File", callback=self.write_file) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box) self.main_tabs = oasysgui.tabWidget(self.mainArea) plot_tab = oasysgui.createTabPage(self.main_tabs, "Plots") out_tab = oasysgui.createTabPage(self.main_tabs, "Output") view_box = oasysgui.widgetBox(plot_tab, "Plotting Style", addSpace=False, orientation="horizontal") view_box_1 = oasysgui.widgetBox(view_box, "", addSpace=False, orientation="vertical", width=350) self.view_type_combo = gui.comboBox(view_box_1, self, "view_type", label="Select level of Plotting", labelWidth=220, items=["Detailed Plot", "Preview", "None"], callback=self.set_PlotQuality, sendSelectedValue=False, orientation="horizontal") self.tab = [] self.tabs = oasysgui.tabWidget(plot_tab) self.initializeTabs() self.enableFootprint(False) self.shadow_output = oasysgui.textArea(height=580, width=800) out_box = gui.widgetBox(out_tab, "System Output", addSpace=True, orientation="horizontal") out_box.layout().addWidget(self.shadow_output)
def createTabThickness(self): tab_thick = oasysgui.createTabPage(self.tabs_setting, "Thickness Error") input_box = oasysgui.widgetBox(tab_thick, "Thickness Error Files", addSpace=True, orientation="vertical", height=390, width=self.CONTROL_AREA_WIDTH-20) gui.comboBox(input_box, self, "crl_material_data", label="Material Properties from", labelWidth=180, items=["Chemical Formula", "Absorption Parameters"], callback=self.set_CrlMaterialData, sendSelectedValue=False, orientation="horizontal") self.input_box_1 = oasysgui.widgetBox(input_box, "", addSpace=False, orientation="vertical", width=self.CONTROL_AREA_WIDTH-40) self.input_box_2 = oasysgui.widgetBox(input_box, "", addSpace=False, orientation="vertical", width=self.CONTROL_AREA_WIDTH-40) oasysgui.lineEdit(self.input_box_1, self, "crl_material", "Chemical Formula", labelWidth=260, valueType=str, orientation="horizontal") oasysgui.lineEdit(self.input_box_2, self, "crl_delta", "Refractive Index (\u03b4)", labelWidth=260, valueType=float, orientation="horizontal") self.set_CrlMaterialData() self.files_area = oasysgui.textArea(height=265) input_box.layout().addWidget(self.files_area) self.refresh_files_text_area() oasysgui.lineEdit(input_box, self, "crl_scaling_factor", "Thickness Error Scaling Factor", labelWidth=260, valueType=float, orientation="horizontal")
def __init__(self): super().__init__() self.runaction = widget.OWAction("Write Shadow File", self) self.runaction.triggered.connect(self.write_file) self.addAction(self.runaction) self.setFixedWidth(590) self.setFixedHeight(180) left_box_1 = oasysgui.widgetBox(self.controlArea, "Shadow File Selection", addSpace=True, orientation="vertical", width=570, height=100) gui.checkBox(left_box_1, self, 'is_automatic_run', 'Automatic Execution') gui.separator(left_box_1, height=10) figure_box = oasysgui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", width=550, height=50) self.le_beam_file_name = oasysgui.lineEdit(figure_box, self, "beam_file_name", "Shadow File Name", labelWidth=120, valueType=str, orientation="horizontal") self.le_beam_file_name.setFixedWidth(330) gui.button(figure_box, self, "...", callback=self.selectFile) gui.separator(left_box_1, height=10) button = gui.button(self.controlArea, self, "Write Shadow File", callback=self.write_file) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self): self.setFixedWidth(590) self.setFixedHeight(390) left_box_1 = oasysgui.widgetBox(self.controlArea, "Ansys Surface", addSpace=True, orientation="vertical") select_file_box = oasysgui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", height=50) self.le_surface_file_name = oasysgui.lineEdit(select_file_box, self, "surface_file_name", "Surface File Name", labelWidth=150, valueType=str, orientation="horizontal") self.le_surface_file_name.setFixedWidth(300) pushButton = gui.button(select_file_box, self, "...") pushButton.clicked.connect(self.selectSurfaceFile) oasysgui.lineEdit(left_box_1, self, "x_min", "X Min", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "x_max", "X Max", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "y_min", "Y Min", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "y_max", "Y Max", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(left_box_1) oasysgui.lineEdit(left_box_1, self, "number_of_x_cells", "Number of X cells", labelWidth=350, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "number_of_y_cells", "Number of Y cells", labelWidth=350, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "n_sigma_x", "N Sigma X", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "n_sigma_y", "N Sigma Y", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(self.controlArea) button = gui.button(self.controlArea, self, "Convert To Shadow", callback=self.convertToShadow) button.setFixedHeight(45) gui.rubber(self.controlArea)
def build_gui(self): main_box = oasysgui.widgetBox(self.controlArea, "Wofry Wavefront Parameters", orientation="vertical", width=self.CONTROL_AREA_WIDTH-5, height=300) oasysgui.lineEdit(main_box, self, "source_lambda", "Wavelength [nm]", labelWidth=260, valueType=float, orientation="horizontal") gui.separator(main_box, height=5) gui.comboBox(main_box, self, "source_position", label="Source Position", items=["User Defined", "Put Source at Mirror Focus"], labelWidth=260, callback=self.set_SourcePosition, sendSelectedValue=False, orientation="horizontal") self.source_position_box_1 = oasysgui.widgetBox(main_box, "", addSpace=False, orientation="vertical", height=70) self.source_position_box_2 = oasysgui.widgetBox(main_box, "", addSpace=False, orientation="vertical", height=70) self.le_z_origin = oasysgui.lineEdit(self.source_position_box_1, self, "z_origin", "Z Origin", labelWidth=260, valueType=float, orientation="horizontal") self.le_x_origin = oasysgui.lineEdit(self.source_position_box_1, self, "x_origin", "X Origin", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.source_position_box_1, self, "theta", "Theta [deg]", labelWidth=260, valueType=float, orientation="horizontal") self.le_longitudinal_correction = oasysgui.lineEdit(self.source_position_box_2, self, "longitudinal_correction", "Longitudinal correction", labelWidth=260, valueType=float, orientation="horizontal") self.le_transverse_correction = oasysgui.lineEdit(self.source_position_box_2, self, "transverse_correction", "Transverse correction", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.source_position_box_2, self, "delta_theta", "\u0394" + "Theta [deg]", labelWidth=260, valueType=float, orientation="horizontal") self.set_SourcePosition() gui.separator(main_box, height=5) gui.comboBox(main_box, self, "reset_phase", label="Reset Phase", items=["No", "Yes"], labelWidth=300, sendSelectedValue=False, orientation="horizontal") oasysgui.lineEdit(main_box, self, "normalization_factor", "Normalization Factor", labelWidth=260, valueType=float, orientation="horizontal")
def __init__(self): super().__init__() tab_spe = oasysgui.createTabPage(self.tabs_setting, "Spectroscopy Settings") spectro_box = oasysgui.widgetBox(tab_spe, "Spectroscopy settings", addSpace=True, orientation="vertical", height=100) gui.comboBox(spectro_box, self, "spectro_variable", label="Spectroscopy Variable", labelWidth=300, items=["Energy", "Wavelength"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(spectro_box, self, "spectro_number_of_bins", label="Number of Bins", labelWidth=350, items=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"], sendSelectedValue=False, orientation="horizontal") spectro_plot_tab = oasysgui.widgetBox(self.main_tabs, addToLayout=0, margin=4) self.main_tabs.insertTab(1, spectro_plot_tab, "Spectroscopy Plots") self.spectro_image_box = gui.widgetBox(spectro_plot_tab, "Spectroscopy Plot Result", addSpace=True, orientation="vertical") self.spectro_image_box.setFixedHeight(self.IMAGE_HEIGHT) self.spectro_image_box.setFixedWidth(self.IMAGE_WIDTH) self.color_map = plt.cm.get_cmap('Blues')
def __init__(self): super().__init__() button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Retrace", callback=self.retrace) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(button.font()) font.setItalic(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button.setFixedWidth(150) gui.separator(self.controlArea) box = oasysgui.widgetBox(self.controlArea, "", orientation="vertical", width=self.CONTROL_AREA_WIDTH-5, height=550) main_box = oasysgui.widgetBox(box, "Shadow Beam Retrace", orientation="vertical", width=self.CONTROL_AREA_WIDTH-5, height=70) self.le_retrace_distance = oasysgui.lineEdit(main_box, self, "retrace_distance", "Retrace to ", labelWidth=280, valueType=float, orientation="horizontal")
def setAdvancedTab(self): ################# propagation_box = oasysgui.widgetBox(self.tab_adv, "Propagation Parameters", addSpace=True, orientation="vertical", height=240) gui.comboBox(propagation_box, self, "dist_to_img_calc", label="Distance to image", labelWidth=150, items=["Use O.E. Image Plane Distance", "Specify Value"], callback=self.set_DistanceToImageCalc, sendSelectedValue=False, orientation="horizontal") self.dist = oasysgui.lineEdit(propagation_box, self, "distance", "Distance to Image value", labelWidth=260, valueType=float, orientation="horizontal") self.nf = gui.comboBox(propagation_box, self, "nfc", label="Near Field Calculation", labelWidth=310, items=["No", "Yes"], callback=self.set_NF, sendSelectedValue=False, orientation="horizontal") self.focal_length_calc = gui.comboBox(propagation_box, self, "focallength_calc", label="Focal Length", labelWidth=180, items=["Use O.E. Focal Distance", "Specify Value"], callback=self.set_FocalLengthCalc, sendSelectedValue=False, orientation="horizontal") self.focal_length = oasysgui.lineEdit(propagation_box, self, "focallength_value", "Focal Length value", labelWidth=200, valueType=float, orientation="horizontal") congruence_box = oasysgui.widgetBox(self.tab_adv, "Calculation Congruence Parameters", addSpace=True, orientation="vertical", height=200) gui.comboBox(congruence_box, self, "automatic", label="Analize geometry to avoid unuseful calculations", labelWidth=310, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(congruence_box, self, "send_original_beam", label="Send Original Beam in case of failure", labelWidth=310, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal")
def __init__(self, graphical_options=ow_optical_element.GraphicalOptions()): graphical_options.is_ellipsoidal=True super().__init__(graphical_options) gui.comboBox(self.orientation_box, self, "add_acceptance_slits", label="Add Acceptance Slit", labelWidth=390, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.set_AddAcceptanceSlits) self.orientation_box_1 = oasysgui.widgetBox(self.orientation_box, "", addSpace=False, orientation="vertical", height=140) self.cb_acceptance_slits_mode = gui.comboBox(self.orientation_box_1, self, "acceptance_slits_mode", label="Mode", labelWidth=260, items=["Automatic", "Manual"], sendSelectedValue=False, orientation="horizontal", callback=self.set_AcceptanceSlitsMode) self.le_auto_slit_width_xaxis = oasysgui.lineEdit(self.orientation_box_1, self, "auto_slit_width_xaxis", "Slit width/x-axis", labelWidth=260, valueType=float, orientation="horizontal") self.le_auto_slit_height_zaxis = oasysgui.lineEdit(self.orientation_box_1, self, "auto_slit_height_zaxis", "Slit height/z-axis", labelWidth=260, valueType=float, orientation="horizontal") self.le_auto_slit_center_xaxis = oasysgui.lineEdit(self.orientation_box_1, self, "auto_slit_center_xaxis", "Slit center/x-axis", labelWidth=260, valueType=float, orientation="horizontal") self.le_auto_slit_center_zaxis = oasysgui.lineEdit(self.orientation_box_1, self, "auto_slit_center_zaxis", "Slit center/z-axis", labelWidth=260, valueType=float, orientation="horizontal") self.orientation_box_2 = oasysgui.widgetBox(self.orientation_box, "", addSpace=False, orientation="vertical", height=140) self.set_AddAcceptanceSlits() self.le_dim_x_plus.textChanged.connect(self.compute_auto_slits) self.le_dim_x_minus.textChanged.connect(self.compute_auto_slits) self.le_dim_y_plus.textChanged.connect(self.compute_auto_slits) self.le_dim_y_minus.textChanged.connect(self.compute_auto_slits) self.set_Dim_Parameters()
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box) self.main_tabs = gui.tabWidget(self.mainArea) plot_tab = gui.createTabPage(self.main_tabs, "Plots") out_tab = gui.createTabPage(self.main_tabs, "Output") view_box = oasysgui.widgetBox(plot_tab, "Plotting Style", addSpace=False, orientation="horizontal") view_box_1 = oasysgui.widgetBox(view_box, "", addSpace=False, orientation="vertical", width=350) self.view_type_combo = gui.comboBox(view_box_1, self, "view_type", label="Select level of Plotting", labelWidth=220, items=["Detailed Plot", "Preview", "None"], callback=self.set_PlotQuality, sendSelectedValue=False, orientation="horizontal") self.tab = [] self.tabs = gui.tabWidget(plot_tab) self.initializeTabs() self.enableFootprint(False) self.shadow_output = QtGui.QTextEdit() self.shadow_output.setReadOnly(True) out_box = gui.widgetBox(out_tab, "System Output", addSpace=True, orientation="horizontal") out_box.layout().addWidget(self.shadow_output) self.shadow_output.setFixedHeight(600) self.shadow_output.setFixedWidth(600)
def __init__(self): super().__init__() self.runaction = OWAction("Compute", self) self.runaction.triggered.connect(self.compute) self.addAction(self.runaction) geom = QApplication.desktop().availableGeometry() self.setGeometry(QRect(round(geom.width()*0.05), round(geom.height()*0.05), round(min(geom.width()*0.98, self.MAX_WIDTH)), round(min(geom.height()*0.95, self.MAX_HEIGHT)))) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) box0 = gui.widgetBox(self.controlArea, "", orientation="horizontal") #widget buttons: compute, set defaults, help gui.button(box0, self, "Compute", callback=self.compute) gui.button(box0, self, "Defaults", callback=self.defaults) gui.button(box0, self, "Help", callback=self.help1) gui.separator(self.controlArea, height=10) self.build_gui() self.process_showers() gui.rubber(self.controlArea) self.main_tabs = gui.tabWidget(self.mainArea) plot_tab = gui.createTabPage(self.main_tabs, "Results") out_tab = gui.createTabPage(self.main_tabs, "Output") view_box = oasysgui.widgetBox(plot_tab, "Results Options", addSpace=False, orientation="horizontal") view_box_1 = oasysgui.widgetBox(view_box, "", addSpace=False, orientation="vertical", width=350) self.view_type_combo = gui.comboBox(view_box_1, self, "view_type", label="View Results", labelWidth=220, items=["No", "Yes"], callback=self.set_ViewType, sendSelectedValue=False, orientation="horizontal") self.tab = [] self.tabs = gui.tabWidget(plot_tab) self.initializeTabs() self.xoppy_output = QtGui.QTextEdit() self.xoppy_output.setReadOnly(True) out_box = gui.widgetBox(out_tab, "System Output", addSpace=True, orientation="horizontal") out_box.layout().addWidget(self.xoppy_output) self.xoppy_output.setFixedHeight(600) self.xoppy_output.setFixedWidth(600) gui.rubber(self.mainArea)
def __init__(self): super().__init__() geom = QApplication.desktop().availableGeometry() self.setGeometry( QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) gui.separator(self.controlArea) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Read Surface", callback=self.read_surface) button.setFixedHeight(45) button = gui.button(button_box, self, "Render Surface", callback=self.render_surface) button.setFixedHeight(45) input_box_l = oasysgui.widgetBox(self.controlArea, "Input", addSpace=True, orientation="horizontal", height=self.TABS_AREA_HEIGHT) self.le_surface_file_name = oasysgui.lineEdit(input_box_l, self, "surface_file_name", "Surface File Name", labelWidth=120, valueType=str, orientation="horizontal") gui.button(input_box_l, self, "...", callback=self.selectSurfaceFile) self.figure = Figure(figsize=(600, 600)) self.figure.patch.set_facecolor('white') self.axis = self.figure.add_subplot(111, projection='3d') self.axis.set_zlabel("Z [m]") self.figure_canvas = FigureCanvasQTAgg(self.figure) self.mainArea.layout().addWidget(self.figure_canvas) gui.rubber(self.mainArea)
def __init__(self): super().__init__() self.runaction = widget.OWAction("Read Wavefront hdf5 File", self) self.runaction.triggered.connect(self.read_file) self.addAction(self.runaction) self.setFixedWidth(590) self.setFixedHeight(250) left_box_1 = oasysgui.widgetBox(self.controlArea, "HDF5 Local File Selection", addSpace=True, orientation="vertical", width=570, height=100) figure_box = oasysgui.widgetBox(left_box_1, "", addSpace=True, orientation="vertical", width=550, height=50) self.le_file_name = oasysgui.lineEdit(figure_box, self, "file_name", "File Name", labelWidth=190, valueType=str, orientation="horizontal") self.le_file_name.setFixedWidth(360) self.le_data_path = oasysgui.lineEdit(figure_box, self, "data_path", "Group (wavefront name)", labelWidth=190, valueType=str, orientation="horizontal") self.le_data_path.setFixedWidth(360) gui.separator(left_box_1, height=20) button = gui.button(self.controlArea, self, "Browse File and Send Data", callback=self.read_file) button.setFixedHeight(45) gui.separator(self.controlArea, height=20) button = gui.button(self.controlArea, self, "Send Data", callback=self.send_data) button.setFixedHeight(45) gui.rubber(self.controlArea)
def clear_data(self): self.input_srw_data = None self.last_ticket = None self.current_stats = None self.current_histo_data = None self.current_histo_data_phase = None self.last_histo_data = None self.last_histo_data_phase = None self.histo_index = -1 if not self.plot_canvas_intensity is None: self.main_tabs.removeTab(1) self.main_tabs.removeTab(0) plot_tab = oasysgui.widgetBox(self.main_tabs, addToLayout=0, margin=4) plot_tabs = oasysgui.tabWidget(plot_tab) intensity_tab = oasysgui.createTabPage(plot_tabs, "Intensity") phase_tab = oasysgui.createTabPage(plot_tabs, "Phase") self.image_box = gui.widgetBox(intensity_tab, "", addSpace=False, orientation="vertical") self.image_box.setFixedHeight(self.IMAGE_HEIGHT - 30) self.image_box.setFixedWidth(self.IMAGE_WIDTH - 20) self.image_box_2 = gui.widgetBox(phase_tab, "", addSpace=False, orientation="vertical") self.image_box_2.setFixedHeight(self.IMAGE_HEIGHT - 30) self.image_box_2.setFixedWidth(self.IMAGE_WIDTH - 20) plot_tab_stats = oasysgui.widgetBox(self.main_tabs, addToLayout=0, margin=4) self.image_box_stats = gui.widgetBox(plot_tab_stats, "Stats Result", addSpace=True, orientation="vertical") self.image_box_stats.setFixedHeight(self.IMAGE_HEIGHT) self.image_box_stats.setFixedWidth(self.IMAGE_WIDTH) self.main_tabs.insertTab(0, plot_tab_stats, "TEMP") self.main_tabs.setTabText(0, "Stats") self.main_tabs.insertTab(0, plot_tab, "TEMP") self.main_tabs.setTabText(0, "Plots") self.main_tabs.setCurrentIndex(0) self.plot_canvas_intensity = None self.plot_canvas_phase = None self.plot_canvas_stats = None
def __init__(self, x_scale_factor = 1.0, y_scale_factor = 1.0, is_2d=True): super(SRWPlot.InfoBoxWidget, self).__init__() info_box_inner= gui.widgetBox(self, "Info") info_box_inner.setFixedHeight(515*y_scale_factor) info_box_inner.setFixedWidth(230*x_scale_factor) self.total = gui.lineEdit(info_box_inner, self, "total_field", "Total", tooltip="Total", labelWidth=115, valueType=str, orientation="horizontal") label_box_1 = gui.widgetBox(info_box_inner, "", addSpace=False, orientation="horizontal") self.label_h = QLabel("FWHM ") self.label_h.setFixedWidth(115) palette = QPalette(self.label_h.palette()) palette.setColor(QPalette.Foreground, QColor('blue')) self.label_h.setPalette(palette) label_box_1.layout().addWidget(self.label_h) self.fwhm_h = gui.lineEdit(label_box_1, self, "fwhm_h_field", "", tooltip="FWHM", labelWidth=115, valueType=str, orientation="horizontal") if is_2d: label_box_2 = gui.widgetBox(info_box_inner, "", addSpace=False, orientation="horizontal") self.label_v = QLabel("FWHM ") self.label_v.setFixedWidth(115) palette = QPalette(self.label_h.palette()) palette.setColor(QPalette.Foreground, QColor('red')) self.label_v.setPalette(palette) label_box_2.layout().addWidget(self.label_v) self.fwhm_v = gui.lineEdit(label_box_2, self, "fwhm_v_field", "", tooltip="FWHM", labelWidth=115, valueType=str, orientation="horizontal") self.total.setReadOnly(True) font = QFont(self.total.font()) font.setBold(True) self.total.setFont(font) palette = QPalette(self.total.palette()) palette.setColor(QPalette.Text, QColor('dark blue')) palette.setColor(QPalette.Base, QColor(243, 240, 160)) self.total.setPalette(palette) self.fwhm_h.setReadOnly(True) font = QFont(self.total.font()) font.setBold(True) self.fwhm_h.setFont(font) palette = QPalette(self.fwhm_h.palette()) palette.setColor(QPalette.Text, QColor('dark blue')) palette.setColor(QPalette.Base, QColor(243, 240, 160)) self.fwhm_h.setPalette(palette) if is_2d: self.fwhm_v.setReadOnly(True) font = QFont(self.fwhm_v.font()) font.setBold(True) self.fwhm_v.setFont(font) palette = QPalette(self.fwhm_v.palette()) palette.setColor(QPalette.Text, QColor('dark blue')) palette.setColor(QPalette.Base, QColor(243, 240, 160)) self.fwhm_v.setPalette(palette)
def add_specific_wiggler_plots(self): wiggler_plot_tab = oasysgui.widgetBox(self.main_tabs, addToLayout=0, margin=4) self.main_tabs.insertTab(1, wiggler_plot_tab, "Wiggler Plots") view_box = oasysgui.widgetBox(wiggler_plot_tab, "Plotting Style", addSpace=False, orientation="horizontal") view_box_1 = oasysgui.widgetBox(view_box, "", addSpace=False, orientation="vertical", width=350) self.wiggler_view_type_combo = orangegui.comboBox( view_box_1, self, "plot_wiggler_graph", label="Plot Graphs?", labelWidth=220, items=["No", "Yes"], callback=self.plot_widget_all, sendSelectedValue=False, orientation="horizontal") self.wiggler_tab = [] self.wiggler_tabs = oasysgui.tabWidget(wiggler_plot_tab) current_tab = self.wiggler_tabs.currentIndex() size = len(self.wiggler_tab) indexes = range(0, size) for index in indexes: self.wiggler_tabs.removeTab(size - 1 - index) self.wiggler_tab = [ orangegui.createTabPage(self.wiggler_tabs, "Magnetic Field"), orangegui.createTabPage(self.wiggler_tabs, "Electron Curvature"), orangegui.createTabPage(self.wiggler_tabs, "Electron Velocity"), orangegui.createTabPage(self.wiggler_tabs, "Electron Trajectory"), orangegui.createTabPage(self.wiggler_tabs, "Wiggler Spectrum"), orangegui.createTabPage(self.wiggler_tabs, "Wiggler Spectral power") ] for tab in self.wiggler_tab: tab.setFixedHeight(self.IMAGE_HEIGHT) tab.setFixedWidth(self.IMAGE_WIDTH) self.wiggler_plot_canvas = [None, None, None, None, None, None] self.wiggler_tabs.setCurrentIndex(current_tab)
def build_wf_photon_energy_box(self, box): gui.comboBox(box, self, "wf_use_harmonic", label="Energy Setting", items=["Harmonic", "Other"], labelWidth=260, callback=self.set_WFUseHarmonic, sendSelectedValue=False, orientation="horizontal") self.use_harmonic_box_1 = oasysgui.widgetBox(box, "", addSpace=False, orientation="vertical", height=50) oasysgui.lineEdit(self.use_harmonic_box_1, self, "wf_harmonic_number", "Harmonic #", labelWidth=260, valueType=int, orientation="horizontal", callback=self.set_harmonic_energy) le_he = oasysgui.lineEdit(self.use_harmonic_box_1, self, "wf_harmonic_energy", "Harmonic Energy", labelWidth=260, valueType=float, orientation="horizontal") le_he.setReadOnly(True) font = QFont(le_he.font()) font.setBold(True) le_he.setFont(font) palette = QPalette(le_he.palette()) palette.setColor(QPalette.Text, QColor('dark blue')) palette.setColor(QPalette.Base, QColor(243, 240, 160)) le_he.setPalette(palette) self.use_harmonic_box_2 = oasysgui.widgetBox(box, "", addSpace=False, orientation="vertical", height=50) oasysgui.lineEdit(self.use_harmonic_box_2, self, "wf_photon_energy", "Photon Energy [eV]", labelWidth=260, valueType=float, orientation="horizontal") self.set_WFUseHarmonic()
def __init__(self): super().__init__() geom = QApplication.desktop().availableGeometry() self.setGeometry(QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) gui.separator(self.controlArea) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Read Thickness", callback=self.read_surface) button.setFixedHeight(45) button = gui.button(button_box, self, "Render Thickness", callback=self.render_surface) button.setFixedHeight(45) input_box_l = oasysgui.widgetBox(self.controlArea, "Input", addSpace=True, orientation="vertical", height=460, width=self.CONTROL_AREA_WIDTH) gui.button(input_box_l, self, "Select Thickness Error Profile Data Files", callback=self.select_files) self.files_area = oasysgui.textArea(height=250) self.refresh_files_text_area() input_box_l.layout().addWidget(self.files_area) gui.comboBox(input_box_l, self, "separator", label="Separator", labelWidth=350, items=["Comma", "Space"], sendSelectedValue=False, orientation="horizontal") oasysgui.lineEdit(input_box_l, self, "skip_rows", label="Skip Rows", labelWidth=350, orientation="horizontal", valueType=int) oasysgui.lineEdit(input_box_l, self, "conversion_to_m_z", label="Thickness conversion to m", labelWidth=300, orientation="horizontal", valueType=float) oasysgui.lineEdit(input_box_l, self, "conversion_to_m_xy", label="Coordinates conversion to m", labelWidth=300, orientation="horizontal", valueType=float) gui.comboBox(input_box_l, self, "negate", label="Invert Surface", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") main_tabs = oasysgui.tabWidget(self.mainArea) plot_tab = oasysgui.createTabPage(main_tabs, "Thickness Error Surfaces") self.tab = [] self.tabs = oasysgui.tabWidget(plot_tab) self.initialize_figures() gui.rubber(self.controlArea) gui.rubber(self.mainArea)
def __init__(self): super().__init__() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tab_bas = oasysgui.createTabPage(tabs_setting, "Basic Setting") tab_adv = oasysgui.createTabPage(tabs_setting, "Advanced Setting") lens_box = oasysgui.widgetBox(tab_bas, "Input Parameters", addSpace=False, orientation="vertical", height=600, width=450) oasysgui.lineEdit(lens_box, self, "source_plane_distance", "Source Plane Distance [cm]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "image_plane_distance", "Image Plane Distance [cm]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(lens_box) oasysgui.lineEdit(lens_box, self, "input_diameter", "Input Diameter [cm]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "angular_acceptance", "Angular Acceptance [deg]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "inner_diameter", "Central Diameter [cm]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "output_diameter", "Output Diameter [cm]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "focal_length", "Focal Length [cm]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "focus_dimension", "Approximate focus dimension [um]", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "lens_length", "Lens Total Length [cm]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(lens_box) oasysgui.lineEdit(lens_box, self, "transmittance", "Lens Transmittance [%]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(self.controlArea, height=80) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Shadow/trace", callback=self.traceOpticalElement) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(button.font()) font.setItalic(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button.setFixedWidth(100)
def __init__(self): super().__init__() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tab_bas = oasysgui.createTabPage(tabs_setting, "Basic Setting") tab_adv = oasysgui.createTabPage(tabs_setting, "Advanced Setting") lens_box = oasysgui.widgetBox(tab_bas, "Input Parameters", addSpace=False, orientation="vertical", height=600, width=450) self.le_source_plane_distance = oasysgui.lineEdit(lens_box, self, "source_plane_distance", "Source Plane Distance", labelWidth=350, valueType=float, orientation="horizontal") self.le_image_plane_distance = oasysgui.lineEdit(lens_box, self, "image_plane_distance", "Image Plane Distance", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(lens_box) self.le_input_diameter = oasysgui.lineEdit(lens_box, self, "input_diameter", "Input Diameter", labelWidth=350, valueType=float, orientation="horizontal") oasysgui.lineEdit(lens_box, self, "angular_acceptance", "Angular Acceptance [deg]", labelWidth=350, valueType=float, orientation="horizontal") self.le_inner_diameter = oasysgui.lineEdit(lens_box, self, "inner_diameter", "Central Diameter", labelWidth=350, valueType=float, orientation="horizontal") self.le_output_diameter = oasysgui.lineEdit(lens_box, self, "output_diameter", "Output Diameter", labelWidth=350, valueType=float, orientation="horizontal") self.le_focal_length = oasysgui.lineEdit(lens_box, self, "focal_length", "Focal Length", labelWidth=350, valueType=float, orientation="horizontal") self.le_focus_dimension = oasysgui.lineEdit(lens_box, self, "focus_dimension", "Approximate focus dimension", labelWidth=350, valueType=float, orientation="horizontal") self.le_lens_length = oasysgui.lineEdit(lens_box, self, "lens_length", "Lens Total Length", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(lens_box) oasysgui.lineEdit(lens_box, self, "transmittance", "Lens Transmittance [%]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(self.controlArea, height=80) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Shadow/trace", callback=self.traceOpticalElement) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(button.font()) font.setItalic(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button.setFixedWidth(100)
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box=show_automatic_box) self.runaction = widget.OWAction("Run Shadow/Trace", self) self.runaction.triggered.connect(self.traceOpticalElement) self.addAction(self.runaction) ################################# # FIX A WEIRD BEHAVIOUR AFTER DISPLAY # THE WIDGET: PROBABLY ON SIGNAL MANAGER self.dumpSettings() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") self.button_trace = gui.button(button_box, self, "Run Shadow/Trace", callback=self.traceOpticalElement) font = QFont(self.button_trace.font()) font.setBold(True) self.button_trace.setFont(font) palette = QPalette(self.button_trace.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) self.button_trace.setPalette(palette) # assign new palette self.button_trace.setFixedHeight(45) self.button_reset = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(self.button_reset.font()) font.setItalic(True) self.button_reset.setFont(font) palette = QPalette(self.button_reset.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) self.button_reset.setPalette(palette) # assign new palette self.button_reset.setFixedHeight(45) self.button_reset.setFixedWidth(150) gui.separator(self.controlArea) self.tabs_setting = oasysgui.tabWidget(self.controlArea) self.tabs_setting.setFixedHeight(self.TABS_AREA_HEIGHT-5) self.tabs_setting.setFixedWidth(self.CONTROL_AREA_WIDTH-5) self.tab_bas = oasysgui.createTabPage(self.tabs_setting, "Basic Setting") self.tab_adv = oasysgui.createTabPage(self.tabs_setting, "Advanced Setting") adv_other_box = oasysgui.widgetBox(self.tab_adv, "Optional file output", addSpace=False, orientation="vertical") gui.comboBox(adv_other_box, self, "file_to_write_out", label="Files to write out", labelWidth=150, items=["All", "Mirror", "Image", "None", "Debug (All + start.xx/end.xx)"], sendSelectedValue=False, orientation="horizontal")
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box) self.setFixedWidth(420) self.setFixedHeight(350) gen_box = gui.widgetBox(self.controlArea, "Energy Cirp", addSpace=True, orientation="vertical") button_box = oasysgui.widgetBox(gen_box, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Generate Energy Spectrum", callback=self.generate_energy_spectrum) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) gui.separator(gen_box, height=10) result_box = oasysgui.widgetBox(gen_box, "Energy Cirp Setting", addSpace=True, orientation="vertical") gui.comboBox(result_box, self, "units", label="Units", labelWidth=260, items=["Energy", "Wavelength"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(result_box, self, "kind_of_calculation", label="Kind of calculation", labelWidth=110, items=["Energy/Wavelength = C + k*Y", "User File (Energy/Wavelength vs. Y)"], sendSelectedValue=False, orientation="horizontal", callback=self.set_KindOfCalculation) self.kind_box_1 = oasysgui.widgetBox(result_box, "", addSpace=True, orientation="vertical", height=50) oasysgui.lineEdit(self.kind_box_1, self, "factor", "Proportionality factor (k) [to eV/Å]", labelWidth=240, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.kind_box_1, self, "central_value", "Central Energy/Wavelength Value [eV/Å]", labelWidth=240, valueType=float, orientation="horizontal") self.kind_box_2 = oasysgui.widgetBox(result_box, "", addSpace=True, orientation="horizontal", height=50) self.le_user_file = oasysgui.lineEdit(self.kind_box_2, self, "user_file", "File Name", labelWidth=60, valueType=str, orientation="horizontal") gui.button(self.kind_box_2, self, "...", callback=self.selectUserFile) self.set_KindOfCalculation()
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box=show_automatic_box) self.runaction = widget.OWAction("Run Shadow/Trace", self) self.runaction.triggered.connect(self.traceOpticalElement) self.addAction(self.runaction) ################################# # FIX A WEIRD BEHAVIOUR AFTER DISPLAY # THE WIDGET: PROBABLY ON SIGNAL MANAGER self.dumpSettings() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") self.button_trace = gui.button(button_box, self, "Run Shadow/Trace", callback=self.traceOpticalElement) font = QFont(self.button_trace.font()) font.setBold(True) self.button_trace.setFont(font) palette = QPalette(self.button_trace.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) self.button_trace.setPalette(palette) # assign new palette self.button_trace.setFixedHeight(45) self.button_reset = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(self.button_reset.font()) font.setItalic(True) self.button_reset.setFont(font) palette = QPalette(self.button_reset.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) self.button_reset.setPalette(palette) # assign new palette self.button_reset.setFixedHeight(45) self.button_reset.setFixedWidth(150) gui.separator(self.controlArea) self.tabs_setting = gui.tabWidget(self.controlArea) self.tabs_setting.setFixedHeight(self.TABS_AREA_HEIGHT) self.tabs_setting.setFixedWidth(self.CONTROL_AREA_WIDTH-5) self.tab_bas = oasysgui.createTabPage(self.tabs_setting, "Basic Setting") self.tab_adv = oasysgui.createTabPage(self.tabs_setting, "Advanced Setting") adv_other_box = oasysgui.widgetBox(self.tab_adv, "Optional file output", addSpace=False, orientation="vertical") gui.comboBox(adv_other_box, self, "file_to_write_out", label="Files to write out", labelWidth=150, items=["All", "Mirror", "Image", "None", "Debug (All + start.xx/end.xx)"], sendSelectedValue=False, orientation="horizontal")
def __init__(self): super().__init__() self.le_p = oasysgui.lineEdit(self.tab_bas, self, "p", "Distance Source - KB center (P)", labelWidth=280, valueType=float, orientation="horizontal") self.le_q = oasysgui.lineEdit(self.tab_bas, self, "q", "Distance KB center - Image plane (Q)", labelWidth=280, valueType=float, orientation="horizontal") self.le_separation = oasysgui.lineEdit(self.tab_bas, self, "separation", "Separation between the Mirrors\n(from center of V.F.M. to center of H.F.M.) ", labelWidth=280, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.tab_bas, self, "mirror_orientation_angle", "Mirror orientation angle [deg]\n(with respect to the previous o.e. for the first mirror)", labelWidth=280, valueType=float, orientation="horizontal") gui.comboBox(self.tab_bas, self, "use_different_focal_positions", label="Different Focal Positions", labelWidth=280, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.set_use_different_focal_positions) self.focal_positions_box = oasysgui.widgetBox(self.tab_bas, "", addSpace=False, orientation="vertical") self.focal_positions_empty = oasysgui.widgetBox(self.tab_bas, "", addSpace=False, orientation="vertical", height=40) self.le_focal_positions_p = oasysgui.lineEdit(self.focal_positions_box, self, "focal_positions_p", "Focal Position P", labelWidth=280, valueType=float, orientation="horizontal") self.le_focal_positions_q = oasysgui.lineEdit(self.focal_positions_box, self, "focal_positions_q", "Focal Position Q", labelWidth=280, valueType=float, orientation="horizontal") self.set_use_different_focal_positions() self.tab_mirrors = gui.tabWidget(self.tab_bas) tab_vertical = oasysgui.createTabPage(self.tab_mirrors, "Vertical Focusing Mirror") tab_horizontal = oasysgui.createTabPage(self.tab_mirrors, "Horizontal Focusing Mirror") self.v_box = MirrorBox(kb=self, parent=tab_vertical, grazing_angles_mrad=self.grazing_angles_mrad[0], shape=self.shape[0], has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0], reflectivity_kind=self.reflectivity_kind[0], reflectivity_files=self.reflectivity_files[0], has_surface_error=self.has_surface_error[0], surface_error_files= self.surface_error_files[0]) self.h_box = MirrorBox(kb=self, parent=tab_horizontal, grazing_angles_mrad=self.grazing_angles_mrad[1], shape=self.shape[1], has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1], reflectivity_kind=self.reflectivity_kind[1], reflectivity_files=self.reflectivity_files[1], has_surface_error=self.has_surface_error[1], surface_error_files= self.surface_error_files[1])
def crl_insert_after(self): current_index = self.tab_crls.currentIndex() if ConfirmDialog.confirmed( parent=self, message="Confirm Insertion of a new element after " + self.tab_crls.tabText(current_index) + "?"): tab_crl = oasysgui.widgetBox(self.tab_crls, addToLayout=0, margin=4) crl_box = CRLBox(transfocator=self, parent=tab_crl) crl_box.after_change_workspace_units() if current_index == self.tab_crls.count() - 1: # LAST self.tab_crls.addTab(tab_crl, "TEMP") self.crl_box_array.append(crl_box) else: self.tab_crls.insertTab(current_index + 1, tab_crl, "TEMP") self.crl_box_array.insert(current_index + 1, crl_box) self.dumpSettings() for index in range(current_index, self.tab_crls.count()): self.tab_crls.setTabText(index, "C.R.L " + str(index + 1)) self.tab_crls.setCurrentIndex(current_index + 1)
def __init__(self): super().__init__() geom = QApplication.desktop().availableGeometry() self.setGeometry( QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMinimumHeight(self.geometry().height()) self.setMinimumWidth(self.geometry().width()) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) self.controlArea.setFixedWidth(self.MAX_WIDTH - 10) self.controlArea.setFixedHeight(self.MAX_HEIGHT - 10) main_box = oasysgui.widgetBox(self.controlArea, "From Shadow Beam To Wofry Wavefront", orientation="vertical", width=self.CONTROL_AREA_WIDTH - 5, height=80) gui.button(main_box, self, "Compute", callback=self.convert_wavefront, height=45)
def __init__(self): super().__init__() left_box_1 = oasysgui.widgetBox(self.controlArea, "X0h Request Form", addSpace=True, orientation="vertical", width=610, height=640) html = self.clear_input_form(HttpManager.send_xray_server_direct_request("/cgi/www_form.exe?template=x0h_form.htm")) self.x0h_input = QWebView(left_box_1) self.x0h_input.setHtml(html) left_box_1.layout().addWidget(self.x0h_input) self.x0h_input.setFixedHeight(540) self.x0h_input.setFixedWidth(590) button = gui.button(self.controlArea, self, "Get X0h!", callback=self.submit) button.setFixedHeight(30) gui.rubber(self.controlArea) self.tabs = [] self.tabs_widget = oasysgui.tabWidget(self.mainArea) self.initializeTabs() self.x0h_output = QWebView(self.tabs[0]) self.tabs[0].layout().addWidget(self.x0h_output) self.x0h_output.setFixedHeight(630) self.x0h_output.setFixedWidth(740)
def __init__(self): super().__init__() left_box_2 = oasysgui.widgetBox(self.tab_source, "BM Parameters", addSpace=True, orientation="vertical", height=175) oasysgui.lineEdit(left_box_2, self, "magnetic_radius", "Magnetic Radius [m]", labelWidth=260, valueType=float, orientation="horizontal", callback=self.calculateMagneticField) oasysgui.lineEdit(left_box_2, self, "magnetic_field", "Magnetic Field [T]", labelWidth=260, valueType=float, orientation="horizontal", callback=self.calculateMagneticRadius) oasysgui.lineEdit(left_box_2, self, "length", "Length [m]", labelWidth=260, valueType=float, orientation="horizontal") gui.rubber(self.controlArea) gui.rubber(self.mainArea)
def draw_specific_box(self): self.filter_box = oasysgui.widgetBox(self.tab_bas, "Ideal Lens Setting", addSpace=True, orientation="vertical") oasysgui.lineEdit(self.filter_box, self, "focal_x", "Horizontal Focal Length [m]", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.filter_box, self, "focal_y", "Vertical Focal Length [m]", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.filter_box, self, "x", "Horizontal coordinate of center [m]", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.filter_box, self, "y", "Vertical coordinate of center [m]", labelWidth=260, valueType=float, orientation="horizontal")
def build_gui(self): box = oasysgui.widgetBox(self.controlArea, self.name + " Input Parameters", orientation="vertical", width=self.CONTROL_AREA_WIDTH - 5) idx = -1 #widget index 0 idx += 1 box1 = gui.widgetBox(box) gui.comboBox(box1, self, "ITUBE", label=self.unitLabels()[idx], addSpace=False, items=['Mo', 'Rh', 'W'], valueType=int, orientation="horizontal", labelWidth=330) self.show_at(self.unitFlags()[idx], box1) #widget index 1 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "VOLTAGE", label=self.unitLabels()[idx], addSpace=False, valueType=float, orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1)
def __init__(self): super().__init__() self.le_p = oasysgui.lineEdit(self.tab_bas, self, "p", "Distance Source - DCM center (P)", labelWidth=280, valueType=float, orientation="horizontal") self.le_q = oasysgui.lineEdit(self.tab_bas, self, "q", "Distance DCM center - Image plane (Q)", labelWidth=280, valueType=float, orientation="horizontal") self.le_separation = oasysgui.lineEdit(self.tab_bas, self, "separation", "Separation between the Crystals\n(from center of 1st C. to center of 2nd C.)", labelWidth=280, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.tab_bas, self, "photon_energy_ev", "Photon Energy [eV]", labelWidth=280, valueType=float, orientation="horizontal") file_box = oasysgui.widgetBox(self.tab_bas, "", addSpace=True, orientation="horizontal", height=20) self.le_reflectivity_file = oasysgui.lineEdit(file_box, self, "reflectivity_file", "Reflectivity File", labelWidth=150, valueType=str, orientation="horizontal") gui.button(file_box, self, "...", callback=self.selectFilePrerefl) self.tab_crystals = gui.tabWidget(self.tab_bas) tab_first_crystal = oasysgui.createTabPage(self.tab_crystals, "First Crystal") tab_second_crystal = oasysgui.createTabPage(self.tab_crystals, "Second Crystal") self.crystal_1_box = CrystalBox(dcm=self, parent=tab_first_crystal, has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0]) self.crystal_2_box = CrystalBox(dcm=self, parent=tab_second_crystal, has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1])
def __init__(self): super().__init__() geom = QApplication.desktop().availableGeometry() self.setGeometry( QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMinimumHeight(self.geometry().height()) self.setMinimumWidth(self.geometry().width()) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) self.controlArea.setFixedWidth(self.MAX_WIDTH - 10) self.controlArea.setFixedHeight(self.MAX_HEIGHT - 10) main_box = oasysgui.widgetBox( self.controlArea, "WISE Source to Wofry Wavefront Converter", orientation="vertical", width=self.CONTROL_AREA_WIDTH - 5, height=110) oasysgui.lineEdit(main_box, self, "number_of_points", "Number of Points", labelWidth=260, valueType=float, orientation="horizontal") gui.button(main_box, self, "Compute", height=40, callback=self.compute)
def __init__(self): left_box_1 = oasysgui.widgetBox(self.controlArea, "Power Calculation", addSpace=True, orientation="vertical", width=380, height=120) gui.comboBox(left_box_1, self, "redo_calculation", label="Recalculate Intensity", items=["No", "Yes"], labelWidth=260, sendSelectedValue=False, orientation="horizontal") gui.rubber(self.controlArea)
def build_gui(self): box = oasysgui.widgetBox(self.controlArea, self.name + " Input Parameters",orientation="vertical", width=self.CONTROL_AREA_WIDTH-5) idx = -1 #widget index 0 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "VOLTAGE", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 1 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "RIPPLE", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 2 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "AL_FILTER", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1)
def __init__(self): super().__init__() layout = QVBoxLayout() self.code_area = oasysgui.textArea(readOnly=False) self.code_area.setStyleSheet( "background-color: white; font-family: Courier, monospace;") self.console = PythonConsole(self.__dict__, self) button_box = oasysgui.widgetBox(None, "", addSpace=True, orientation="horizontal") gui.button(button_box, self, "Run Script", callback=self.execute_script, height=40) gui.button(button_box, self, "Save Script to File", callback=self.save_script, height=40) layout.addWidget(self.code_area) layout.addWidget(self.console) layout.addWidget(button_box) self.setLayout(layout)
def __init__(self): super().__init__() geom = QApplication.desktop().availableGeometry() self.setGeometry( QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) gui.separator(self.controlArea) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Load HDF5 file", callback=self.load_file) button.setFixedHeight(45) input_box_l = oasysgui.widgetBox(self.controlArea, "Input", addSpace=True, orientation="horizontal", height=self.TABS_AREA_HEIGHT) self.le_hdf5_file_name = oasysgui.lineEdit(input_box_l, self, "hdf5_file_name", "HDF5 File Name", labelWidth=120, valueType=str, orientation="horizontal") gui.button(input_box_l, self, "...", callback=self.selectPlotXYFile) self.tree_view = Hdf5TreeViewWidget() self.mainArea.layout().addWidget(self.tree_view) gui.rubber(self.mainArea)
def callResetSettings(self): if ConfirmDialog.confirmed(parent=self, message="Confirm Reset of the Fields?"): self.resetSettings() while self.tab_mirrors.count() > 0: self.tab_mirrors.removeTab(0) tab_vertical = oasysgui.widgetBox(self.tab_mirrors, addToLayout=0, margin=4) tab_horizontal = oasysgui.widgetBox(self.tab_mirrors, addToLayout=0, margin=4) self.v_box = MirrorBox( kb=self, parent=tab_vertical, grazing_angles_mrad=self.grazing_angles_mrad[0], shape=self.shape[0], has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0], reflectivity_kind=self.reflectivity_kind[0], reflectivity_files=self.reflectivity_files[0], has_surface_error=self.has_surface_error[0], surface_error_files=self.surface_error_files[0]) self.h_box = MirrorBox( kb=self, parent=tab_horizontal, grazing_angles_mrad=self.grazing_angles_mrad[1], shape=self.shape[1], has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1], reflectivity_kind=self.reflectivity_kind[1], reflectivity_files=self.reflectivity_files[1], has_surface_error=self.has_surface_error[1], surface_error_files=self.surface_error_files[1]) self.tab_mirrors.addTab(tab_vertical, "Vertical Focusing Mirror") self.tab_mirrors.addTab(tab_horizontal, "Horizontal Focusing Mirror") self.setupUI()
def __init__(self): super().__init__() self.runaction = widget.OWAction("Read COMSYL File", self) self.runaction.triggered.connect(self.read_file) self.addAction(self.runaction) self.setFixedWidth(590) self.setFixedHeight(150) left_box_1 = oasysgui.widgetBox(self.controlArea, "COMSYL File Selection", addSpace=True, orientation="vertical", width=570, height=70) figure_box = oasysgui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", width=550, height=35) self.le_beam_file_name = oasysgui.lineEdit(figure_box, self, "filename", "COMSYL File Name", labelWidth=120, valueType=str, orientation="horizontal") self.le_beam_file_name.setFixedWidth(330) gui.button(figure_box, self, "...", callback=self.selectFile) #gui.separator(left_box_1, height=20) button = gui.button(self.controlArea, self, "Read COMSYL File", callback=self.read_file) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self, parent): super().__init__(parent) self.pythonScript = QTextEdit() self.pythonScript.setReadOnly(False) # asked by Manolo self.pythonScript.setMaximumHeight(340) script_box = oasysgui.widgetBox(self, "", addSpace=False, orientation="vertical", height=545, width=750) script_box.layout().addWidget(self.pythonScript) console_box = oasysgui.widgetBox(script_box, "", addSpace=False, orientation="vertical", height=150, width=750) self.console = PythonConsole(self.__dict__, self) console_box.layout().addWidget(self.console) button_box = oasysgui.widgetBox(script_box, "", addSpace=False, orientation="horizontal") gui.button(button_box, self, "Run Script", callback=self.execute_script, height=35) gui.button(button_box, self, "Save Script to File", callback=self.save_script, height=35)
def __init__(self): super().__init__() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = oasysgui.tabWidget(self.controlArea) tabs_setting.setFixedHeight(self.TABS_AREA_HEIGHT) tabs_setting.setFixedWidth(self.CONTROL_AREA_WIDTH-5) tab_bas = oasysgui.createTabPage(tabs_setting, "Basic Setting") tab_sou = oasysgui.createTabPage(tabs_setting, "Source Setting") left_box_1 = oasysgui.widgetBox(tab_bas, "Monte Carlo and Energy Spectrum", addSpace=True, orientation="vertical") oasysgui.lineEdit(left_box_1, self, "number_of_rays", "Number of Rays", tooltip="Number of Rays", labelWidth=250, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "seed", "Seed", tooltip="Seed", labelWidth=250, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "energy", "Set undulator to energy [eV]", tooltip="Set undulator to energy [eV]", labelWidth=250, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "delta_e", "Delta Energy [eV]", tooltip="Delta Energy [eV]", labelWidth=250, valueType=float, orientation="horizontal") left_box_2 = oasysgui.widgetBox(tab_sou, "Machine Parameters", addSpace=True, orientation="vertical") self.le_sigma_x = oasysgui.lineEdit(left_box_2, self, "sigma_x", "Size RMS H", labelWidth=250, tooltip="Size RMS H", valueType=float, orientation="horizontal") self.le_sigma_z = oasysgui.lineEdit(left_box_2, self, "sigma_z", "Size RMS V", labelWidth=250, tooltip="Size RMS V", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_2, self, "sigma_divergence_x", "Divergence RMS H [rad]", labelWidth=250, tooltip="Divergence RMS H [rad]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_2, self, "sigma_divergence_z", "Divergence RMS V [rad]", labelWidth=250, tooltip="Divergence RMS V [rad]", valueType=float, orientation="horizontal") left_box_3 = oasysgui.widgetBox(tab_sou, "Undulator Parameters", addSpace=True, orientation="vertical") oasysgui.lineEdit(left_box_3, self, "undulator_length", "Undulator Length [m]", labelWidth=250, tooltip="Undulator Length [m]", valueType=float, orientation="horizontal") adv_other_box = oasysgui.widgetBox(tab_bas, "Optional file output", addSpace=False, orientation="vertical") gui.comboBox(adv_other_box, self, "file_to_write_out", label="Files to write out", labelWidth=120, items=["None", "Begin.dat", "Debug (begin.dat + start.xx/end.xx)"], sendSelectedValue=False, orientation="horizontal") gui.rubber(self.controlArea) gui.rubber(self.mainArea)
def __init__(self, image_url): super(FigureWidget, self).__init__() self.setFixedWidth(600) self.setFixedHeight(600) box_general = oasysgui.widgetBox(self, "", addSpace=False, orientation="vertical", width=600, height=600) gui.separator(box_general, height=30) box_top = oasysgui.widgetBox(box_general, "", addSpace=False, orientation="vertical", width=600, height=50) title = gui.label(box_top, self, " Standing Waves plot") font = QFont(title.font()) font.setBold(True) font.setPointSize(36) palette = QPalette(title.palette()) palette.setColor(QPalette.Foreground, QColor('blue')) title.setFont(font) title.setPalette(palette) gui.separator(box_general, height=10) box_center = oasysgui.widgetBox(box_general, "", addSpace=False, orientation="horizontal", width=600) box_label = oasysgui.widgetBox(box_center, "", addSpace=False, orientation="vertical", width=50) oasysgui.widgetBox(box_label, "", addSpace=False, orientation="vertical", height=50) label_y_axis = VerticalLabel("Incidence Angle", 200, 50) font = QFont(label_y_axis.font()) font.setBold(True) font.setPointSize(24) label_y_axis.setFont(font) #label_y_axis.setFixedHeight(200) #label_y_axis.setFixedWidth(50) box_label.layout().addWidget(label_y_axis) image_label = QLabel(box_center) image = QImage() image.loadFromData(HttpManager.send_xray_server_direct_request("/" + image_url, decode=False)) image_label.setPixmap(QPixmap(image)) box_center.layout().addWidget(image_label) box_bottom = oasysgui.widgetBox(box_general, "", addSpace=False, orientation="horizontal", width=600) label_x_axis = gui.label(box_bottom, self, " Offset [Å]") font = QFont(label_x_axis.font()) font.setBold(True) font.setPointSize(24) label_x_axis.setFont(font)
def callResetSettings(self): if ConfirmDialog.confirmed(parent=self, message="Confirm Reset of the Fields?"): self.resetSettings() while self.tab_crystals.count() > 0: self.tab_crystals.removeTab(0) tab_first_crystal = oasysgui.widgetBox(self.tab_crystals, addToLayout=0, margin=4) tab_second_crystal = oasysgui.widgetBox(self.tab_crystals, addToLayout=0, margin=4) self.crystal_1_box = CrystalBox(dcm=self, parent=tab_first_crystal, has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0]) self.crystal_2_box = CrystalBox(dcm=self, parent=tab_second_crystal, has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1]) self.tab_crystals.addTab(tab_first_crystal, "First Crystal") self.tab_crystals.addTab(tab_second_crystal, "Second Crystal") self.setupUI()
def __init__(self, dcm=None, parent=None, has_finite_dimensions=0, dimensions=[0.0, 0.0]): super().__init__(parent) self.setLayout(QtGui.QVBoxLayout()) self.layout().setAlignment(Qt.AlignTop) self.dcm = dcm self.setFixedWidth(self.dcm.CONTROL_AREA_WIDTH-20) self.setFixedHeight(120) self.has_finite_dimensions = has_finite_dimensions self.mirror_width = dimensions[0] self.mirror_length = dimensions[1] mirror_box = oasysgui.widgetBox(self, "Crystal Input Parameters", addSpace=False, orientation="vertical", height=110) gui.comboBox(mirror_box, self, "has_finite_dimensions", label="Dimensions", labelWidth=260, items=["Finite", "Infinite"], sendSelectedValue=False, orientation="horizontal", callback=self.set_dimensions) self.dimension_box = oasysgui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) self.dimension_box_empty = oasysgui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) self.le_mirror_width = oasysgui.lineEdit(self.dimension_box, self, "mirror_width", "Crystal Width", labelWidth=260, valueType=float, orientation="horizontal", callback=self.dcm.dump_dimensions_0) self.le_mirror_length = oasysgui.lineEdit(self.dimension_box, self, "mirror_length", "Crystal Length", labelWidth=260, valueType=float, orientation="horizontal", callback=self.dcm.dump_dimensions_1) self.set_dimensions() self.is_on_init = False
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box) self.setFixedWidth(420) self.setFixedHeight(250) gen_box = gui.widgetBox(self.controlArea, "Rotation Angle Calculator", addSpace=True, orientation="vertical") button_box = oasysgui.widgetBox(gen_box, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Calculate Rotation Angle", callback=self.calculate_rotation_angle) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) result_box = oasysgui.widgetBox(gen_box, "Result", addSpace=False, orientation="horizontal") le_angle = oasysgui.lineEdit(result_box, self, "rotation_angle", "Calculated Rotation Angle", labelWidth=250, valueType=float, orientation="horizontal") le_angle.setReadOnly(True)
def callResetSettings(self): if ConfirmDialog.confirmed(parent=self, message="Confirm Reset of the Fields?"): self.resetSettings() while self.tab_mirrors.count() > 0: self.tab_mirrors.removeTab(0) tab_vertical = oasysgui.widgetBox(self.tab_mirrors, addToLayout=0, margin=4) tab_horizontal = oasysgui.widgetBox(self.tab_mirrors, addToLayout=0, margin=4) self.v_box = MirrorBox(kb=self, parent=tab_vertical, grazing_angles_mrad=self.grazing_angles_mrad[0], shape=self.shape[0], has_finite_dimensions=self.has_finite_dimensions[0], dimensions=self.dimensions[0], reflectivity_kind=self.reflectivity_kind[0], reflectivity_files=self.reflectivity_files[0], has_surface_error=self.has_surface_error[0], surface_error_files=self.surface_error_files[0]) self.h_box = MirrorBox(kb=self, parent=tab_horizontal, grazing_angles_mrad=self.grazing_angles_mrad[1], shape=self.shape[1], has_finite_dimensions=self.has_finite_dimensions[1], dimensions=self.dimensions[1], reflectivity_kind=self.reflectivity_kind[1], reflectivity_files=self.reflectivity_files[1], has_surface_error=self.has_surface_error[1], surface_error_files=self.surface_error_files[1]) self.tab_mirrors.addTab(tab_vertical, "Vertical Focusing Mirror") self.tab_mirrors.addTab(tab_horizontal, "Horizontal Focusing Mirror") self.setupUI()
def crl_insert_before(self): current_index = self.tab_crls.currentIndex() if ConfirmDialog.confirmed(parent=self, message="Confirm Insertion of a new element before " + self.tab_crls.tabText(current_index) + "?"): tab_crl = oasysgui.widgetBox(self.tab_crls, addToLayout=0, margin=4) crl_box = CRLBox(transfocator=self, parent=tab_crl) crl_box.after_change_workspace_units() self.tab_crls.insertTab(current_index, tab_crl, "TEMP") self.crl_box_array.insert(current_index, crl_box) self.dumpSettings() for index in range(current_index, self.tab_crls.count()): self.tab_crls.setTabText(index, "C.R.L " + str(index + 1)) self.tab_crls.setCurrentIndex(current_index)
def build_gui(self): box = oasysgui.widgetBox(self.controlArea, self.name + " Input Parameters", orientation="vertical", width=self.CONTROL_AREA_WIDTH-5) idx = -1 #widget index 1 idx += 1 box1 = gui.widgetBox(box) gui.comboBox(box1, self, "MAT_FLAG", label=self.unitLabels()[idx], addSpace=False, items=['Element(formula)', 'Mixture(formula)'], valueType=int, orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 3 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "DESCRIPTOR", label=self.unitLabels()[idx], orientation="horizontal", addSpace=False) self.show_at(self.unitFlags()[idx], box1) #widget index 5 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "GRIDSTART", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 6 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "GRIDEND", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 7 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "GRIDN", label=self.unitLabels()[idx], addSpace=False, valueType=int, validator=QIntValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1)
def build_gui(self): box = oasysgui.widgetBox(self.controlArea, self.name + " Input Parameters", orientation="vertical", width=self.CONTROL_AREA_WIDTH-5) idx = -1 #widget index 0 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "TITLE", label=self.unitLabels()[idx], addSpace=False, orientation="horizontal") self.show_at(self.unitFlags()[idx], box1) #widget index 1 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "TEMPERATURE", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 2 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "E_MIN", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 3 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "E_MAX", label=self.unitLabels()[idx], addSpace=False, valueType=float, validator=QDoubleValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1) #widget index 4 idx += 1 box1 = gui.widgetBox(box) oasysgui.lineEdit(box1, self, "NPOINTS", label=self.unitLabels()[idx], addSpace=False, valueType=int, validator=QIntValidator(), orientation="horizontal", labelWidth=250) self.show_at(self.unitFlags()[idx], box1)
def __init__(self): self.runaction = OWAction("Start Loop", self) self.runaction.triggered.connect(self.startLoop) self.addAction(self.runaction) self.runaction = OWAction("Interrupt", self) self.runaction.triggered.connect(self.stopLoop) self.addAction(self.runaction) self.setFixedWidth(400) self.setFixedHeight(185) button_box = gui.widgetBox(self.controlArea, "", addSpace=True, orientation="horizontal") self.start_button = gui.button(button_box, self, "Start Loop", callback=self.startLoop) self.start_button.setFixedHeight(45) stop_button = gui.button(button_box, self, "Interrupt", callback=self.stopLoop) stop_button.setFixedHeight(45) font = QtGui.QFont(stop_button.font()) font.setBold(True) stop_button.setFont(font) palette = QtGui.QPalette(stop_button.palette()) # make a copy of the palette palette.setColor(QtGui.QPalette.ButtonText, QtGui.QColor('red')) stop_button.setPalette(palette) # assign new palette left_box_1 = oasysgui.widgetBox(self.controlArea, "Loop Management", addSpace=True, orientation="vertical", width=380, height=100) oasysgui.lineEdit(left_box_1, self, "number_of_new_beams", "Number of new Beams", labelWidth=250, valueType=int, orientation="horizontal") self.le_current_new_beam = oasysgui.lineEdit(left_box_1, self, "current_new_beam", "Current New Beam", labelWidth=250, valueType=int, orientation="horizontal") self.le_current_new_beam.setReadOnly(True) font = QtGui.QFont(self.le_current_new_beam.font()) font.setBold(True) self.le_current_new_beam.setFont(font) palette = QtGui.QPalette(self.le_current_new_beam.palette()) # make a copy of the palette palette.setColor(QtGui.QPalette.Text, QtGui.QColor('dark blue')) palette.setColor(QtGui.QPalette.Base, QtGui.QColor(243, 240, 160)) self.le_current_new_beam.setPalette(palette) gui.rubber(self.controlArea)
def __init__(self): super().__init__() tabs_button_box = oasysgui.widgetBox(self.tab_bas, "", addSpace=False, orientation="horizontal") btns = [gui.button(tabs_button_box, self, "Insert C.R.L. Before", callback=self.crl_insert_before), gui.button(tabs_button_box, self, "Insert C.R.L. After", callback=self.crl_insert_after), gui.button(tabs_button_box, self, "Remove C.R.L.", callback=self.crl_remove)] for btn in btns: btn.setFixedHeight(20) self.tab_crls = gui.tabWidget(self.tab_bas) self.crl_box_array = [] for index in range(len(self.p)): tab_crl = oasysgui.createTabPage(self.tab_crls, "C.R.L. " + str(index + 1)) crl_box = CRLBox(transfocator=self, parent=tab_crl, nlenses=self.nlenses[index], slots_empty=self.slots_empty[index], thickness=self.thickness[index], p=self.p[index], q=self.q[index], surface_shape=self.surface_shape[index], convex_to_the_beam=self.convex_to_the_beam[index], has_finite_diameter=self.has_finite_diameter[index], diameter=self.diameter[index], is_cylinder=self.is_cylinder[index], cylinder_angle=self.cylinder_angle[index], ri_calculation_mode=self.ri_calculation_mode[index], prerefl_file=self.prerefl_file[index], refraction_index=self.refraction_index[index], attenuation_coefficient=self.attenuation_coefficient[index], radius=self.radius[index], interthickness=self.interthickness[index], use_ccc=self.use_ccc[index]) self.crl_box_array.append(crl_box)
def __init__(self, show_automatic_box=False): super().__init__(show_automatic_box=show_automatic_box) self.runaction = widget.OWAction("Copy Source Parameters", self) self.runaction.triggered.connect(self.copy_src_parameters) self.addAction(self.runaction) self.runaction = widget.OWAction("Paste Source Parameters", self) self.runaction.triggered.connect(self.paste_src_parameters) self.addAction(self.runaction) self.runaction = widget.OWAction("Run Shadow/Source", self) self.runaction.triggered.connect(self.runShadowSource) self.addAction(self.runaction) self.general_options_box.setVisible(False) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Shadow/Source", callback=self.runShadowSource) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button = gui.button(button_box, self, "Reset Fields", callback=self.callResetSettings) font = QFont(button.font()) font.setItalic(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button.setFixedWidth(150) gui.separator(self.controlArea)
def callResetSettings(self): if ConfirmDialog.confirmed(parent=self, message="Confirm Reset of the Fields?\n\nWarning: C.R.L. stack will be regenerated"): self.resetSettings() while self.tab_crls.count() > 0: self.tab_crls.removeTab(0) self.crl_box_array = [] for index in range(len(self.p)): tab_crl = oasysgui.widgetBox(self.tab_crls, addToLayout=0, margin=4) crl_box = CRLBox(transfocator=self, parent=tab_crl, nlenses=self.nlenses[index], slots_empty=self.slots_empty[index], thickness=self.thickness[index], p=self.p[index], q=self.q[index], surface_shape=self.surface_shape[index], convex_to_the_beam=self.convex_to_the_beam[index], has_finite_diameter=self.has_finite_diameter[index], diameter=self.diameter[index], is_cylinder=self.is_cylinder[index], cylinder_angle=self.cylinder_angle[index], ri_calculation_mode=self.ri_calculation_mode[index], prerefl_file=self.prerefl_file[index], refraction_index=self.refraction_index[index], attenuation_coefficient=self.attenuation_coefficient[index], radius=self.radius[index], interthickness=self.interthickness[index], use_ccc=self.use_ccc[index]) self.tab_crls.addTab(tab_crl, "C.R.L " + str(index + 1)) self.crl_box_array.append(crl_box) self.setupUI()
def __init__(self): super().__init__() left_box_1 = oasysgui.widgetBox(self.controlArea, "X0h-Search Request Form", addSpace=True, orientation="vertical", width=400, height=630) left_box_2 = oasysgui.widgetBox(left_box_1, "X-rays", addSpace=True, orientation="horizontal", width=380, height=110) left_box_2_1 = oasysgui.widgetBox(left_box_2, "", addSpace=True, orientation="vertical", width=150, height=110) gui.radioButtons(left_box_2_1, self, "xway", ["Wavelength (Å)", "Energy (keV)", "Characteristic line"], callback=self.set_xway ) self.box_wave = oasysgui.widgetBox(left_box_2, "", addSpace=True, orientation="vertical", width=190) gui.separator(self.box_wave, height=10) oasysgui.lineEdit(self.box_wave, self, "wave", label="", labelWidth=0, addSpace=False, valueType=float, orientation="horizontal") self.box_line = oasysgui.widgetBox(left_box_2, "", addSpace=True, orientation="horizontal", width=190, height=110) gui.separator(self.box_line, height=120) XRayServerGui.combobox_text(self.box_line, self, "line", label="", labelWidth=0, items=self.get_lines(), sendSelectedValue=True, orientation="horizontal", selectedValue=self.line) button = gui.button( self.box_line, self, "?", callback=self.help_lines) button.setFixedWidth(15) self.set_xway() left_box_3 = oasysgui.widgetBox(left_box_1, "Crystal", addSpace=True, orientation="horizontal", width=380, height=60) self.box_crystal = oasysgui.widgetBox(left_box_3, "", addSpace=True, orientation="horizontal", width=210) XRayServerGui.combobox_text(self.box_crystal, self, "code", label="", labelWidth=0, items=self.get_crystals(), sendSelectedValue=True, orientation="horizontal", selectedValue=self.code) button = gui.button( self.box_crystal, self, "?", callback=self.help_crystals) button.setFixedWidth(15) left_box_4 = oasysgui.widgetBox(left_box_1, "Bragg Planes Range", addSpace=True, orientation="horizontal", width=380, height=60) oasysgui.lineEdit(left_box_4, self, "hkl11", label="From", labelWidth=50, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_4, self, "hkl12", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_4, self, "hkl13", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_4, self, "hkl21", label=" To", labelWidth=50, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_4, self, "hkl22", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_4, self, "hkl23", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") left_box_7 = oasysgui.widgetBox(left_box_1, "Bragg Angle Range", addSpace=True, orientation="horizontal", width=380, height=60) oasysgui.lineEdit(left_box_7, self, "qb1", label="From", labelWidth=80, addSpace=False, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_7, self, "qb2", label=" To", labelWidth=80, addSpace=False, valueType=float, orientation="horizontal") tab_central = oasysgui.tabWidget(left_box_1) tab_1 = oasysgui.createTabPage(tab_central, "Intensity Control") tab_2 = oasysgui.createTabPage(tab_central, "Find only Bragg planes making certain angles to the surface") left_box_5 = oasysgui.widgetBox(tab_1, "", addSpace=True, orientation="vertical", width=370, height=250) gui.separator(left_box_5) oasysgui.lineEdit(left_box_5, self, "prcmin", label="Minimum |xh/x0| (%)", labelWidth=250, addSpace=False, valueType=float, orientation="horizontal") left_box_5_1 = oasysgui.widgetBox(left_box_5, "Database Options for dispersion corrections df1, df2", addSpace=True, orientation="vertical", width=370, height=185) gui.radioButtons(left_box_5_1, self, "df1df2", ["Auto (Henke at low energy, X0h at mid, Brennan-Cowan\nat high)", "Use X0h data (5-25 keV or 0.5-2.5 A), recommended for\nBragg diffraction", "Use Henke data (0.01-30 keV or 0.4-1200 A),\nrecommended for soft x-rays", "Use Brennan-Cowan data (0.03-700 keV or 0.02-400 A)"]) left_box_6 = oasysgui.widgetBox(tab_2, "", addSpace=True, orientation="vertical", width=370, height=255) gui.separator(left_box_6) left_box_6_1 = oasysgui.widgetBox(left_box_6, "", addSpace=False, orientation="horizontal", width=370, height=30) oasysgui.lineEdit(left_box_6_1, self, "base1", label="Surface Plane Indices", labelWidth=200, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_6_1, self, "base2", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_6_1, self, "base3", label=" ", labelWidth=1, addSpace=False, valueType=int, orientation="horizontal") gui.radioButtons(left_box_6, self, "modesearch", ["Planes make angles from Theta1 to Theta2", "Planes make angles from Theta1 to (Bragg_Angle - Theta2)", "Planes make angles from (Bragg_Angle - Theta1)\nto (Bragg_Angle - Theta2)"]) gui.separator(left_box_6, height=10) left_box_6_2 = oasysgui.widgetBox(left_box_6, "", addSpace=True, orientation="horizontal", width=370, height=30) oasysgui.lineEdit(left_box_6_2, self, "q1", label="Theta1", labelWidth=80, addSpace=False, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_6_2, self, "q2", label=" Theta2", labelWidth=80, addSpace=False, valueType=float, orientation="horizontal") button = gui.button(self.controlArea, self, "Find Planes!", callback=self.submit) button.setFixedHeight(30) gui.rubber(self.controlArea) self.tabs_widget = oasysgui.tabWidget(self.mainArea) self.tab_output = oasysgui.createTabPage(self.tabs_widget, "X-ray Server Ouput") self.x0h_output = QWebView(self.tab_output) self.tab_output.layout().addWidget(self.x0h_output) self.x0h_output.setFixedHeight(640) self.x0h_output.setFixedWidth(740)
def __init__(self): super().__init__() self.runaction = widget.OWAction("Calculate Height Profile", self) self.runaction.triggered.connect(self.calculate_heigth_profile_ni) self.addAction(self.runaction) self.runaction = widget.OWAction("Generate Height Profile File", self) self.runaction.triggered.connect(self.generate_heigth_profile_file_ni) self.addAction(self.runaction) geom = QApplication.desktop().availableGeometry() self.setGeometry(QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.MAX_WIDTH)), round(min(geom.height() * 0.95, self.MAX_HEIGHT)))) self.setMaximumHeight(self.geometry().height()) self.setMaximumWidth(self.geometry().width()) # DABAM INITIALIZATION self.server = dabam.dabam() self.server.set_input_silent(True) gui.separator(self.controlArea) button_box = oasysgui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Calculate Height\nProfile", callback=self.calculate_heigth_profile) button.setFixedHeight(45) button = gui.button(button_box, self, "Generate Height\nProfile File", callback=self.generate_heigth_profile_file) font = QFont(button.font()) font.setBold(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Blue')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) button.setFixedWidth(150) button = gui.button(button_box, self, "Reset Fields", callback=self.call_reset_settings) font = QFont(button.font()) font.setItalic(True) button.setFont(font) palette = QPalette(button.palette()) # make a copy of the palette palette.setColor(QPalette.ButtonText, QColor('Dark Red')) button.setPalette(palette) # assign new palette button.setFixedHeight(45) gui.separator(self.controlArea) tabs_setting = gui.tabWidget(self.controlArea) tabs_setting.setFixedHeight(self.TABS_AREA_HEIGHT) tabs_setting.setFixedWidth(self.CONTROL_AREA_WIDTH-5) tab_input = oasysgui.createTabPage(tabs_setting, "DABAM Search Setting") tab_gener = oasysgui.createTabPage(tabs_setting, "DABAM Generation Setting") tab_out = oasysgui.createTabPage(tabs_setting, "Output") manual_box = oasysgui.widgetBox(tab_input, "Manual Entry", addSpace=True, orientation="vertical") oasysgui.lineEdit(manual_box, self, "entry_number", "Entry Number", labelWidth=300, valueType=int, orientation="horizontal") gui.separator(manual_box) button = gui.button(manual_box, self, "Retrieve Profile", callback=self.retrieve_profile) button.setFixedHeight(35) button.setFixedWidth(self.CONTROL_AREA_WIDTH-35) input_box = oasysgui.widgetBox(tab_input, "Search Parameters", addSpace=True, orientation="vertical") gui.comboBox(input_box, self, "shape", label="Mirror Shape", labelWidth=300, items=["All", "Plane", "Cylindrical", "Elliptical", "Toroidal", "Spherical"], sendSelectedValue=False, orientation="horizontal") gui.separator(input_box) input_box_1 = oasysgui.widgetBox(input_box, "", addSpace=True, orientation="horizontal") oasysgui.lineEdit(input_box_1, self, "slope_error_from", "Slope Error From (" + u"\u03BC" + "rad)", labelWidth=150, valueType=float, orientation="horizontal") oasysgui.lineEdit(input_box_1, self, "slope_error_to", "To (" + u"\u03BC" + "rad)", labelWidth=60, valueType=float, orientation="horizontal") input_box_2 = oasysgui.widgetBox(input_box, "", addSpace=True, orientation="horizontal") self.le_dimension_y_from = oasysgui.lineEdit(input_box_2, self, "dimension_y_from", "Mirror Length From", labelWidth=150, valueType=float, orientation="horizontal") self.le_dimension_y_to = oasysgui.lineEdit(input_box_2, self, "dimension_y_to", "To", labelWidth=60, valueType=float, orientation="horizontal") table_box = oasysgui.widgetBox(tab_input, "Search Results", addSpace=True, orientation="vertical", height=290) self.overlay_search = Overlay(table_box, self.search_profiles) self.overlay_search.hide() button = gui.button(input_box, self, "Search", callback=self.overlay_search.show) button.setFixedHeight(35) button.setFixedWidth(self.CONTROL_AREA_WIDTH-35) gui.comboBox(table_box, self, "use_undetrended", label="Use Undetrended Profile", labelWidth=300, items=["No", "Yes"], callback=self.table_item_clicked, sendSelectedValue=False, orientation="horizontal") gui.separator(table_box) self.scrollarea = QScrollArea() self.scrollarea.setMinimumWidth(self.CONTROL_AREA_WIDTH-35) table_box.layout().addWidget(self.scrollarea, alignment=Qt.AlignHCenter) self.table = QTableWidget(1, 5) self.table.setAlternatingRowColors(True) self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed) self.table.verticalHeader().setVisible(False) self.table.setColumnWidth(0, 40) self.table.setColumnWidth(1, 70) self.table.setColumnWidth(2, 70) self.table.setColumnWidth(3, 85) self.table.setColumnWidth(4, 80) self.table.resizeRowsToContents() self.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.table.itemClicked.connect(self.table_item_clicked) self.scrollarea.setWidget(self.table) self.scrollarea.setWidgetResizable(1) output_profile_box = oasysgui.widgetBox(tab_gener, "Surface Generation Parameters", addSpace=True, orientation="vertical", height=270) self.le_dimension_x = oasysgui.lineEdit(output_profile_box, self, "dimension_x", "Width", labelWidth=300, valueType=float, orientation="horizontal") self.le_step_x = oasysgui.lineEdit(output_profile_box, self, "step_x", "Step Width", labelWidth=300, valueType=float, orientation="horizontal") gui.comboBox(output_profile_box, self, "center_y", label="Center Profile in the middle of O.E.", labelWidth=300, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(output_profile_box, self, "modify_y", label="Modify Length?", labelWidth=240, items=["No", "Rescale to new length", "Fit to new length (fill or cut)"], callback=self.set_ModifyY, sendSelectedValue=False, orientation="horizontal") self.modify_box_1 = oasysgui.widgetBox(output_profile_box, "", addSpace=False, orientation="vertical", height=50) self.modify_box_2 = oasysgui.widgetBox(output_profile_box, "", addSpace=False, orientation="vertical", height=50) oasysgui.lineEdit(self.modify_box_2, self, "scale_factor_y", "Scale Factor", labelWidth=300, valueType=float, orientation="horizontal") self.modify_box_3 = oasysgui.widgetBox(output_profile_box, "", addSpace=False, orientation="vertical", height=50) self.le_new_length = oasysgui.lineEdit(self.modify_box_3, self, "new_length", "New Length", labelWidth=300, valueType=float, orientation="horizontal") oasysgui.lineEdit(self.modify_box_3, self, "filler_value", "Filler Value (if new length > profile length) [nm]", labelWidth=300, valueType=float, orientation="horizontal") self.set_ModifyY() gui.comboBox(output_profile_box, self, "renormalize_y", label="Renormalize Length Profile to different RMS", labelWidth=300, items=["No", "Yes"], callback=self.set_RenormalizeY, sendSelectedValue=False, orientation="horizontal") self.output_profile_box_1 = oasysgui.widgetBox(output_profile_box, "", addSpace=True, orientation="vertical") gui.comboBox(self.output_profile_box_1, self, "error_type_y", label="Normalization to", labelWidth=270, items=["Figure Error (nm)", "Slope Error (" + u"\u03BC" + "rad)"], sendSelectedValue=False, orientation="horizontal") oasysgui.lineEdit(self.output_profile_box_1, self, "rms_y", "Rms Value", labelWidth=300, valueType=float, orientation="horizontal") self.set_RenormalizeY() output_box = oasysgui.widgetBox(tab_gener, "Outputs", addSpace=True, orientation="vertical") select_file_box = oasysgui.widgetBox(output_box, "", addSpace=True, orientation="horizontal") self.le_heigth_profile_file_name = oasysgui.lineEdit(select_file_box, self, "heigth_profile_file_name", "Output File Name", labelWidth=120, valueType=str, orientation="horizontal") gui.button(select_file_box, self, "...", callback=self.selectFile) self.shadow_output = QTextEdit() self.shadow_output.setReadOnly(True) out_box = oasysgui.widgetBox(tab_out, "System Output", addSpace=True, orientation="horizontal", height=500) out_box.layout().addWidget(self.shadow_output) gui.rubber(self.controlArea) self.initializeTabs() gui.rubber(self.mainArea) self.overlay_search.raise_()
def initializeTabs(self): self.tabs = gui.tabWidget(self.mainArea) self.tab = [gui.createTabPage(self.tabs, "Info"), gui.createTabPage(self.tabs, "Heights Profile"), gui.createTabPage(self.tabs, "Slopes Profile"), gui.createTabPage(self.tabs, "PSD Heights"), gui.createTabPage(self.tabs, "CSD Heights"), gui.createTabPage(self.tabs, "ACF"), gui.createTabPage(self.tabs, "Generated 2D Profile"), ] for tab in self.tab: tab.setFixedHeight(self.IMAGE_HEIGHT) tab.setFixedWidth(self.IMAGE_WIDTH) self.plot_canvas = [None, None, None, None, None, None] self.plot_canvas[0] = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas[0].setDefaultPlotLines(True) self.plot_canvas[0].setActiveCurveColor(color='darkblue') self.plot_canvas[0].setGraphYLabel("Z [nm]") self.plot_canvas[0].setGraphTitle("Heights Profile") self.plot_canvas[0].setDrawModeEnabled(True, 'rectangle') self.plot_canvas[0].setZoomModeEnabled(True) self.plot_canvas[1] = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas[1].setDefaultPlotLines(True) self.plot_canvas[1].setActiveCurveColor(color='darkblue') self.plot_canvas[1].setGraphYLabel("Zp [$\mu$rad]") self.plot_canvas[1].setGraphTitle("Slopes Profile") self.plot_canvas[1].setDrawModeEnabled(True, 'rectangle') self.plot_canvas[1].setZoomModeEnabled(True) self.plot_canvas[2] = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas[2].setDefaultPlotLines(True) self.plot_canvas[2].setActiveCurveColor(color='darkblue') self.plot_canvas[2].setGraphXLabel("f [m^-1]") self.plot_canvas[2].setGraphYLabel("PSD [m^3]") self.plot_canvas[2].setGraphTitle("Power Spectral Density of Heights Profile") self.plot_canvas[2].setDrawModeEnabled(True, 'rectangle') self.plot_canvas[2].setZoomModeEnabled(True) self.plot_canvas[2].setXAxisLogarithmic(True) self.plot_canvas[2].setYAxisLogarithmic(True) self.plot_canvas[3] = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas[3].setDefaultPlotLines(True) self.plot_canvas[3].setActiveCurveColor(color='darkblue') self.plot_canvas[3].setGraphXLabel("f [m^-1]") self.plot_canvas[3].setGraphYLabel("CSD [m^3]") self.plot_canvas[3].setGraphTitle("Cumulative Spectral Density of Heights Profile") self.plot_canvas[3].setDrawModeEnabled(True, 'rectangle') self.plot_canvas[3].setZoomModeEnabled(True) self.plot_canvas[3].setXAxisLogarithmic(True) self.plot_canvas[4] = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas[4].setDefaultPlotLines(True) self.plot_canvas[4].setActiveCurveColor(color='darkblue') self.plot_canvas[4].setGraphXLabel("Length [m]") self.plot_canvas[4].setGraphYLabel("ACF") self.plot_canvas[4].setGraphTitle("Autocovariance Function of Heights Profile") self.plot_canvas[4].setDrawModeEnabled(True, 'rectangle') self.plot_canvas[4].setZoomModeEnabled(True) self.figure = Figure(figsize=(self.IMAGE_HEIGHT, self.IMAGE_HEIGHT)) # QUADRATA! self.figure.patch.set_facecolor('white') self.axis = self.figure.add_subplot(111, projection='3d') self.axis.set_zlabel("Z [nm]") self.plot_canvas[5] = FigureCanvasQTAgg(self.figure) self.profileInfo = QTextEdit() self.profileInfo.setReadOnly(True) self.profileInfo.setMinimumHeight(self.IMAGE_HEIGHT-5) self.profileInfo.setMaximumHeight(self.IMAGE_HEIGHT-5) self.profileInfo.setMinimumWidth(310) self.profileInfo.setMaximumWidth(310) profile_box = oasysgui.widgetBox(self.tab[0], "", addSpace=True, orientation="horizontal", height = self.IMAGE_HEIGHT, width=320) profile_box.layout().addWidget(self.profileInfo) for index in range(0, 6): self.tab[index+1].layout().addWidget(self.plot_canvas[index]) self.tabs.setCurrentIndex(1)
def __init__(self): super().__init__() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = oasysgui.tabWidget(self.controlArea) tabs_setting.setFixedHeight(self.TABS_AREA_HEIGHT) tabs_setting.setFixedWidth(self.CONTROL_AREA_WIDTH-5) tab_bas = oasysgui.createTabPage(tabs_setting, "Basic Setting") tab_sou = oasysgui.createTabPage(tabs_setting, "Source Setting") left_box_1 = oasysgui.widgetBox(tab_bas, "Monte Carlo and Energy Spectrum", addSpace=True, orientation="vertical") oasysgui.lineEdit(left_box_1, self, "number_of_rays", "Number of Rays", tooltip="Number of Rays", labelWidth=260, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "seed", "Seed", tooltip="Seed", labelWidth=260, valueType=int, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "e_min", "Minimum Energy [eV]", tooltip="Minimum Energy [eV]", labelWidth=260, valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_1, self, "e_max", "Maximum Energy [eV]", tooltip="Maximum Energy [eV]", labelWidth=260, valueType=float, orientation="horizontal") gui.comboBox(left_box_1, self, "generate_polarization_combo", label="Generate Polarization", items=["Only Parallel", "Only Perpendicular", "Total"], labelWidth=260, orientation="horizontal") left_box_2 = oasysgui.widgetBox(tab_sou, "Machine Parameters", addSpace=True, orientation="vertical") self.le_sigma_x = oasysgui.lineEdit(left_box_2, self, "sigma_x", "Sigma X", labelWidth=260, tooltip="Sigma X", valueType=float, orientation="horizontal") self.le_sigma_z = oasysgui.lineEdit(left_box_2, self, "sigma_z", "Sigma Z", labelWidth=260, tooltip="Sigma Z", valueType=float, orientation="horizontal") self.le_emittance_x = oasysgui.lineEdit(left_box_2, self, "emittance_x", "Emittance X", labelWidth=260, tooltip="Emittance X", valueType=float, orientation="horizontal") self.le_emittance_z = oasysgui.lineEdit(left_box_2, self, "emittance_z", "Emittance Z", labelWidth=260, tooltip="Emittance Z", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_2, self, "energy", "Energy [GeV]", tooltip="Energy [GeV]", labelWidth=260, valueType=float, orientation="horizontal") self.le_distance_from_waist_x = oasysgui.lineEdit(left_box_2, self, "distance_from_waist_x", "Distance from Waist X", labelWidth=260, tooltip="Distance from Waist X", valueType=float, orientation="horizontal") self.le_distance_from_waist_z = oasysgui.lineEdit(left_box_2, self, "distance_from_waist_z", "Distance from Waist Z", labelWidth=260, tooltip="Distance from Waist Z", valueType=float, orientation="horizontal") left_box_3 = oasysgui.widgetBox(tab_sou, "Bending Magnet Parameters", addSpace=True, orientation="vertical") oasysgui.lineEdit(left_box_3, self, "magnetic_radius", "Magnetic Radius [m]", labelWidth=260, callback=self.calculateMagneticField, tooltip="Magnetic Radius [m]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_3, self, "magnetic_field", "Magnetic Field [T]", labelWidth=260, callback=self.calculateMagneticRadius, tooltip="Magnetic Field [T]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_3, self, "horizontal_half_divergence_from", "Horizontal half-divergence [rads] From [+]", labelWidth=260, tooltip="Horizontal half-divergence [rads] From [+]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_3, self, "horizontal_half_divergence_to", "Horizontal half-divergence [rads] To [-]", labelWidth=260, tooltip="Horizontal half-divergence [rads] To [-]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_3, self, "max_vertical_half_divergence_from", "Max vertical half-divergence [rads] From [+]", labelWidth=260, tooltip="Max vertical half-divergence [rads] From [+]", valueType=float, orientation="horizontal") oasysgui.lineEdit(left_box_3, self, "max_vertical_half_divergence_to", "Max vertical half-divergence [rads] To [-]", labelWidth=260, tooltip="Max vertical half-divergence [rads] To [-]", valueType=float, orientation="horizontal") gui.comboBox(left_box_3, self, "calculation_mode_combo", label="Calculation Mode", items=["Precomputed", "Exact"], labelWidth=260, orientation="horizontal") left_box_4 = oasysgui.widgetBox(tab_bas, "Reject Rays", addSpace=True, orientation="vertical", height=120) gui.comboBox(left_box_4, self, "optimize_source", label="Optimize Source", items=["No", "Using file with phase/space volume)", "Using file with slit/acceptance"], labelWidth=120, callback=self.set_OptimizeSource, orientation="horizontal") self.optimize_file_name_box = oasysgui.widgetBox(left_box_4, "", addSpace=False, orientation="vertical") file_box = oasysgui.widgetBox(self.optimize_file_name_box, "", addSpace=True, orientation="horizontal", height=25) self.le_optimize_file_name = oasysgui.lineEdit(file_box, self, "optimize_file_name", "File Name", labelWidth=100, valueType=str, orientation="horizontal") gui.button(file_box, self, "...", callback=self.selectOptimizeFile) oasysgui.lineEdit(self.optimize_file_name_box, self, "max_number_of_rejected_rays", "Max number of rejected rays (set 0 for infinity)", labelWidth=280, valueType=int, orientation="horizontal") self.set_OptimizeSource() adv_other_box = oasysgui.widgetBox(tab_bas, "Optional file output", addSpace=False, orientation="vertical") gui.comboBox(adv_other_box, self, "file_to_write_out", label="Files to write out", labelWidth=120, items=["None", "Begin.dat", "Debug (begin.dat + start.xx/end.xx)"], sendSelectedValue=False, orientation="horizontal") gui.rubber(self.controlArea) gui.rubber(self.mainArea)