示例#1
0
	def __init__(master):
	

		master = tk.Tk()
		master.geometry("340x410")
		master.title("Commander Pi")


		bootloader_label = tk.Label( master, text=btl.bootloader_version,  borderwidth=2, relief="groove", justify="center", wraplength="310")
		bootloader_label.pack(fill=X)
		
		link = tk.Label( master, text="Official bootloader documentation", cursor="hand2", fg="blue")
		link.pack(fill=X)
		mlink = 'https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md'
		link.bind("<Button-1>", lambda e: rs.cpi_open_url(mlink))
		
		test = tk.Label(master, text=btl.read_bootloader(),  borderwidth=2, relief="groove", justify="left")
		test.pack(fill=X)
		#button = Button(master, text="test")
		#button.pack(side=RIGHT)
		bind_label = tk.Label( master, text="Press Escape to close" )
		bind_label.pack(side=BOTTOM)
		master.bind('<Escape>', lambda e:killwindow(e, master))
		
		master.mainloop()
示例#2
0
    def __init__(master):

        master = tk.Tk()
        master.geometry("430x550")
        master.title("Commander Pi")

        mainframe = Frame(master)
        mainframe.pack(padx=10, pady=10)

        titleframe = Frame(mainframe)
        titleframe.pack(fill=X)

        image = Image.open("/home/pi/CommanderPi/src/icons/Bootloaders.png")
        photo = ImageTk.PhotoImage(image, master=titleframe)

        title_label = tk.Label(titleframe,
                               text="  Bootloader",
                               font=("TkDefaultFont", 18, "bold"),
                               image=photo,
                               compound=LEFT,
                               anchor='w')
        title_label.image = photo
        title_label.pack(side=LEFT)

        separator = ttk.Separator(mainframe, orient='horizontal')
        separator.pack(fill=X, expand=True, pady=5)

        versionx_label = tk.Label(mainframe,
                                  text="Version information:",
                                  font=("TkDefaultFont", 11, "bold"),
                                  anchor='w')
        versionx_label.pack(fill=X)
        #310

        bootloader_version_label = tk.Label(mainframe,
                                            text=btl.bootloader_version,
                                            justify="left",
                                            wraplength="360",
                                            anchor='w')
        bootloader_version_label.pack(fill=X)

        boot_frame = Frame(mainframe)
        boot_frame.pack(fill=X)

        bootloader_label = tk.Label(boot_frame,
                                    text=btl.read_bootloader(),
                                    justify="left",
                                    anchor='w')
        bootloader_label.grid(row=0, column=0, rowspan=11)

        separator = ttk.Separator(mainframe, orient='horizontal')
        separator.pack(fill=X, expand=True, pady=5)

        setup_b = tk.Button(mainframe,
                            text="Setup config",
                            command=lambda: config_boot(),
                            font=("TkDefaultFont", 10, "bold"),
                            cursor="hand2")
        setup_b.pack()

        link = tk.Label(mainframe,
                        text="Official bootloader documentation",
                        cursor="hand2",
                        fg="#1D81DA")
        link.pack(fill=X)
        mlink = 'https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md'
        link.bind("<Button-1>", lambda e: rs.cpi_open_url(mlink))

        bind_label = tk.Label(mainframe,
                              text="Press [Esc] to close",
                              font=("TkDefaultFont", 11, "bold"))
        bind_label.pack(side=BOTTOM)
        master.bind('<Escape>', lambda e: killwindow(e, master))

        def config_boot():
            msb.showwarning(
                title="Warning",
                message=
                "This is only for advanced users!\nDo it on your own risk!")
            #boot_frame.grid_forget()
            setup_b.destroy()
            bootloader_label.destroy()
            config_stuff = "BOOT_UART:\nWAKE_ON_GPIO:\nPOWER_OFF_ON_HALT:\nDHCP_TIMEOUT:\nDHCP_REQ_TIMEOUT:\nTFTP_FILE_TIMEOUT:\nTFTP_IP:\nTFTP_PREFIX:\nBOOT_ORDER:\nSD_BOOT_MAX_RETRIES:\nNET_BOOT_MAX_RETRIES:\n"
            #bootloader_label.config(text=config_stuff, font=("TkDefaultFont", 12))
            #config_text_label = tk.Label(boot_frame, text=config_stuff, justify="left", anchor='w')
            #config_text_label.grid(row=0, column=0, rowspan=11)
            btl_label1 = tk.Label(boot_frame,
                                  text="BOOT_UART:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label1.grid(row=0, column=0)

            BOOT_UART_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            BOOT_UART_entry.grid(row=0, column=1, pady=0, sticky=N)

            btl_label2 = tk.Label(boot_frame,
                                  text="WAKE_ON_GPIO:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label2.grid(row=1, column=0)
            WAKE_ON_GPIO_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            WAKE_ON_GPIO_entry.grid(row=1, column=1, pady=0, sticky=N)

            btl_label3 = tk.Label(boot_frame,
                                  text="POWER_OFF_ON_HALT:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label3.grid(row=2, column=0)
            POWER_OFF_ON_HALT_entry = tk.Entry(boot_frame,
                                               justify=CENTER,
                                               width=10)
            POWER_OFF_ON_HALT_entry.grid(row=2, column=1, pady=0, sticky=N)

            btl_label4 = tk.Label(boot_frame,
                                  text="DHCP_TIMEOUT:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label4.grid(row=3, column=0)
            DHCP_TIMEOUT_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            DHCP_TIMEOUT_entry.grid(row=3, column=1, pady=0, sticky=N)

            btl_label5 = tk.Label(boot_frame,
                                  text="DHCP_REQ_TIMEOUT:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label5.grid(row=4, column=0)
            DHCP_REQ_TIMEOUT_entry = tk.Entry(boot_frame,
                                              justify=CENTER,
                                              width=10)
            DHCP_REQ_TIMEOUT_entry.grid(row=4, column=1, pady=0, sticky=N)

            btl_label6 = tk.Label(boot_frame,
                                  text="TFTP_FILE_TIMEOUT:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label6.grid(row=5, column=0)
            TFTP_FILE_TIMEOUT_entry = tk.Entry(boot_frame,
                                               justify=CENTER,
                                               width=10)
            TFTP_FILE_TIMEOUT_entry.grid(row=5, column=1, pady=0, sticky=N)

            btl_label7 = tk.Label(boot_frame,
                                  text="TFTP_IP:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label7.grid(row=6, column=0)
            TFTP_IP_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            TFTP_IP_entry.grid(row=6, column=1, pady=0, sticky=N)

            btl_label8 = tk.Label(boot_frame,
                                  text="TFTP_PREFIX:",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label8.grid(row=7, column=0)
            TFTP_PREFIX_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            TFTP_PREFIX_entry.grid(row=7, column=1, pady=0, sticky=N)

            btl_label9 = tk.Label(boot_frame,
                                  text="BOOT_ORDER",
                                  justify=LEFT,
                                  width=25,
                                  anchor='w')
            btl_label9.grid(row=8, column=0)
            BOOT_ORDER_entry = tk.Entry(boot_frame, justify=CENTER, width=10)
            BOOT_ORDER_entry.grid(row=8, column=1, pady=0, sticky=N)

            btl_label10 = tk.Label(boot_frame,
                                   text="SD_BOOT_MAX_RETRIES:",
                                   justify=LEFT,
                                   width=25,
                                   anchor='w')
            btl_label10.grid(row=9, column=0)
            SD_BOOT_MAX_RETRIES_entry = tk.Entry(boot_frame,
                                                 justify=CENTER,
                                                 width=10)
            SD_BOOT_MAX_RETRIES_entry.grid(row=9, column=1, pady=0, sticky=N)

            btl_label11 = tk.Label(boot_frame,
                                   text="NET_BOOT_MAX_RETRIES:",
                                   justify=LEFT,
                                   width=25,
                                   anchor='w')
            btl_label11.grid(row=10, column=0)
            NET_BOOT_MAX_RETRIES_entry = tk.Entry(boot_frame,
                                                  justify=CENTER,
                                                  width=10)
            NET_BOOT_MAX_RETRIES_entry.grid(row=10, column=1, pady=0, sticky=N)

            btl_btn1 = tk.Button(boot_frame,
                                 text="Apply and save",
                                 font=("TkDefaultFont", 10, "bold"),
                                 cursor="hand2",
                                 command=lambda: push_config())
            btl_btn1.grid(row=11, column=1)
            btl_btn2 = tk.Button(boot_frame,
                                 text="Cancel",
                                 font=("TkDefaultFont", 10, "bold"),
                                 cursor="hand2",
                                 command=lambda: cancel())
            btl_btn2.grid(row=11, column=0, sticky=W)

            #BOOT_UART_entry.insert(END, btl.BOOT_UART[-2:-1])
            #WAKE_ON_GPIO_entry.insert(END, btl.WAKE_ON_GPIO[-2:-1])
            #POWER_OFF_ON_HALT_entry.insert(END, btl.POWER_OFF_ON_HALT[-2:-1])
            #DHCP_TIMEOUT_entry.insert(END, btl.DHCP_TIMEOUT[-6:-1])

            def push_config():
                confirm_msgb = msb.askyesno(title=None,
                                            message="Are you sure?")
                if confirm_msgb == True:
                    btl.set_bootloader_value("BOOT_UART",
                                             BOOT_UART_entry.get())
                    btl.set_bootloader_value("WAKE_ON_GPIO",
                                             WAKE_ON_GPIO_entry.get())
                    btl.set_bootloader_value("POWER_OFF_ON_HALT",
                                             POWER_OFF_ON_HALT_entry.get())
                    btl.set_bootloader_value("DHCP_TIMEOUT",
                                             DHCP_TIMEOUT_entry.get())
                    btl.set_bootloader_value("DHCP_REQ_TIMEOUT",
                                             DHCP_REQ_TIMEOUT_entry.get())
                    btl.set_bootloader_value("TFTP_FILE_TIMEOUT",
                                             TFTP_FILE_TIMEOUT_entry.get())
                    btl.set_bootloader_value("TFTP_IP", TFTP_IP_entry.get())
                    btl.set_bootloader_value("TFTP_PREFIX",
                                             TFTP_PREFIX_entry.get())
                    btl.set_bootloader_value("BOOT_ORDER",
                                             BOOT_ORDER_entry.get())
                    btl.set_bootloader_value("SD_BOOT_MAX_RETRIES",
                                             SD_BOOT_MAX_RETRIES_entry.get())
                    btl.set_bootloader_value("NET_BOOT_MAX_RETRIES",
                                             NET_BOOT_MAX_RETRIES_entry.get())
                    btl.write_bootloader()
                    master.destroy()
                    msb.showinfo(title="", message="Now you need to reboot")
                    #rs.reboot()
        def cancel():
            importlib.reload(btl)
            importlib.reload(rs)
            master.destroy()
            bopen(Bootloader_Info_Window)

        master.mainloop()