import gradio as gr from task_functions import add_task, delete_task, get_tasks # Initialize Gradio app with dark tech-inspired theme with gr.Blocks() as demo: gr.Markdown( """
📝 Futuristic To-Do List Tracker
""" ) # Create an empty DataFrame display task_table = gr.DataFrame( headers=["Task", "Priority", "Status", "Due Date"], label="Current Tasks", elem_id="task-table", interactive=False ) # Add Task Section with gr.Row(): with gr.Column(scale=3): task_input = gr.Textbox( label="Task", placeholder="Enter your task...", elem_id="input-box" ) with gr.Column(scale=1): priority_input = gr.Dropdown( choices=["Low", "Medium", "High"], label="Priority", value="Medium", elem_id="dropdown" ) status_input = gr.Dropdown( choices=["Not Started", "In Progress", "Completed"], label="Status", value="Not Started", elem_id="dropdown" ) with gr.Column(scale=2): due_date_input = gr.Textbox( label="Due Date (YYYY-MM-DD)", placeholder="YYYY-MM-DD", elem_id="input-box" ) with gr.Column(scale=1): add_button = gr.Button("Add Task", elem_id="button") # Button click to add task and update DataFrame def update_task_table(task, priority, status, due_date): add_task(task, priority, status, due_date) return get_tasks() add_button.click( fn=update_task_table, inputs=[task_input, priority_input, status_input, due_date_input], outputs=task_table ) # Delete Task Section delete_index = gr.Number(label="Task Index to Delete", value=0, elem_id="input-box") delete_button = gr.Button("Delete Task", elem_id="button") # Button click to delete task and update DataFrame def update_after_delete(index): delete_task(index) return get_tasks() delete_button.click( fn=update_after_delete, inputs=delete_index, outputs=task_table ) # Load external CSS file with open("styles.css", "r") as f: demo.css = f.read() # Launch the Gradio app demo.launch()