import tkinter as tk
from tkinter import messagebox
import json
import os

DATA_FILE = "tasks.json"

def load_tasks():
    if os.path.exists(DATA_FILE):
        with open(DATA_FILE, "r") as f:
            try:
                tasks = json.load(f)
                for task in tasks:
                    listbox.insert(tk.END, task)
            except json.JSONDecodeError:
                pass # empty file case
                

def save_tasks():
    tasks = listbox.get(0, tk.END)
    with open(DATA_FILE, "w") as f:
        json.dump(tasks, f, indent=4)

def add_task():
    task = entry.get()
    if task != "":
        listbox.insert(tk.END, task)
        entry.delete(0, tk.END)
        save_tasks()
    else:
        messagebox.showwarning("Warning", "Please Enter a Task.")
        
def delete_task():
    try:
        selected_task = listbox.curselection()
        listbox.delete(selected_task)
        save_tasks()
    except:
        messagebox.showwarning("Warning", "Please select a task to delete!")

root = tk.Tk()
root.title("To-Do List")
root.geometry("400x400")

# Entry box
entry = tk.Entry(root, width=30)
entry.pack(pady=10)

# Buttons
add_button = tk.Button(root, text="Add Task", width=15, command=add_task)
add_button.pack(pady=5)

delete_button = tk.Button(root, text="Delete Task", width=15,command=delete_task)
delete_button.pack(pady=5)

listbox = tk.Listbox(root, width=50, height=15, selectmode=tk.SINGLE)
listbox.pack(pady=10)

load_tasks()

root.mainloop()
