def __init__(self):
        graphical_Options=ow_optical_element.GraphicalOptions(is_grating=True)

        super().__init__(graphical_Options)

        gui.rubber(self.controlArea)

        gui.rubber(self.mainArea)
示例#2
0
    def __init__(self):
        graphical_Options = ow_optical_element.GraphicalOptions(is_empty=True)

        super().__init__(graphical_Options)

        self.file_to_write_out = 3
        self.write_out_inc_ref_angles = 0

        gui.rubber(self.controlArea)

        gui.rubber(self.mainArea)
    def __init__(self):
        graphical_Options = ow_optical_element.GraphicalOptions(is_mirror=True)

        super().__init__(graphical_Options)

        tabs = gui.tabWidget(
            oasysgui.createTabPage(self.tabs_basic_setting, "Bender"))

        tab_bender = oasysgui.createTabPage(tabs, "Bender Setting")

        surface_box = oasysgui.widgetBox(tab_bender,
                                         "Surface Setting",
                                         addSpace=False,
                                         orientation="vertical")

        oasysgui.lineEdit(surface_box,
                          self,
                          "bender_bin_x",
                          "bins Sagittal",
                          labelWidth=260,
                          valueType=int,
                          orientation="horizontal")
        oasysgui.lineEdit(surface_box,
                          self,
                          "bender_bin_y",
                          "bins Transversal",
                          labelWidth=260,
                          valueType=int,
                          orientation="horizontal")

        material_box = oasysgui.widgetBox(tab_bender,
                                          "Bender Setting",
                                          addSpace=False,
                                          orientation="vertical")

        self.le_E = oasysgui.lineEdit(material_box,
                                      self,
                                      "E",
                                      "Young's Modulus ",
                                      labelWidth=260,
                                      valueType=float,
                                      orientation="horizontal")
        self.le_h = oasysgui.lineEdit(material_box,
                                      self,
                                      "h",
                                      "Thickness ",
                                      labelWidth=260,
                                      valueType=float,
                                      orientation="horizontal")

        gui.comboBox(material_box,
                     self,
                     "kind_of_bender",
                     label="Kind Of Bender ",
                     items=["Single Momentum", "Double Momentum"],
                     labelWidth=150,
                     orientation="horizontal",
                     callback=self.set_kind_of_bender)

        gui.comboBox(material_box,
                     self,
                     "shape",
                     label="Shape ",
                     items=["Trapezium", "Rectangle"],
                     labelWidth=150,
                     orientation="horizontal",
                     callback=self.set_shape)

        tab_fit = oasysgui.createTabPage(tabs, "Fit Setting")

        fit_box = oasysgui.widgetBox(tab_fit,
                                     "",
                                     addSpace=False,
                                     orientation="vertical")

        file_box = oasysgui.widgetBox(fit_box,
                                      "",
                                      addSpace=False,
                                      orientation="horizontal",
                                      height=25)
        self.le_output_file_name = oasysgui.lineEdit(file_box,
                                                     self,
                                                     "output_file_name",
                                                     "Out File Name",
                                                     labelWidth=100,
                                                     valueType=str,
                                                     orientation="horizontal")
        gui.button(file_box,
                   self,
                   "...",
                   callback=self.select_output_file,
                   width=20)

        length_box = oasysgui.widgetBox(fit_box,
                                        "",
                                        addSpace=False,
                                        orientation="horizontal")

        self.cb_optimized_length = gui.comboBox(length_box,
                                                self,
                                                "which_length",
                                                label="Optimized Length ",
                                                items=["Total", "Partial"],
                                                labelWidth=150,
                                                orientation="horizontal",
                                                callback=self.set_which_length)
        self.le_optimized_length = oasysgui.lineEdit(length_box,
                                                     self,
                                                     "optimized_length",
                                                     " ",
                                                     labelWidth=10,
                                                     valueType=float,
                                                     orientation="horizontal")
        self.set_which_length()

        gui.separator(fit_box)

        def add_parameter_box(container_box, variable, label):
            box = oasysgui.widgetBox(container_box,
                                     "",
                                     addSpace=False,
                                     orientation="horizontal")
            oasysgui.lineEdit(box,
                              self,
                              variable,
                              label,
                              labelWidth=50,
                              valueType=float,
                              orientation="horizontal")
            gui.label(box, self, " ", labelWidth=58)

            box = oasysgui.widgetBox(container_box,
                                     "",
                                     addSpace=False,
                                     orientation="horizontal")

            setattr(
                self, "le_" + variable + "_min",
                oasysgui.lineEdit(box,
                                  self,
                                  variable + "_min",
                                  "Min",
                                  labelWidth=50,
                                  valueType=float,
                                  orientation="horizontal"))
            setattr(
                self, "le_" + variable + "_max",
                oasysgui.lineEdit(box,
                                  self,
                                  variable + "_max",
                                  "Max",
                                  labelWidth=35,
                                  valueType=float,
                                  orientation="horizontal"))

            gui.checkBox(box,
                         self,
                         variable + "_fixed",
                         "Fixed",
                         callback=getattr(self, "set_" + variable))

            box = oasysgui.widgetBox(container_box,
                                     "",
                                     addSpace=False,
                                     orientation="horizontal")

            le = oasysgui.lineEdit(box,
                                   self,
                                   variable + "_out",
                                   "Fitted",
                                   labelWidth=50,
                                   valueType=float,
                                   orientation="horizontal")
            le.setEnabled(False)
            le.setStyleSheet(
                "color: blue; background-color: rgb(254, 244, 205); font:bold")

            def set_variable_fit():
                setattr(self, variable, getattr(self, variable + "_out"))

            gui.button(box,
                       self,
                       "<- Use",
                       width=58,
                       callback=set_variable_fit)

            getattr(self, "set_" + variable)()

        m1_box = oasysgui.widgetBox(fit_box,
                                    "",
                                    addSpace=False,
                                    orientation="vertical")
        gui.separator(fit_box, 10)
        self.ratio_box = oasysgui.widgetBox(fit_box,
                                            "",
                                            addSpace=False,
                                            orientation="vertical")
        gui.separator(fit_box, 10)
        self.e_box = oasysgui.widgetBox(fit_box,
                                        "",
                                        addSpace=False,
                                        orientation="vertical")
        gui.separator(fit_box, 10)

        add_parameter_box(m1_box, "M1", "M1")
        add_parameter_box(self.ratio_box, "ratio", "M1/M2")
        add_parameter_box(self.e_box, "e", "e")

        self.set_kind_of_bender()
        self.set_shape()

        #######################################################

        plot_tab = oasysgui.createTabPage(self.main_tabs, "Bender Plots")

        view_box = oasysgui.widgetBox(plot_tab,
                                      "Plotting Style",
                                      addSpace=False,
                                      orientation="vertical",
                                      width=350)

        self.view_type_combo = gui.comboBox(view_box,
                                            self,
                                            "show_bender_plots",
                                            label="Show Plots",
                                            labelWidth=220,
                                            items=["No", "Yes"],
                                            sendSelectedValue=False,
                                            orientation="horizontal")

        bender_tabs = oasysgui.tabWidget(plot_tab)

        tabs = [
            oasysgui.createTabPage(bender_tabs, "Bender vs. Ideal (1D)"),
            oasysgui.createTabPage(bender_tabs, "Ideal - Bender (1D)"),
            oasysgui.createTabPage(bender_tabs, "Ideal - Bender (3D)"),
            oasysgui.createTabPage(bender_tabs, "Figure Error (3D)"),
            oasysgui.createTabPage(bender_tabs,
                                   "Ideal - Bender + Figure Error (3D)")
        ]

        def create_figure_canvas(mode="3D"):
            figure = Figure(figsize=(100, 100))
            figure.patch.set_facecolor('white')
            if mode == "3D": figure.add_subplot(111, projection='3d')
            else: figure.add_subplot(111)

            figure_canvas = FigureCanvasQTAgg(figure)
            figure_canvas.setFixedWidth(self.IMAGE_WIDTH)
            figure_canvas.setFixedHeight(self.IMAGE_HEIGHT - 10)

            return figure_canvas

        self.figure_canvas = [
            create_figure_canvas("1D"),
            create_figure_canvas("1D"),
            create_figure_canvas(),
            create_figure_canvas(),
            create_figure_canvas()
        ]

        for tab, figure_canvas in zip(tabs, self.figure_canvas):
            tab.layout().addWidget(figure_canvas)

        gui.rubber(self.controlArea)
        gui.rubber(self.mainArea)