import tkinter as tk
import sys
import time
import platform
from cefpython3 import cefpython as cef

main=tk.Tk()
main.title("PyOS Exectutive")
main.overrideredirect(1)
main.state("zoomed")
menubar = tk.Menu(main)
class App():
    def PowerOptions():
        power = tk.Toplevel()
        power.title("PyOS executive")
        power.geometry("400x250")
        power.overrideredirect(1)
        window_height = 250
        window_width = 400

        screen_width = power.winfo_screenwidth()
        screen_height = power.winfo_screenheight()

        x_cordinate = int((screen_width/2) - (window_width/2))
        y_cordinate = int((screen_height/2) - (window_height/2))

        power.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))

        label0 = tk.Label(power, text="")
        label0.pack()
        label1 = tk.Label(power, text="Power Options")
        label1.pack()
        label = tk.Label(power, text="")
        label.pack()
        button1= tk.Button(power,text="Shutdown", command=power.quit)
        button1.pack()
        label2 = tk.Label(power, text="")
        label2.pack()
        button2= tk.Button(power,text="Restart")
        button2.pack()
        label3 = tk.Label(power, text="")
        label3.pack()
        button3= tk.Button(power,text="CLI")
        button3.pack()
        label4 = tk.Label(power, text="")
        label4.pack()
        button4= tk.Button(power,text="Exit", command=power.destroy)
        button4.pack()

    def tasquemngr():
        tasquemngr=tk.Toplevel()
        tasquemngr.title("Tasque Manager")
        tasquemngr.geometry("700x600")
    def aps():
        aps=tk.Toplevel()
        aps.title("Applications")
        aps.geometry("1000x1000")
        def browser():
            def open_link(url):
                root.destroy()
                sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
                cef.Initialize()
                cef.CreateBrowserSync(url=url,
                window_title=url)
                cef.MessageLoop()
                main()
            def main():
                global root
                root = tk.Tk()
                root.geometry("400x100")
                root.title("Chromium")
                l = tk.Label(root, text="Enter URL", fg="red", font="Arial 20")
                l.pack(fill=tk.X)
                v = tk.StringVar()
                e = tk.Entry(root, textvariable=v, font="Arial 14")
                e.pack(fill=tk.X)
                v.set("https://www.google.com/")
                e.focus()
                e.bind("<Return>", lambda x: open_link(e.get()))
                root.mainloop()
                cef.Shutdown()


            if __name__ == '__main__':
                main()
        tk.Button(text="Chromium", command=browser).pack()

    def gitshow():
        def open_link(url):
            root.destroy()
            sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
            cef.Initialize()
            cef.CreateBrowserSync(url=url,
                window_title=url)
            cef.MessageLoop()

        def main():
            global root
            root = tk.Tk()
            root.geometry("400x100")
            open_link("https://github.com")
            root.mainloop()
            cef.Shutdown()


        if __name__ == '__main__':
            main()

    def email():
        def open_link(url):
            root.destroy()
            sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
            cef.Initialize()
            cef.CreateBrowserSync(url=url,
                window_title=url)
            cef.MessageLoop()

        def main():
            global root
            root = tk.Tk()
            root.geometry("400x100")
            open_link("https://mail.yahoo.com")
            root.mainloop()
            cef.Shutdown()
        if __name__ == '__main__':
            main()

    def help():
        help=tk.Toplevel()
        help.title("PyOS help")

    def about():
        about=tk.Toplevel()
        about.title("About PyOS")
        about.geometry("350x400")
        tk.Label(about, text="Lazercorp PyOS").place(x=125,y=200)
        tk.Label(about, text="Version 0.0.1 (Build AAAA)").place(x=110,y=220)

    tk.Label().pack()
    Py = tk.Menu(main,tearoff=0)
    menubar.add_cascade(label="PyOS",menu=Py)
    Py.add_command(label="Applications", command=aps)
    Py.add_command(label="Github",command=gitshow)
    Py.add_command(label="Email", command=email)
    Py.add_command(label="Help",command=help)
    Py.add_command(label="About",command=about)
    File = tk.Menu(main,tearoff=0)
    menubar.add_cascade(label="File",menu=File)
    Edit = tk.Menu(main,tearoff=0)
    menubar.add_cascade(label="Edit",menu=Edit)
    Options = tk.Menu(main,tearoff=0) 
    menubar.add_cascade(label="Options",menu=Options)
    Options.add_command(label="Tasque manager", command=tasquemngr)
    Options.add_command(label="Power Options", command=PowerOptions)


    def __init__(self):
        self.root = tk.Tk()
        self.label = tk.Label(text="", font=("Consolas, 'Courier New', monospace", 20))
        self.label.place(y=800,x=1425)
        self.update_clock()
        self.root.mainloop()

    def update_clock(self):
        now = time.strftime("%H:%M:%S")
        self.label.configure(text=now)
        self.root.after(1000, self.update_clock)

    main.config(menu=menubar)
app=App()
main.mainloop()