#!/usr/bin/env python3
import sys, tkinter as tk
from tkinter import filedialog, messagebox
from pathlib import Path

save_path=None
def browse():
 global save_path
 init=str(Path.home()/"Desktop") if (Path.home()/ "Desktop").exists() else str(Path.home())
 path=filedialog.asksaveasfilename(initialdir=init,defaultextension=".txt",initialfile=filename_var.get() or "untitled.txt",title="Choose where to save")
 if path: save_path=Path(path); filename_var.set(save_path.name)

def save_file():
 global save_path
 fn=filename_var.get().strip()
 if save_path is None:
  if not fn: messagebox.showwarning("Missing filename","Enter a filename."); return
  if not Path(fn).suffix: fn+=".txt"
  home=Path.home(); desk=home/"Desktop"; d=desk if desk.exists() else home
  fp=d/fn
 else: fp=save_path
 try:
  fp.parent.mkdir(parents=True,exist_ok=True)
  with open(fp,"w",encoding="utf-8") as f: f.write(text.get("1.0",tk.END))
 except Exception as e: messagebox.showerror("Error",f"Failed to save:\n{e}"); return
 else: messagebox.showinfo("Saved",f"File saved to:\n{fp}")
 save_path=None

root=tk.Tk(); root.title("file writer"); root.geometry("700x500")
top=tk.Frame(root); top.pack(fill="x",padx=10,pady=8)
tk.Label(top,text="Filename:").pack(side="left")
filename_var=tk.StringVar(value="hello.txt")
tk.Entry(top,textvariable=filename_var).pack(side="left",fill="x",expand=True,padx=6)
tk.Button(top,text="Browse...",command=browse).pack(side="left",padx=6)
tk.Button(top,text="Save",command=save_file).pack(side="left")
text=tk.Text(root,wrap="word"); text.pack(fill="both",expand=True,padx=10,pady=(0,10))
text.insert("1.0","file made with Python!")
root.bind_all("<Control-s>",lambda e: save_file())
root.protocol("WM_DELETE_WINDOW",root.destroy)
root.mainloop()
