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.setFixedWidth(470) self.setFixedHeight(400) self.dcm = dcm self.has_finite_dimensions = has_finite_dimensions self.mirror_width = dimensions[0] self.mirror_length = dimensions[1] mirror_box = ShadowGui.widgetBox(self, "Crystal Input Parameters", addSpace=False, orientation="vertical", height=330, width=460) gui.comboBox(mirror_box, self, "has_finite_dimensions", label="Dimensions", labelWidth=350, items=["Finite", "Infinite"], sendSelectedValue=False, orientation="horizontal", callback=self.set_dimensions) self.dimension_box = ShadowGui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) self.dimension_box_empty = ShadowGui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) ShadowGui.lineEdit(self.dimension_box, self, "mirror_width", "Crystal Width [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.dcm.dump_dimensions_0) ShadowGui.lineEdit(self.dimension_box, self, "mirror_length", "Crystal Length [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.dcm.dump_dimensions_1) self.set_dimensions() self.is_on_init = False
def __init__(self): self.setFixedWidth(400) self.setFixedHeight(220) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Loop Management", addSpace=True, orientation="vertical", width=370, height=100) ShadowGui.lineEdit(left_box_1, self, "number_of_new_beams", "Number of new Beams", labelWidth=250, valueType=int, orientation="horizontal") self.le_current_new_beam = ShadowGui.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) 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 gui.rubber(self.controlArea)
def __init__(self): super().__init__() self.runaction = widget.OWAction("Run Simulation", self) self.runaction.triggered.connect(self.run_simulation) 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.5, self.MAX_WIDTH)), round(min(geom.height()*0.5, self.MAX_HEIGHT)))) label_box = ShadowGui.widgetBox(self.controlArea, "", orientation="horizontal") gui.separator(label_box, height=50) gui.label(label_box, self, " JUST A DEMO WIDGET!!!!!") gui.separator(label_box, height=50) self.left_box_1 = ShadowGui.widgetBox(self.controlArea, "Electron Beam", addSpace=True, orientation="vertical") ShadowGui.lineEdit(self.left_box_1, self, "lens_position", "Position on beamline", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_1, self, "focal_x", "Focal length (horizontal) [m]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_1, self, "focal_y", "Focal length (vertical) [m]", labelWidth=300, valueType=float, orientation="horizontal") button_box = ShadowGui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Simulation", callback=self.run_simulation) 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) gui.rubber(self.controlArea)
def __init__(self): self.setFixedWidth(590) self.setFixedHeight(580) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Optical Parameters", addSpace=True, orientation="vertical", width=570, height=500) figure_box = ShadowGui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", width=550, height=350) label = QtGui.QLabel("") label.setPixmap(QtGui.QPixmap(self.image_path)) figure_box.layout().addWidget(label) ShadowGui.lineEdit(left_box_1, self, "vertical_quote", "Vertical Distance (H) [cm]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "total_distance", "First Crystal - Mirror Distance (D) [cm]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "twotheta_bragg", "First Crystal Reflection Angle [deg]", labelWidth=300, valueType=float, orientation="horizontal") gui.separator(left_box_1, height=20) le = ShadowGui.lineEdit(left_box_1, self, "d_1", "Crystal to Crystal Distance (d_1) [cm]", labelWidth=300, valueType=float, orientation="horizontal") le.setReadOnly(True) font = QtGui.QFont(le.font()) font.setBold(True) le.setFont(font) palette = QtGui.QPalette(le.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)) le.setPalette(palette) le = ShadowGui.lineEdit(left_box_1, self, "d_2", "Crystal to Mirror Distance (d_2) [cm]", labelWidth=300, valueType=float, orientation="horizontal") le.setReadOnly(True) font = QtGui.QFont(le.font()) font.setBold(True) le.setFont(font) palette = QtGui.QPalette(le.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)) le.setPalette(palette) button = gui.button(self.controlArea, self, "Calculate Distances", callback=self.calculate) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self): super().__init__() self.runaction = widget.OWAction("Send Data to Simulators", self) self.runaction.triggered.connect(self.send_data) 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.5, self.MAX_WIDTH)), round(min(geom.height()*0.5, self.MAX_HEIGHT)))) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Image Plane Parameters", addSpace=True, orientation="vertical") ShadowGui.lineEdit(left_box_1, self, "image_plane_name", "Image Plane Name", labelWidth=200, valueType=str, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "image_plane_position", "Position on beamline", labelWidth=300, valueType=float, orientation="horizontal") button_box = ShadowGui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Send Data to Simulators", callback=self.send_data) 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) gui.rubber(self.controlArea)
def __init__(self): super().__init__() self.runaction = widget.OWAction("Run Shadow/Trace", self) self.runaction.triggered.connect(self.traceOpticalElement) self.addAction(self.runaction) self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tab_bas = ShadowGui.createTabPage(tabs_setting, "Basic Setting") lens_box = ShadowGui.widgetBox(tab_bas, "Input Parameters", addSpace=False, orientation="vertical", height=600, width=450) self.le_source_plane_distance = ShadowGui.lineEdit(lens_box, self, "source_plane_distance", "Source Plane Distance [cm]", labelWidth=350, valueType=float, orientation="horizontal") self.le_image_plane_distance = ShadowGui.lineEdit(lens_box, self, "image_plane_distance", "Image Plane Distance [cm]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(self.controlArea) button_box = ShadowGui.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): self.setFixedWidth(590) self.setFixedHeight(150) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Beam File Selection", addSpace=True, orientation="vertical", width=570, height=60) figure_box = ShadowGui.widgetBox(left_box_1, "", addSpace=True, orientation="horizontal", width=550, height=50) self.le_beam_file_name = ShadowGui.lineEdit(figure_box, self, "beam_file_name", "Beam File Name", labelWidth=100, valueType=str, orientation="horizontal") self.le_beam_file_name.setFixedWidth(350) pushButton = gui.button(figure_box, self, "...") pushButton.clicked.connect(self.selectFile) gui.separator(left_box_1, height=20) button = gui.button(self.controlArea, self, "Generate Beam", callback=self.calculate) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self, show_automatic_box=True): super().__init__(show_automatic_box) view_box = ShadowGui.widgetBox(self.mainArea, "Plotting Style", addSpace=False, orientation="horizontal") view_box_1 = ShadowGui.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.tabs = gui.tabWidget(self.mainArea) self.initializeTabs() self.shadow_output = QtGui.QTextEdit() self.shadow_output.setReadOnly(True) out_box = gui.widgetBox(self.mainArea, "System Output", addSpace=True, orientation="horizontal") out_box.layout().addWidget(self.shadow_output) self.shadow_output.setFixedHeight(150) self.shadow_output.setFixedWidth(850)
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 = ShadowGui.widgetBox(self.tab_mirrors, addToLayout=0, margin=4) tab_horizontal = ShadowGui.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 = ShadowGui.widgetBox(self.tab_crls, addToLayout=0, margin=4) crl_box = CRLBox(transfocator=self, parent=tab_crl) 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 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 = ShadowGui.widgetBox(self.tab_crystals, addToLayout=0, margin=4) tab_second_crystal = ShadowGui.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("Run Shadow Beamline Simulation", self) self.runaction.triggered.connect(self.runSimulation) self.addAction(self.runaction) gui.separator(self.controlArea, height=600) button_box = ShadowGui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Run Simulation", callback=self.runSimulation) 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)
def __init__(self): super().__init__() self.setFixedWidth(500) self.setFixedHeight(300) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Accumulating Loop Management", addSpace=True, orientation="vertical", height=120) ShadowGui.lineEdit(left_box_1, self, "number_of_accumulated_rays", "Number of accumulated good rays\n(before sending signal)", labelWidth=350, valueType=int, orientation="horizontal") le = ShadowGui.lineEdit(left_box_1, self, "current_number_of_rays", "Current number of good rays", labelWidth=350, valueType=int, orientation="horizontal") le.setReadOnly(True) font = QtGui.QFont(le.font()) font.setBold(True) le.setFont(font) palette = QtGui.QPalette(le.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)) le.setPalette(palette) gui.comboBox(left_box_1, self, "keep_go_rays", label="Remove lost rays from beam", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") button_box = gui.widgetBox(self.controlArea, "", addSpace=True, orientation="horizontal") self.start_button = gui.button(button_box, self, "Send Beam", callback=self.sendSignal) self.start_button.setFixedHeight(45) button = gui.button(button_box, self, "Reset Accumulation", 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) gui.rubber(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 = ShadowGui.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__() geom = QApplication.desktop().availableGeometry() self.setGeometry(QRect(round(geom.width() * 0.05), round(geom.height() * 0.05), round(min(geom.width() * 0.98, self.WIDGET_WIDTH)), round(min(geom.height() * 0.95, self.WIDGET_HEIGHT)))) gen_box = ShadowGui.widgetBox(self.controlArea, "Waviness Parameters", addSpace=True, orientation="horizontal", width=500) tabs_setting = gui.tabWidget(gen_box) tab_input = ShadowGui.createTabPage(tabs_setting, "Input Parameter") tab_harmonics = ShadowGui.createTabPage(tabs_setting, "Harmonics") tab_out = ShadowGui.createTabPage(tabs_setting, "Output") self.input_box = ShadowGui.widgetBox(tab_input, "Inputs", addSpace=True, orientation="vertical", width=470) gui.button(self.input_box, self, "Load xsh_waviness input file ...", callback=self.load_inp_file) gui.separator(self.input_box) ShadowGui.lineEdit(self.input_box, self, "number_of_points_x", "Number of Points (<201) X (width)", labelWidth=300, valueType=int, orientation="horizontal") ShadowGui.lineEdit(self.input_box, self, "number_of_points_y", " Y (length)", labelWidth=300, valueType=int, orientation="horizontal") gui.separator(self.input_box) ShadowGui.lineEdit(self.input_box, self, "dimension_x", "Dimensions [cm] X (width)", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.input_box, self, "dimension_y", " Y (length)", labelWidth=300, valueType=float, orientation="horizontal") gui.separator(self.input_box) ShadowGui.lineEdit(self.input_box, self, "estimated_slope_error", "Estimated slope error [arcsec]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.input_box, self, "montecarlo_seed", "Monte Carlo initial seed", labelWidth=300, valueType=int, orientation="horizontal") self.output_box = ShadowGui.widgetBox(tab_input, "Outputs", addSpace=True, orientation="vertical", width=470) self.select_file_box = ShadowGui.widgetBox(self.output_box, "", addSpace=True, orientation="horizontal") gui.separator(self.output_box) gui.button(self.output_box, self, "Write xsh_waviness input file (optional) ...", callback=self.write_inp_file) ShadowGui.lineEdit(self.select_file_box, self, "waviness_file_name", "Output File Name", labelWidth=120, valueType=str, orientation="horizontal") self.harmonics_box = ShadowGui.widgetBox(tab_harmonics, "Harmonics", addSpace=True, orientation="vertical", width=470, height=690) ShadowGui.lineEdit(self.harmonics_box, self, "harmonic_maximum_index", "Harmonic Maximum Index", labelWidth=300, valueType=int, orientation="horizontal", callback=self.set_harmonics) gui.separator(self.harmonics_box) self.scrollarea = QScrollArea() self.scrollarea.setMaximumWidth(400) self.harmonics_box.layout().addWidget(self.scrollarea, alignment=Qt.AlignHCenter) self.shadow_output = QTextEdit() self.shadow_output.setReadOnly(True) out_box = ShadowGui.widgetBox(tab_out, "System Output", addSpace=True, orientation="horizontal", height=600) out_box.layout().addWidget(self.shadow_output) button_box = ShadowGui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Calculate Waviness", callback=self.calculate_waviness) button.setFixedHeight(45) button.setFixedWidth(170) button = gui.button(button_box, self, "Generate Waviness File", callback=self.generate_waviness_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(200) 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) button.setFixedWidth(120) gui.rubber(self.controlArea) self.figure = Figure(figsize=(600, 600)) self.figure.patch.set_facecolor('white') self.axis = self.figure.add_subplot(111, projection='3d') self.axis.set_xlabel("X (cm)") self.axis.set_ylabel("Y (cm)") 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, kb=None, parent=None, grazing_angles_mrad=3.0, shape=1, has_finite_dimensions=0, dimensions=[0.0, 0.0], reflectivity_kind=0, reflectivity_files=KB.NONE_SPECIFIED, has_surface_error=0, surface_error_files=KB.NONE_SPECIFIED): super().__init__(parent) self.setLayout(QtGui.QVBoxLayout()) self.layout().setAlignment(Qt.AlignTop) self.setFixedWidth(470) self.setFixedHeight(400) self.kb = kb self.grazing_angles_mrad = grazing_angles_mrad self.shape = shape self.has_finite_dimensions = has_finite_dimensions self.mirror_width = dimensions[0] self.mirror_length = dimensions[1] self.reflectivity_kind = reflectivity_kind self.reflectivity_files = reflectivity_files self.has_surface_error = has_surface_error self.surface_error_files = surface_error_files mirror_box = ShadowGui.widgetBox(self, "Mirror Input Parameters", addSpace=False, orientation="vertical", height=330, width=460) ShadowGui.lineEdit(mirror_box, self, "grazing_angles_mrad", "Grazing Angle [mrad]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.kb.dump_grazing_angles_mrad) gui.separator(mirror_box) gui.comboBox(mirror_box, self, "shape", label="Surface Shape", labelWidth=350, items=["Sphere", "Ellipse"], sendSelectedValue=False, orientation="horizontal", callback=self.kb.dump_shape) gui.separator(mirror_box) gui.comboBox(mirror_box, self, "has_finite_dimensions", label="Dimensions", labelWidth=350, items=["Finite", "Infinite"], sendSelectedValue=False, orientation="horizontal", callback=self.set_dimensions) self.dimension_box = ShadowGui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) self.dimension_box_empty = ShadowGui.widgetBox(mirror_box, "", addSpace=False, orientation="vertical", height=50) ShadowGui.lineEdit(self.dimension_box, self, "mirror_width", "Mirror Width [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.kb.dump_dimensions_0) ShadowGui.lineEdit(self.dimension_box, self, "mirror_length", "Mirror Length [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.kb.dump_dimensions_1) self.set_dimensions() gui.separator(mirror_box, height=10) gui.comboBox(mirror_box, self, "reflectivity_kind", label="Reflectivity Kind", labelWidth=350, items=["Ideal Reflector", "Mirror", "Multilayer"], sendSelectedValue=False, orientation="horizontal", callback=self.set_reflectivity_kind) self.reflectivity_box = ShadowGui.widgetBox(mirror_box, "", addSpace=True, orientation="vertical", height=20) self.reflectivity_box_empty = ShadowGui.widgetBox(mirror_box, "", addSpace=True, orientation="vertical", height=20) self.le_reflectivity_files = ShadowGui.lineEdit(self.reflectivity_box, self, "reflectivity_files", "Reflectivity File", labelWidth=150, valueType=str, orientation="horizontal", callback=self.kb.dump_reflectivity_files) self.set_reflectivity_kind() gui.separator(mirror_box) gui.comboBox(mirror_box, self, "has_surface_error", label="Surface Error", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.set_has_surface_error) self.surface_error_box = ShadowGui.widgetBox(mirror_box, "", addSpace=True, orientation="vertical", height=20) self.surface_error_box_empty = ShadowGui.widgetBox(mirror_box, "", addSpace=True, orientation="vertical", height=20) self.le_surface_error_files = ShadowGui.lineEdit(self.surface_error_box, self, "surface_error_files", "Surface Error File", labelWidth=150, valueType=str, orientation="horizontal", callback=self.kb.dump_surface_error_files) self.set_has_surface_error() self.is_on_init = False
def __init__(self): super().__init__() self.process_showers() box = ShadowGui.widgetBox(self.controlArea, "Reflectivity Parameters", orientation="vertical") idx = -1 #widget index 0 idx += 1 ShadowGui.lineEdit(box, self, "SYMBOL", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) #widget index 1 idx += 1 ShadowGui.lineEdit(box, self, "DENSITY", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) #widget index 2 idx += 1 ShadowGui.lineEdit(box, self, "SHADOW_FILE", label=self.unitLabels()[idx], addSpace=True, labelWidth=200, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) #widget index 3 idx += 1 ShadowGui.lineEdit(box, self, "E_MIN", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) #widget index 4 idx += 1 ShadowGui.lineEdit(box, self, "E_MAX", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) #widget index 5 idx += 1 ShadowGui.lineEdit(box, self, "E_STEP", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal") self.show_at(self.unitFlags()[idx], box) self.shadow_output = QTextEdit() self.shadow_output.setReadOnly(True) out_box = ShadowGui.widgetBox(self.controlArea, "System Output", addSpace=True, orientation="horizontal", height=150) out_box.layout().addWidget(self.shadow_output) box0 = gui.widgetBox(self.controlArea, "",orientation="horizontal") #widget buttons: compute, set defaults, help button = gui.button(box0, self, "Compute", callback=self.compute) button.setFixedHeight(45) button = gui.button(box0, self, "Defaults", callback=self.defaults) button.setFixedHeight(45) button = gui.button(box0, self, "Help", callback=self.help1) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self): super().__init__() self.process_showers() self.setFixedWidth(800) self.setFixedHeight(900) box = gui.widgetBox(self.controlArea, "Multilayer Parameters", orientation="vertical") idx = -1 # widget index 0 idx += 1 ShadowGui.lineEdit( box, self, "FILE", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal" ) self.show_at(self.unitFlags()[idx], box) # widget index 1 idx += 1 ShadowGui.lineEdit( box, self, "E_MIN", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 2 idx += 1 ShadowGui.lineEdit( box, self, "E_MAX", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 3 idx += 1 ShadowGui.lineEdit( box, self, "S_DENSITY", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 4 idx += 1 ShadowGui.lineEdit( box, self, "S_MATERIAL", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 5 idx += 1 ShadowGui.lineEdit( box, self, "E_DENSITY", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 6 idx += 1 ShadowGui.lineEdit( box, self, "E_MATERIAL", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 7 idx += 1 ShadowGui.lineEdit( box, self, "O_DENSITY", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 8 idx += 1 ShadowGui.lineEdit( box, self, "O_MATERIAL", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 9 idx += 1 gui.comboBox( box, self, "GRADE_DEPTH", label=self.unitLabels()[idx], addSpace=True, items=["No (Constant)", "thicknesses,gamma,rough_even and rough_off from file "], valueType=int, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 10 idx += 1 ShadowGui.lineEdit( box, self, "N_PAIRS", label=self.unitLabels()[idx], addSpace=True, valueType=int, validator=QIntValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 11 idx += 1 ShadowGui.lineEdit( box, self, "THICKNESS", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 12 idx += 1 ShadowGui.lineEdit( box, self, "GAMMA", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 13 idx += 1 ShadowGui.lineEdit( box, self, "ROUGHNESS_EVEN", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 14 idx += 1 ShadowGui.lineEdit( box, self, "ROUGHNESS_ODD", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 15 idx += 1 ShadowGui.lineEdit( box, self, "FILE_DEPTH", label=self.unitLabels()[idx], addSpace=True, labelWidth=450, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 16 idx += 1 gui.comboBox( box, self, "GRADE_SURFACE", label=self.unitLabels()[idx], addSpace=True, items=[ "No (Constant)", "thick and gamma graded (from spline files)", "thickness graded (from quadratic fit)", ], valueType=int, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 17 idx += 1 ShadowGui.lineEdit( box, self, "FILE_SHADOW", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 18 idx += 1 ShadowGui.lineEdit( box, self, "FILE_THICKNESS", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 19 idx += 1 ShadowGui.lineEdit( box, self, "FILE_GAMMA", label=self.unitLabels()[idx], addSpace=True, labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 20 idx += 1 ShadowGui.lineEdit( box, self, "AA0", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 21 idx += 1 ShadowGui.lineEdit( box, self, "AA1", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) # widget index 22 idx += 1 ShadowGui.lineEdit( box, self, "AA2", label=self.unitLabels()[idx], addSpace=True, valueType=float, validator=QDoubleValidator(), labelWidth=350, orientation="horizontal", ) self.show_at(self.unitFlags()[idx], box) self.shadow_output = QTextEdit() self.shadow_output.setReadOnly(True) out_box = ShadowGui.widgetBox( self.controlArea, "System Output", addSpace=True, orientation="horizontal", height=150 ) out_box.layout().addWidget(self.shadow_output) box0 = gui.widgetBox(self.controlArea, "", orientation="horizontal") # widget buttons: compute, set defaults, help button = gui.button(box0, self, "Compute", callback=self.compute) button.setFixedHeight(45) button = gui.button(box0, self, "Defaults", callback=self.defaults) button.setFixedHeight(45) button = gui.button(box0, self, "Help", callback=self.help1) button.setFixedHeight(45) gui.rubber(self.controlArea)
def __init__(self): super().__init__() tabs_setting = gui.tabWidget(self.controlArea) tabs_setting.setFixedWidth(450) gui.button(self.controlArea, self, "Refresh", callback=self.plot_results) # graph tab tab_gen = ShadowGui.createTabPage(tabs_setting, "General") # FOR FUTURE DEVELOPMENTS #tab_his = ShadowGui.createTabPage(tabs_setting, "Histograms") #tab_col = ShadowGui.createTabPage(tabs_setting, "Color") incremental_box = ShadowGui.widgetBox(tab_gen, "Incremental Result", addSpace=True, orientation="horizontal", height=80) gui.checkBox(incremental_box, self, "keep_result", "Keep Result") gui.button(incremental_box, self, "Clear", callback=self.clearResults) screen_box = ShadowGui.widgetBox(tab_gen, "Screen Position Settings", addSpace=True, orientation="vertical", height=140) self.image_plane_combo = gui.comboBox(screen_box, self, "image_plane", label="Position of the Image", items=["On Image Plane", "Retraced"], callback=self.set_ImagePlane, sendSelectedValue=False, orientation="horizontal") self.image_plane_box = ShadowGui.widgetBox(screen_box, "", addSpace=True, orientation="vertical", width=350, height=110) self.image_plane_box_empty = ShadowGui.widgetBox(screen_box, "", addSpace=True, orientation="vertical", width=350, height=110) ShadowGui.lineEdit(self.image_plane_box, self, "image_plane_new_position", "Image Plane new Position", labelWidth=220, valueType=float, orientation="horizontal") gui.comboBox(self.image_plane_box, self, "image_plane_rel_abs_position", label="Position Type", labelWidth=250, items=["Absolute", "Relative"], sendSelectedValue=False, orientation="horizontal") self.set_ImagePlane() general_box = ShadowGui.widgetBox(tab_gen, "General Settings", addSpace=True, orientation="vertical", height=350) self.x_column = gui.comboBox(general_box, self, "x_column_index", label="X Column",labelWidth=80, items=["1: X", "2: Y", "3: Z", "4: X'", "5: Y'", "6: Z'", "7: Es X", "8: Es Y", "9: Es Z", "10: Ray Flag", "11: Energy", "12: Ray Index", "13: Optical Path", "14: Phase s", "15: Phase p", "16: Ep X", "17: Ep Y", "18: Ep Z", "19: Wavelength", "20: R = sqrt(X^2 + Y^2 + Z^2)", "21: Theta (angle from Y axis)", "22: Magnitude = |Es| + |Ep|", "23: Total Intensity = |Es|^2 + |Ep|^2", "24: S Intensity = |Es|^2", "25: P Intensity = |Ep|^2", "26: |K|", "27: K X", "28: K Y", "29: K Z", "30: S0-stokes = |Es|^2 + |Ep|^2", "31: S1-stokes = |Es|^2 - |Ep|^2", "32: S2-stokes = 2|Es||Ep|cos(Phase s-Phase p)", "33: S3-stokes = 2|Es||Ep|sin(Phase s-Phase p)", ], sendSelectedValue=False, orientation="horizontal") gui.comboBox(general_box, self, "x_range", label="X Range", labelWidth=250, items=["<Default>", "Set.."], callback=self.set_XRange, sendSelectedValue=False, orientation="horizontal") self.xrange_box = ShadowGui.widgetBox(general_box, "", addSpace=True, orientation="vertical", width=420, height=100) self.xrange_box_empty = ShadowGui.widgetBox(general_box, "", addSpace=True, orientation="vertical", width=420, height=100) ShadowGui.lineEdit(self.xrange_box, self, "x_range_min", "X min", labelWidth=220, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.xrange_box, self, "x_range_max", "X max", labelWidth=220, valueType=float, orientation="horizontal") self.set_XRange() self.y_column = gui.comboBox(general_box, self, "y_column_index", label="Y Column",labelWidth=80, items=["1: X", "2: Y", "3: Z", "4: X'", "5: Y'", "6: Z'", "7: Es X", "8: Es Y", "9: Es Z", "10: Ray Flag", "11: Energy", "12: Ray Index", "13: Optical Path", "14: Phase s", "15: Phase p", "16: Ep X", "17: Ep Y", "18: Ep Z", "19: Wavelength", "20: R = sqrt(X^2 + Y^2 + Z^2)", "21: Theta (angle from Y axis)", "22: Magnitude = |Es| + |Ep|", "23: Total Intensity = |Es|^2 + |Ep|^2", "24: S Intensity = |Es|^2", "25: P Intensity = |Ep|^2", "26: |K|", "27: K X", "28: K Y", "29: K Z", "30: S0-stokes = |Es|^2 + |Ep|^2", "31: S1-stokes = |Es|^2 - |Ep|^2", "32: S2-stokes = 2|Es||Ep|cos(Phase s-Phase p)", "33: S3-stokes = 2|Es||Ep|sin(Phase s-Phase p)", ], sendSelectedValue=False, orientation="horizontal") gui.comboBox(general_box, self, "y_range", label="Y Range",labelWidth=250, items=["<Default>", "Set.."], callback=self.set_YRange, sendSelectedValue=False, orientation="horizontal") self.yrange_box = ShadowGui.widgetBox(general_box, "", addSpace=True, orientation="vertical", width=420, height=100) self.yrange_box_empty = ShadowGui.widgetBox(general_box, "", addSpace=True, orientation="vertical", width=420, height=100) ShadowGui.lineEdit(self.yrange_box, self, "y_range_min", "Y min", labelWidth=220, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.yrange_box, self, "y_range_max", "Y max", labelWidth=220, valueType=float, orientation="horizontal") self.set_YRange() gui.comboBox(general_box, self, "rays", label="Rays", labelWidth=250, items=["All rays", "Good Only", "Lost Only"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(general_box, self, "cartesian_axis", label="Cartesian Axis",labelWidth=300, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") histograms_box = ShadowGui.widgetBox(tab_gen, "Histograms settings", addSpace=True, orientation="vertical", height=70) ShadowGui.lineEdit(histograms_box, self, "number_of_bins", "Number of Bins", labelWidth=250, valueType=int, orientation="horizontal") self.image_box = gui.widgetBox(self.mainArea, "Plot Result", addSpace=True, orientation="vertical") self.image_box.setFixedHeight(self.IMAGE_HEIGHT) self.image_box.setFixedWidth(self.IMAGE_WIDTH) self.shadow_output = QtGui.QTextEdit() out_box = gui.widgetBox(self.mainArea, "Shadow Output", addSpace=True, orientation="horizontal") out_box.layout().addWidget(self.shadow_output) out_box.setFixedWidth(self.IMAGE_WIDTH) self.shadow_output.setFixedHeight(100) self.shadow_output.setFixedWidth(self.IMAGE_WIDTH-50)
def __init__(self): super().__init__() # self.resetSettings() ################################# # FIX A WEIRD BEHAVIOUR AFTER DISPLAY # THE WIDGET: PROBABLY ON SIGNAL MANAGER self.dumpSettings() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tabs_setting.setFixedWidth(495) tabs_setting.setFixedHeight(750) tab_bas = ShadowGui.createTabPage(tabs_setting, "Basic Setting") tab_adv = ShadowGui.createTabPage(tabs_setting, "Advanced Setting") ShadowGui.lineEdit(tab_bas, self, "p", "Distance Source - KB center (P) [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "q", "Distance KB center - Image plane (Q) [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "separation", "Separation between the Mirrors [cm]\n(from center of V.F.M. to center of H.F.M.) ", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "mirror_orientation_angle", "Mirror orientation angle [deg]\n(with respect to the previous o.e. for the first mirror)", labelWidth=350, valueType=float, orientation="horizontal") gui.comboBox(tab_bas, self, "use_different_focal_positions", label="Different Focal Positions", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.set_use_different_focal_positions) self.focal_positions_box = ShadowGui.widgetBox(tab_bas, "", addSpace=False, orientation="vertical", height=45) self.focal_positions_empty = ShadowGui.widgetBox(tab_bas, "", addSpace=False, orientation="vertical", height=45) ShadowGui.lineEdit(self.focal_positions_box, self, "focal_positions_p", "Focal Position P [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.focal_positions_box, self, "focal_positions_q", "Focal Position Q [cm]", labelWidth=350, valueType=float, orientation="horizontal") self.set_use_different_focal_positions() gui.separator(tab_bas, height=10) self.tab_mirrors = gui.tabWidget(tab_bas) tab_vertical = ShadowGui.createTabPage(self.tab_mirrors, "Vertical Focusing Mirror") tab_horizontal = ShadowGui.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]) adv_other_box = ShadowGui.widgetBox(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=310, items=["All", "Mirror", "Image", "None"], sendSelectedValue=False, orientation="horizontal") button_box = ShadowGui.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.resetSettings() ################################# # FIX A WEIRD BEHAVIOUR AFTER DISPLAY # THE WIDGET: PROBABLY ON SIGNAL MANAGER self.dumpSettings() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tabs_setting.setFixedWidth(495) tabs_setting.setFixedHeight(750) tab_bas = ShadowGui.createTabPage(tabs_setting, "Basic Setting") tab_adv = ShadowGui.createTabPage(tabs_setting, "Advanced Setting") ShadowGui.lineEdit(tab_bas, self, "p", "Distance Source - DCM center (P) [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "q", "Distance DCM center - Image plane (Q) [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "separation", "Separation between the Crystals [cm]\n(from center of 1st C. to center of 2nd C.) ", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(tab_bas, self, "photon_energy_ev", "Photon Eneergy [eV]", labelWidth=350, valueType=float, orientation="horizontal") self.le_reflectivity_file = ShadowGui.lineEdit(tab_bas, self, "reflectivity_file", "Reflectivity File", labelWidth=150, valueType=str, orientation="horizontal") gui.separator(tab_bas, height=10) self.tab_crystals = gui.tabWidget(tab_bas) tab_first_crystal = ShadowGui.createTabPage(self.tab_crystals, "First Crystal") tab_second_crystal = ShadowGui.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]) adv_other_box = ShadowGui.widgetBox(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=310, items=["All", "Mirror", "Image", "None"], sendSelectedValue=False, orientation="horizontal") button_box = ShadowGui.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 = ShadowGui.createTabPage(tabs_setting, "Basic Setting") tab_adv = ShadowGui.createTabPage(tabs_setting, "Advanced Setting") crl_box = ShadowGui.widgetBox(tab_bas, "C.R.L. Input Parameters", addSpace=False, orientation="vertical", height=100, width=450) ShadowGui.lineEdit(crl_box, self, "nlenses", "Number of lenses", labelWidth=350, valueType=int, orientation="horizontal") ShadowGui.lineEdit(crl_box, self, "slots_empty", "Number of empty slots", labelWidth=350, valueType=int, orientation="horizontal") ShadowGui.lineEdit(crl_box, self, "thickness", "Piling thickness [cm]", labelWidth=350, valueType=float, orientation="horizontal") lens_box = ShadowGui.widgetBox(tab_bas, "Single Lens Input Parameters", addSpace=False, orientation="vertical", height=500, width=450) ShadowGui.lineEdit(lens_box, self, "p", "Distance Source-First lens interface (P) [cm]", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(lens_box, self, "q", "Distance Last lens interface-Image plane (Q) [cm]", labelWidth=350, valueType=float, orientation="horizontal") gui.separator(lens_box) gui.comboBox(lens_box, self, "has_finite_diameter", label="Lens Diameter", labelWidth=350, items=["Finite", "Infinite"], callback=self.set_diameter, sendSelectedValue=False, orientation="horizontal") self.diameter_box = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) self.diameter_box_empty = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) ShadowGui.lineEdit(self.diameter_box, self, "diameter", "Lens Diameter Value [cm]", labelWidth=350, valueType=float, orientation="horizontal") self.set_diameter() gui.separator(lens_box) gui.comboBox(lens_box, self, "surface_shape", label="Surface Shape", labelWidth=350, items=["Sphere", "Paraboloid", "Plane"], callback=self.set_surface_shape, sendSelectedValue=False, orientation="horizontal") self.surface_shape_box = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) self.surface_shape_box_empty = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) ShadowGui.lineEdit(self.surface_shape_box, self, "radius", "Curvature Radius [cm]", labelWidth=350, valueType=float, orientation="horizontal") self.set_surface_shape() ShadowGui.lineEdit(lens_box, self, "interthickness", "Lens Thickness [cm]", labelWidth=350, valueType=float, orientation="horizontal") gui.comboBox(lens_box, self, "use_ccc", label="Use C.C.C.", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") gui.comboBox(lens_box, self, "convex_to_the_beam", label="Convexity of the first interface exposed to the beam\n(the second interface has opposite convexity)", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal") gui.separator(lens_box) gui.comboBox(lens_box, self, "is_cylinder", label="Cylindrical", labelWidth=350, items=["No", "Yes"], callback=self.set_cylindrical, sendSelectedValue=False, orientation="horizontal") self.box_cyl = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=25) self.box_cyl_empty = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=25) gui.comboBox(self.box_cyl, self, "cylinder_angle", label="Cylinder Angle (deg)", labelWidth=350, items=["0 (Meridional)", "90 (Sagittal)"], sendSelectedValue=False, orientation="horizontal") self.set_cylindrical() gui.separator(lens_box) gui.comboBox(lens_box, self, "ri_calculation_mode", label="Refraction Index calculation mode", labelWidth=350, items=["User Parameters", "Prerefl File"], callback=self.set_ri_calculation_mode, sendSelectedValue=False, orientation="horizontal") self.calculation_mode_1 = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=50) ShadowGui.lineEdit(self.calculation_mode_1, self, "refraction_index", "Refraction index", labelWidth=350, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.calculation_mode_1, self, "attenuation_coefficient", "Attenuation coefficient [cm-1]", labelWidth=350, valueType=float, orientation="horizontal") self.calculation_mode_2 = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=50) ShadowGui.lineEdit(self.calculation_mode_2, self, "prerefl_file", "File Prerefl", labelWidth=150, valueType=str, orientation="horizontal") self.set_ri_calculation_mode() adv_other_box = ShadowGui.widgetBox(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=310, items=["All", "Mirror", "Image", "None"], sendSelectedValue=False, orientation="horizontal") gui.separator(self.controlArea, height=80) button_box = ShadowGui.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.runaction = widget.OWAction("Send Data to Simulators", self) self.runaction.triggered.connect(self.send_data) 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.5, self.MAX_WIDTH)), round(min(geom.height()*0.5, self.MAX_HEIGHT)))) left_box_1 = ShadowGui.widgetBox(self.controlArea, "Electron Beam", addSpace=True, orientation="vertical") ShadowGui.lineEdit(left_box_1, self, "energy_in_GeV", "Energy [GeV]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "energy_spread", "Energy spread (relative)", labelWidth=300, valueType=int, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "current", "Current (A)", labelWidth=300, valueType=float, orientation="horizontal") gui.comboBox(left_box_1, self, "kind_of_beam", label="Kind of Beam", items=["General", "Pencil"], labelWidth=300, orientation="horizontal", callback=self.set_kind_of_beam) self.left_box_2 = ShadowGui.widgetBox(left_box_1, "", addSpace=True, orientation="vertical", height=200) ShadowGui.lineEdit(self.left_box_2, self, "electrons_per_bunch", "Number of electrons per bunch", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_xx", "Moment (spatial^2, horizontal) [m^2]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_xxp", "Moment (spatial-angular, horizontal) [m]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_xpxp", "Moment (angular^2, horizontal)", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_yy", "Moment (spatial^2, vertical) [m^2]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_yyp", "Moment (spatial-angular, vertical) [m]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(self.left_box_2, self, "moment_ypyp", "Moment (angular^2, vertical)", labelWidth=300, valueType=float, orientation="horizontal") self.left_box_2_hidden = ShadowGui.widgetBox(left_box_1, "", addSpace=True, orientation="vertical", height=200) self.set_kind_of_beam() left_box_3 = ShadowGui.widgetBox(self.controlArea, "Bending Magnet Parameters", addSpace=True, orientation="vertical") ShadowGui.lineEdit(left_box_3, self, "radius", "Magnetic Radius [m]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_3, self, "magnetic_field", "Magnetic Field [T]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_3, self, "length", "Arc length [m]", labelWidth=300, valueType=float, orientation="horizontal") left_box_4 = ShadowGui.widgetBox(self.controlArea, "Simulation Parameters", addSpace=True, orientation="vertical") ShadowGui.lineEdit(left_box_4, self, "e_min", "Energy min [eV]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_4, self, "e_max", "Energy max [eV]", labelWidth=300, valueType=float, orientation="horizontal") button_box = ShadowGui.widgetBox(self.controlArea, "", addSpace=False, orientation="horizontal") button = gui.button(button_box, self, "Send Data to Simulators", callback=self.send_data) 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) gui.rubber(self.controlArea)
def __init__(self, transfocator=None, parent=None, nlenses=30, slots_empty=0, thickness=625e-4, p=0.0, q=0.0, surface_shape=1, convex_to_the_beam=1, has_finite_diameter=0, diameter=0.0, is_cylinder=1, cylinder_angle=0.0, ri_calculation_mode=0, prerefl_file=Transfocator.NONE_SPECIFIED, refraction_index=1.0, attenuation_coefficient=0.0, radius=500e-2, interthickness=0.001, use_ccc=0): super().__init__(parent) self.setLayout(QtGui.QVBoxLayout()) self.layout().setAlignment(Qt.AlignTop) self.setFixedWidth(470) self.setFixedHeight(700) self.transfocator = transfocator self.nlenses = nlenses self.slots_empty = slots_empty self.thickness = thickness self.p = p self.q = q self.surface_shape = surface_shape self.convex_to_the_beam = convex_to_the_beam self.has_finite_diameter = has_finite_diameter self.diameter = diameter self.is_cylinder = is_cylinder self.cylinder_angle = cylinder_angle self.ri_calculation_mode = ri_calculation_mode self.prerefl_file = prerefl_file self.refraction_index = refraction_index self.attenuation_coefficient = attenuation_coefficient self.radius = radius self.interthickness = interthickness self.use_ccc = use_ccc crl_box = ShadowGui.widgetBox(self, "C.R.L. Input Parameters", addSpace=False, orientation="vertical", height=100, width=460) ShadowGui.lineEdit(crl_box, self, "nlenses", "Number of lenses", labelWidth=350, valueType=int, orientation="horizontal", callback=self.transfocator.dump_nlenses) ShadowGui.lineEdit(crl_box, self, "slots_empty", "Number of empty slots", labelWidth=350, valueType=int, orientation="horizontal", callback=self.transfocator.dump_slots_empty) ShadowGui.lineEdit(crl_box, self, "thickness", "Piling thickness [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_thickness) lens_box = ShadowGui.widgetBox(self, "Single Lens Input Parameters", addSpace=False, orientation="vertical", height=510, width=460) ShadowGui.lineEdit(lens_box, self, "p", "Distance Source-First lens interface (P) [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_p) ShadowGui.lineEdit(lens_box, self, "q", "Distance Last lens interface-Image plane (Q) [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_q) gui.separator(lens_box) gui.comboBox(lens_box, self, "has_finite_diameter", label="Lens Diameter", labelWidth=350, items=["Finite", "Infinite"], sendSelectedValue=False, orientation="horizontal", callback=self.set_diameter) self.diameter_box = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) self.diameter_box_empty = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) ShadowGui.lineEdit(self.diameter_box, self, "diameter", "Lens Diameter Value [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_diameter) self.set_diameter() gui.separator(lens_box) gui.comboBox(lens_box, self, "surface_shape", label="Surface Shape", labelWidth=350, items=["Sphere", "Paraboloid", "Plane"], sendSelectedValue=False, orientation="horizontal", callback=self.set_surface_shape) self.surface_shape_box = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) self.surface_shape_box_empty = ShadowGui.widgetBox(lens_box, "", addSpace=False, orientation="vertical", height=20) ShadowGui.lineEdit(self.surface_shape_box, self, "radius", "Curvature Radius [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_radius) self.set_surface_shape() ShadowGui.lineEdit(lens_box, self, "interthickness", "Lens Thickness [cm]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_interthickness) gui.comboBox(lens_box, self, "use_ccc", label="Use C.C.C.", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.transfocator.dump_use_ccc) gui.comboBox(lens_box, self, "convex_to_the_beam", label="Convexity of the first interface exposed to the beam\n(the second interface has opposite convexity)", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.transfocator.dump_convex_to_the_beam) gui.separator(lens_box) gui.comboBox(lens_box, self, "is_cylinder", label="Cylindrical", labelWidth=350, items=["No", "Yes"], sendSelectedValue=False, orientation="horizontal", callback=self.set_cylindrical) self.box_cyl = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=25) self.box_cyl_empty = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=25) gui.comboBox(self.box_cyl, self, "cylinder_angle", label="Cylinder Angle (deg)", labelWidth=350, items=["0 (Meridional)", "90 (Sagittal)"], sendSelectedValue=False, orientation="horizontal", callback=self.transfocator.dump_cylinder_angle) self.set_cylindrical() gui.separator(lens_box) gui.comboBox(lens_box, self, "ri_calculation_mode", label="Refraction Index calculation mode", labelWidth=350, items=["User Parameters", "Prerefl File"], sendSelectedValue=False, orientation="horizontal", callback=self.set_ri_calculation_mode) self.calculation_mode_1 = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=50) ShadowGui.lineEdit(self.calculation_mode_1, self, "refraction_index", "Refraction index", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_refraction_index) ShadowGui.lineEdit(self.calculation_mode_1, self, "attenuation_coefficient", "Attenuation coefficient [cm-1]", labelWidth=350, valueType=float, orientation="horizontal", callback=self.transfocator.dump_attenuation_coefficient) self.calculation_mode_2 = ShadowGui.widgetBox(lens_box, "", addSpace=True, orientation="vertical", height=50) self.le_prerefl_file = ShadowGui.lineEdit(self.calculation_mode_2, self, "prerefl_file", "File Prerefl", labelWidth=150, valueType=str, orientation="horizontal", callback=self.transfocator.dump_prerefl_file) self.set_ri_calculation_mode() self.is_on_init = False
def __init__(self): super().__init__() left_box_1 = ShadowGui.widgetBox(self.controlArea, "Monte Carlo and Energy Spectrum", addSpace=True, orientation="vertical") ShadowGui.lineEdit(left_box_1, self, "number_of_rays", "Number of Rays", tooltip="Number of Rays", labelWidth=300, valueType=int, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "seed", "Seed", tooltip="Seed", labelWidth=300, valueType=int, orientation="horizontal") self.le_e_min = ShadowGui.lineEdit(left_box_1, self, "e_min", "Minimum Energy (eV)", tooltip="Minimum Energy (eV)", labelWidth=300, valueType=float, orientation="horizontal") self.le_e_max = ShadowGui.lineEdit(left_box_1, self, "e_max", "Maximum Energy (eV)", tooltip="Maximum Energy (eV)", labelWidth=300, valueType=float, orientation="horizontal") gui.comboBox(left_box_1, self, "generate_polarization_combo", label="Generate Polarization", items=["Only Parallel", "Only Perpendicular", "Total"], labelWidth=300, orientation="horizontal") left_box_2 = ShadowGui.widgetBox(self.controlArea, "Machine Parameters", addSpace=True, orientation="vertical") self.le_sigma_x = ShadowGui.lineEdit(left_box_2, self, "sigma_x", "Sigma X [cm]", labelWidth=300, tooltip="Sigma X [cm]", valueType=float, orientation="horizontal") self.le_sigma_z = ShadowGui.lineEdit(left_box_2, self, "sigma_z", "Sigma Z [cm]", labelWidth=300, tooltip="Sigma Z [cm]", valueType=float, orientation="horizontal") self.le_emittance_x = ShadowGui.lineEdit(left_box_2, self, "emittance_x", "Emittance X [rad.cm]", labelWidth=300, tooltip="Emittance X [rad.cm]", valueType=float, orientation="horizontal") self.le_emittance_z = ShadowGui.lineEdit(left_box_2, self, "emittance_z", "Emittance Z [rad.cm]", labelWidth=300, tooltip="Emittance Z [rad.cm]", valueType=float, orientation="horizontal") self.le_energy = ShadowGui.lineEdit(left_box_2, self, "energy", "Energy [GeV]", tooltip="Energy [GeV]", labelWidth=300, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_2, self, "distance_from_waist_x", "Distance from Waist X [cm]", labelWidth=300, tooltip="Distance from Waist X [cm]", valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_2, self, "distance_from_waist_z", "Distance from Waist Z [cm]", labelWidth=300, tooltip="Distance from Waist Z [cm]", valueType=float, orientation="horizontal") left_box_3 = ShadowGui.widgetBox(self.controlArea, "Bending Magnet Parameters", addSpace=True, orientation="vertical") self.le_magnetic_radius = ShadowGui.lineEdit(left_box_3, self, "magnetic_radius", "Magnetic Radius [m]", labelWidth=300, callback=self.calculateMagneticField, tooltip="Magnetic Radius [m]", valueType=float, orientation="horizontal") self.le_magnetic_field = ShadowGui.lineEdit(left_box_3, self, "magnetic_field", "Magnetic Field [T]", labelWidth=300, callback=self.calculateMagneticRadius, tooltip="Magnetic Field [T]", valueType=float, orientation="horizontal") self.le_horizontal_half_divergence_from = ShadowGui.lineEdit(left_box_3, self, "horizontal_half_divergence_from", "Horizontal half-divergence [rads] From [+]", labelWidth=300, tooltip="Horizontal half-divergence [rads] From [+]", valueType=float, orientation="horizontal") self.le_horizontal_half_divergence_to = ShadowGui.lineEdit(left_box_3, self, "horizontal_half_divergence_to", "Horizontal half-divergence [rads] To [-]", labelWidth=300, tooltip="Horizontal half-divergence [rads] To [-]", valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_3, self, "max_vertical_half_divergence_from", "Max vertical half-divergence [rads] From [+]", labelWidth=300, tooltip="Max vertical half-divergence [rads] From [+]", valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_3, self, "max_vertical_half_divergence_to", "Max vertical half-divergence [rads] To [-]", labelWidth=300, 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=300, orientation="horizontal") left_box_4 = ShadowGui.widgetBox(self.controlArea, "Reject Rays", addSpace=True, orientation="vertical") left_box_4.setFixedHeight(110) 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=200, callback=self.set_OptimizeSource, orientation="horizontal") self.optimize_file_name_box = ShadowGui.widgetBox(left_box_4, "", addSpace=False, orientation="vertical") file_box = ShadowGui.widgetBox(self.optimize_file_name_box, "", addSpace=True, orientation="horizontal", height=25) self.le_optimize_file_name = ShadowGui.lineEdit(file_box, self, "optimize_file_name", "File Name", labelWidth=150, valueType=str, orientation="horizontal") pushButton = gui.button(file_box, self, "...") pushButton.clicked.connect(self.selectOptimizeFile) ShadowGui.lineEdit(self.optimize_file_name_box, self, "max_number_of_rejected_rays", "Max number of rejected rays (set 0 for infinity)", labelWidth=300, valueType=int, orientation="horizontal") self.set_OptimizeSource() button_box = ShadowGui.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(100) gui.rubber(self.controlArea) gui.rubber(self.mainArea)
def __init__(self, show_automatic_box=True): 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.WIDGET_WIDTH)), round(min(geom.height()*0.95, self.WIDGET_HEIGHT)))) gen_box = gui.widgetBox(self.mainArea, "Beamline Info", addSpace=True, orientation="horizontal") tabs_setting = gui.tabWidget(gen_box) tabs_setting.setFixedHeight(self.WIDGET_HEIGHT-60) tabs_setting.setFixedWidth(self.WIDGET_WIDTH-60) tab_sys = ShadowGui.createTabPage(tabs_setting, "Sys Info") tab_mir = ShadowGui.createTabPage(tabs_setting, "OE Info") tab_sou = ShadowGui.createTabPage(tabs_setting, "Source Info") tab_scr = ShadowGui.createTabPage(tabs_setting, "Python Script") tab_out = ShadowGui.createTabPage(tabs_setting, "System Output") self.sysInfo = QtGui.QTextEdit() self.sysInfo.setReadOnly(True) self.sysInfo.setMaximumHeight(self.WIDGET_HEIGHT-100) self.mirInfo = QtGui.QTextEdit() self.mirInfo.setReadOnly(True) self.mirInfo.setMaximumHeight(self.WIDGET_HEIGHT-100) self.sourceInfo = QtGui.QTextEdit() self.sourceInfo.setReadOnly(True) self.sourceInfo.setMaximumHeight(self.WIDGET_HEIGHT-100) self.pythonScript = QtGui.QTextEdit() self.pythonScript.setReadOnly(False) # asked by Manolo self.pythonScript.setMaximumHeight(self.WIDGET_HEIGHT - 300) sys_box = ShadowGui.widgetBox(tab_sys, "", addSpace=True, orientation="horizontal", height = self.WIDGET_HEIGHT-80, width = self.WIDGET_WIDTH-80) sys_box.layout().addWidget(self.sysInfo) mir_box = ShadowGui.widgetBox(tab_mir, "", addSpace=True, orientation="horizontal", height = self.WIDGET_HEIGHT-80, width = self.WIDGET_WIDTH-80) mir_box.layout().addWidget(self.mirInfo) source_box = ShadowGui.widgetBox(tab_sou, "", addSpace=True, orientation="horizontal", height = self.WIDGET_HEIGHT-80, width = self.WIDGET_WIDTH-80) source_box.layout().addWidget(self.sourceInfo) script_box = ShadowGui.widgetBox(tab_scr, "", addSpace=True, orientation="vertical", height=self.WIDGET_HEIGHT - 80, width=self.WIDGET_WIDTH - 80) script_box.layout().addWidget(self.pythonScript) console_box = ShadowGui.widgetBox(script_box, "", addSpace=True, orientation="vertical", height=150, width=self.WIDGET_WIDTH - 80) self.console = PythonConsole(self.__dict__, self) console_box.layout().addWidget(self.console) self.shadow_output = QtGui.QTextEdit() self.shadow_output.setReadOnly(True) out_box = ShadowGui.widgetBox(tab_out, "System Output", addSpace=True, orientation="horizontal", height=self.WIDGET_HEIGHT - 80) out_box.layout().addWidget(self.shadow_output) ############################# button_box = ShadowGui.widgetBox(tab_scr, "", 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)
def __init__(self): super().__init__() # self.resetSettings() ################################# # FIX A WEIRD BEHAVIOUR AFTER DISPLAY # THE WIDGET: PROBABLY ON SIGNAL MANAGER self.dumpSettings() self.controlArea.setFixedWidth(self.CONTROL_AREA_WIDTH) tabs_setting = gui.tabWidget(self.controlArea) tabs_setting.setFixedWidth(495) tabs_setting.setFixedHeight(750) tab_bas = ShadowGui.createTabPage(tabs_setting, "Basic Setting") tab_adv = ShadowGui.createTabPage(tabs_setting, "Advanced Setting") tabs_button_box = ShadowGui.widgetBox(tab_bas, "", addSpace=False, orientation="horizontal") gui.separator(tabs_button_box) 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) gui.separator(tabs_button_box) self.tab_crls = gui.tabWidget(tab_bas) self.crl_box_array = [] for index in range(len(self.p)): tab_crl = ShadowGui.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) adv_other_box = ShadowGui.widgetBox(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=310, items=["All", "Mirror", "Image", "None"], sendSelectedValue=False, orientation="horizontal") button_box = ShadowGui.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): self.setFixedWidth(590) self.setFixedHeight(550) left_box_1 = ShadowGui.widgetBox(self.controlArea, "CCD Image", addSpace=True, orientation="vertical") gui.comboBox(left_box_1, self, "is_textual", label="Image Type", labelWidth=250, items=["JPEG/PNG", "Textual"], sendSelectedValue=False, orientation="horizontal", callback=self.setTextual) ######################################## self.select_file_box_1 = ShadowGui.widgetBox(left_box_1, "Textual Image Parameters", addSpace=True, orientation="horizontal", height=250) self.le_image_txt_file_name = ShadowGui.lineEdit(self.select_file_box_1, self, "image_file_name", "Image File Name", labelWidth=120, valueType=str, orientation="horizontal") self.le_image_txt_file_name.setFixedWidth(300) pushButton = gui.button(self.select_file_box_1, self, "...") pushButton.clicked.connect(self.selectTxtFile) self.select_file_box_2 = ShadowGui.widgetBox(left_box_1, "Image Parameters", addSpace=True, orientation="vertical", height=250) select_file_box_2_int = ShadowGui.widgetBox(self.select_file_box_2, "", addSpace=True, orientation="horizontal") self.le_image_file_name = ShadowGui.lineEdit(select_file_box_2_int, self, "image_file_name", "Image File Name", labelWidth=120, valueType=str, orientation="horizontal") self.le_image_file_name.setFixedWidth(300) pushButton = gui.button(select_file_box_2_int, self, "...") pushButton.clicked.connect(self.selectFile) figure_box = ShadowGui.widgetBox(self.select_file_box_2, "Preview", addSpace=True, orientation="vertical", width=350, height=180) self.preview_box = QtGui.QLabel("") self.preview_box.setFixedHeight(100) figure_box.layout().addWidget(self.preview_box) le = ShadowGui.lineEdit(figure_box, self, "number_of_x_pixels", "Number of x Pixels", labelWidth=200, valueType=int, orientation="horizontal") le.setReadOnly(True) font = QtGui.QFont(le.font()) font.setBold(True) le.setFont(font) palette = QtGui.QPalette(le.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)) le.setPalette(palette) le = ShadowGui.lineEdit(figure_box, self, "number_of_z_pixels", "Number of z Pixels", labelWidth=200, valueType=int, orientation="horizontal") le.setReadOnly(True) font = QtGui.QFont(le.font()) font.setBold(True) le.setFont(font) palette = QtGui.QPalette(le.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)) le.setPalette(palette) ######################################## self.setTextual() self.loadImage() ShadowGui.lineEdit(left_box_1, self, "pixel_size", "Pixel Size [um]", labelWidth=200, valueType=float, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "number_of_x_bins", "Number of Bin per Pixel [x]", labelWidth=200, valueType=int, orientation="horizontal") ShadowGui.lineEdit(left_box_1, self, "number_of_z_bins", "Number of Bin per Pixel [z]", labelWidth=200, valueType=int, orientation="horizontal") gui.checkBox(left_box_1, self, "flip_vertically", "Flip Vertically") gui.checkBox(left_box_1, self, "flip_horizontally", "Flip Horizontally") gui.separator(self.controlArea) button = gui.button(self.controlArea, self, "Convert To Beam", callback=self.convertToBeam) button.setFixedHeight(45) gui.rubber(self.controlArea)