|
|
import json |
|
|
import datetime |
|
|
import gradio as gr |
|
|
|
|
|
class Calendar: |
|
|
def __init__(self, filename="calendar_data.json"): |
|
|
self.filename = filename |
|
|
self.reminders = self.load_calendar() |
|
|
self.current_date = datetime.date.today() |
|
|
|
|
|
def load_calendar(self): |
|
|
"""Load reminders from a file.""" |
|
|
try: |
|
|
with open(self.filename, "r") as file: |
|
|
return json.load(file) |
|
|
except (FileNotFoundError, json.JSONDecodeError): |
|
|
return {} |
|
|
|
|
|
def save_calendar(self): |
|
|
"""Save reminders to a file.""" |
|
|
with open(self.filename, "w") as file: |
|
|
json.dump(self.reminders, file, indent=4) |
|
|
|
|
|
def add_reminder(self, date, reminder): |
|
|
"""Add a reminder for a specific date.""" |
|
|
if date not in self.reminders: |
|
|
self.reminders[date] = [] |
|
|
self.reminders[date].append(reminder) |
|
|
self.save_calendar() |
|
|
print(f"Reminder added for {date}: {reminder}") |
|
|
|
|
|
def show_reminders(self, date): |
|
|
"""Show reminders for a specific date.""" |
|
|
if date in self.reminders: |
|
|
print(f"Reminders for {date}:") |
|
|
for i, reminder in enumerate(self.reminders[date], 1): |
|
|
print(f"{i}. {reminder}") |
|
|
else: |
|
|
print(f"No reminders for {date}.") |
|
|
|
|
|
def browse_calendar(self, days): |
|
|
"""Move forward or backward in the calendar by a given number of days.""" |
|
|
self.current_date += datetime.timedelta(days=days) |
|
|
print(f"Current date: {self.current_date}") |
|
|
self.show_reminders(str(self.current_date)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
calendar = Calendar() |
|
|
|
|
|
def add_reminder_interface(date, reminder): |
|
|
return calendar.add_reminder(date, reminder) |
|
|
|
|
|
def show_reminders_interface(date): |
|
|
return calendar.show_reminders(date) |
|
|
|
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
gr.Markdown("# Simple Calendar App") |
|
|
|
|
|
with gr.Row(): |
|
|
date_input = gr.Textbox(label="Enter Date (YYYY-MM-DD)") |
|
|
reminder_input = gr.Textbox(label="Enter Reminder") |
|
|
add_button = gr.Button("Add Reminder") |
|
|
|
|
|
output_text = gr.Textbox(label="Output") |
|
|
|
|
|
add_button.click(add_reminder_interface, inputs=[date_input, reminder_input], outputs=output_text) |
|
|
|
|
|
with gr.Row(): |
|
|
date_query = gr.Textbox(label="Check Reminders for Date") |
|
|
check_button = gr.Button("Show Reminders") |
|
|
|
|
|
reminder_output = gr.Textbox(label="Reminders") |
|
|
|
|
|
check_button.click(show_reminders_interface, inputs=[date_query], outputs=reminder_output) |
|
|
|
|
|
demo.launch() |