Esempio n. 1
0
    def __init__(self):
        self.root_window = Tk()
        self.vframe = VerticalScrolledFrame(self.root_window)
        self.vframe.pack(fill=BOTH, expand=1)
        self.window = self.vframe.interior
        self.sections = []

        self.initialize_window()
Esempio n. 2
0
    def create_window(self):
        self.window = Toplevel(self.parent_window)
        self.window.title("Ingredients Information")
        self.window.minsize(500, 600)
        self.vframe = VerticalScrolledFrame(self.window)
        self.vframe.pack(fill=BOTH, expand=1)
        self.ingredients_window = self.vframe.interior
        self.ingredients_window.grid_rowconfigure(0, weight=1)
        self.ingredients_window.grid_rowconfigure(1, weight=1)
        self.ingredients_window.grid_rowconfigure(2, weight=1)
        self.ingredients_window.grid_columnconfigure(0, weight=1)


        #global param frame
        global_frame = LabelFrame(self.ingredients_window, text="Global Parameters")
        global_frame.grid(row=0, column=0, padx=20, pady=20, sticky=N+S+W+E)

        global_label = Label(global_frame, text="Global Parameters")
        global_label.grid(row=0, column=0, padx=20, sticky=W)
        global_box = Text(global_frame, height=5, width=80)
        if self.ingredients_info['global'][0] is not None:
            global_box.insert('1.0', self.ingredients_info['global'][0])
        else:
            global_box.insert('1.0', '\n'.join(["%s    %s" % (key, value) for key, value in self.keywords]))
        global_box.grid(row=1, column=0, padx=20, pady=5)
        self.ingredients_info['global'][1] = global_box 

        self.ingredients_frame = LabelFrame(self.ingredients_window, text="Ingredients information")
        self.ingredients_frame.grid(row=1, column=0, padx=20, pady=5, sticky=N+S+W+E)

        self.ingredients_frame.grid_rowconfigure(0, weight=1)
        self.ingredients_frame.grid_columnconfigure(0, weight=1)

        #ingredients frames
        for rownum in xrange(self.num_ing_fields):
            self.create_ingredient_fields(self.ingredients_frame, rownum) 

        self.add_button = Button(self.ingredients_frame, text="Add more Ingredients", command=self.add_ingredients)
        self.add_button.grid(row=self.num_ing_fields + 1, column=0, pady=10, padx=10)

        #save button
        save_button = Button(self.ingredients_window, text="Save", command=self.save)
        save_button.grid(row=2, column=0, padx=20, pady=10, sticky=N+S+W+E)
Esempio n. 3
0
    def create_window(self):
        self.window = ttk.Toplevel(self.parent_window)
        self.window.title("NEB Information")
        self.window.minsize(500, 500)
        self.vframe = VerticalScrolledFrame(self.window)
        self.vframe.pack(fill=BOTH, expand=1)
        self.neb_window = self.vframe.interior
        self.neb_window.grid_rowconfigure(0, weight=1)
        self.neb_window.grid_columnconfigure(0, weight=1)

        neb_frame = LabelFrame(self.neb_window, text="NEB")
        neb_frame.grid(row=0, column=0, padx=20, pady=20)
        neb_frame.grid_rowconfigure(0, weight=1)
        neb_frame.grid_columnconfigure(0, weight=1)

        #frame for images and button
        frame1 = Frame(neb_frame)
        frame1.grid(row=0, column=0)
        frame1.grid_rowconfigure(0, weight=1)
        frame1.grid_rowconfigure(1, weight=1)
        frame1.grid_columnconfigure(0, weight=1)
        frame1.grid_columnconfigure(1, weight=1)
        frame1.grid_columnconfigure(2, weight=1)

        #add images
        label = Label(frame1, text="IMAGES")
        label.grid(row=0, column=0, sticky=E, pady=10, padx=10)
        images_val = StringVar(frame1)
        if self.neb_info['images'][0] is not None:
            images_val.set(self.neb_info['images'][0])
        images_menu = Entry(frame1, textvariable=images_val)
        images_menu.grid(row=0, column=1, sticky=W, pady=10, padx=10)
        self.neb_info["images"] = [images_val.get(), images_val]
        images_btn = Button(frame1,
                            text="Add Posfiles",
                            command=self.create_window_with_posfiles)
        images_btn.grid(row=0, column=2, sticky=W, pady=10, padx=10)

        #frame for entities
        frame2 = Frame(neb_frame)
        frame2.grid(row=1, column=0)

        #a label frame to add neb related information
        self.neb_entities_frame = LabelFrame(frame2, text="NEB ENTITIES")
        self.neb_entities_frame.grid(row=0,
                                     column=0,
                                     columnspan=3,
                                     padx=10,
                                     pady=10)

        for rownum in xrange(self.num_neb_fields):
            self.create_neb_fields(self.neb_entities_frame, rownum)

        self.add_button = Button(self.neb_entities_frame,
                                 text="Add more neb",
                                 command=self.add_elements)
        self.add_button.grid(row=self.num_neb_fields + 1,
                             column=0,
                             columnspan=6,
                             pady=10,
                             padx=10)

        #save button
        save_button = Button(neb_frame, text="Save", command=self.save)
        save_button.grid(row=3, column=0, columnspan=2, padx=20, pady=10)
Esempio n. 4
0
    def create_window(self):
        self.window = ttk.Toplevel(self.parent_window)
        self.window.title("Structure Information")
        self.window.minsize(500, 500)
        self.vframe = VerticalScrolledFrame(self.window)
        self.vframe.pack(fill=BOTH, expand=1)
        self.structure_window = self.vframe.interior
        self.structure_window.grid_rowconfigure(0, weight=1)
        self.structure_window.grid_columnconfigure(0, weight=1)
        self.structure_window.grid_rowconfigure(0, weight=1)
        self.structure_window.grid_columnconfigure(0, weight=1)

        structure_frame = LabelFrame(self.structure_window, text="Structure")
        structure_frame.grid(row=0, column=0, padx=20, pady=20)
        structure_frame.grid_rowconfigure(0, weight=1)
        structure_frame.grid_rowconfigure(1, weight=1)
        structure_frame.grid_columnconfigure(0, weight=1)
        structure_frame.grid_columnconfigure(1, weight=1)

        #add coordtype
        label = Label(structure_frame, text="COORD_TYPE")
        label.grid(row=0, column=0, sticky=E, pady=10, padx=10)
        coord_type = StringVar(structure_frame)
        coord_type.set("fractional")
        if self.structure_info['coord_type'][0] is not None:
            coord_type.set(self.structure_info['coord_type'][0])
        coord_type_option = OptionMenu(structure_frame, coord_type,
                                       "fractional", "cartesian")
        coord_type_option.grid(row=0, column=1, sticky=W, pady=10, padx=10)
        self.structure_info["coord_type"] = [coord_type.get(), coord_type]

        #pos file
        label = Label(structure_frame, text="POSFILE")
        label.grid(row=1, column=0, sticky=E, pady=10, padx=10)
        text_val = StringVar()
        if self.structure_info['posfile'][0] is not None:
            text_val.set(self.structure_info['posfile'][0])
        text = Entry(structure_frame, textvariable=text_val)
        text.grid(row=1, column=1, sticky=W, pady=10, padx=10)
        self.structure_info['posfile'] = [text_val.get(), text_val]

        #pos file
        label = Label(structure_frame, text="LATTICE")
        label.grid(row=2, column=0, sticky=E, pady=10, padx=10)
        text = Text(structure_frame, height=5, width=30)
        if self.structure_info['lattice'][0] is not None:
            text.insert('1.0', self.structure_info['lattice'][0])
        text.grid(row=2, column=1, sticky=W, pady=10, padx=10)
        self.structure_info['lattice'][1] = text

        #label frame to add elements info
        self.elements_frame = LabelFrame(structure_frame,
                                         text="ELEMENTS INFORMATION")
        self.elements_frame.grid(row=3,
                                 column=0,
                                 columnspan=2,
                                 pady=10,
                                 padx=10)
        #create field headers
        id_label = Label(self.elements_frame, text="ID")
        id_label.grid(row=0, column=0, padx=10, pady=10, sticky=W)
        element_label = Label(self.elements_frame, text="ELEMENT")
        element_label.grid(row=0, column=1, padx=10, pady=10, sticky=W)
        coordinates_label = Label(self.elements_frame, text="COORDINATES")
        coordinates_label.grid(row=0, column=2, padx=10, pady=10, sticky=W)

        for row_num in xrange(self.num_elt_fields + 1):
            if row_num == 0:
                continue
            self.create_element_fields(self.elements_frame, row_num)

        self.add_button = Button(self.elements_frame,
                                 text="Add more elements",
                                 command=self.add_elements)
        self.add_button.grid(row=self.num_elt_fields + 1,
                             column=0,
                             columnspan=3,
                             pady=10,
                             padx=10)

        #save button
        save_button = Button(structure_frame, text="Save", command=self.save)
        save_button.grid(row=4, column=0, columnspan=2, padx=20, pady=10)
Esempio n. 5
0
    def create_window(self):
        self.window = ttk.Toplevel(self.parent_window)
        self.window.title("Defects Information")
        self.window.minsize(500, 500)
        self.vframe = VerticalScrolledFrame(self.window)
        self.vframe.pack(fill=BOTH, expand=1)
        self.defects_window = self.vframe.interior
        self.defects_window.grid_rowconfigure(0, weight=1)
        self.defects_window.grid_columnconfigure(0, weight=1)

        defects_frame = LabelFrame(self.defects_window, text="Defects")
        defects_frame.grid(row=0, column=0, padx=20, pady=20)
        defects_frame.grid_rowconfigure(0, weight=1)
        defects_frame.grid_rowconfigure(1, weight=1)
        defects_frame.grid_columnconfigure(0, weight=1)
        defects_frame.grid_columnconfigure(1, weight=1)

        #add coordtype
        label = Label(defects_frame, text="COORD_TYPE")
        label.grid(row=0, column=0, sticky=E, pady=10, padx=10)
        coord_type = StringVar(defects_frame)
        coord_type.set("fractional")
        if self.defects_info['coord_type'][0] is not None:
            coord_type.set(self.defects_info['coord_type'][0])
        coord_type_option = OptionMenu(defects_frame, coord_type, "fractional",
                                       "cartesian")
        coord_type_option.grid(row=0, column=1, sticky=W, pady=10, padx=10)
        self.defects_info["coord_type"] = [coord_type.get(), coord_type]
        #add posfile
        label = Label(defects_frame, text="POS FILE")
        label.grid(row=1, column=0, sticky=E, pady=10, padx=10)
        pos_value = StringVar(defects_frame)
        pos_value.set("")
        if self.defects_info['posfile'][0] is not None:
            pos_value.set(self.defects_info['posfile'][0])
        pos_entry = Entry(defects_frame, textvariable=pos_value)
        pos_entry.grid(row=1, column=1, sticky=W, pady=10, padx=10)
        self.defects_info["posfile"] = [pos_value.get(), pos_value]

        #a label frame to add defects related information
        self.defects_entities_frame = LabelFrame(defects_frame,
                                                 text="DEFECT ENTITIES")
        self.defects_entities_frame.grid(row=2,
                                         column=0,
                                         columnspan=2,
                                         padx=10,
                                         pady=10)
        #create field headers

        for rownum in xrange(self.num_defect_fields):
            self.create_defect_fields(self.defects_entities_frame, rownum)

        self.add_button = Button(self.defects_entities_frame,
                                 text="Add more defects",
                                 command=self.add_elements)
        self.add_button.grid(row=self.num_defect_fields + 1,
                             column=0,
                             columnspan=2,
                             pady=10,
                             padx=10)

        #save button
        save_button = Button(defects_frame, text="Save", command=self.save)
        save_button.grid(row=3, column=0, columnspan=2, padx=20, pady=10)