-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontroller.py
More file actions
48 lines (36 loc) · 1.5 KB
/
controller.py
File metadata and controls
48 lines (36 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class TaskController:
def __init__(self, model, view):
self.model = model
self.view = view
view.add_button.config(command=self.add_task)
view.toggle_button.config(command=self.toggle_task)
view.delete_button.config(command=self.delete_task)
view.search_entry.bind("<KeyRelease>", lambda e: self.search_tasks())
self.refresh()
def add_task(self):
text = self.view.get_entry_text()
due = self.view.get_due_date()
priority = self.view.priority_var.get()
category = self.view.category_var.get()
if text:
self.model.add_task(text, due, priority, category)
self.view.clear_entry()
self.refresh()
def toggle_task(self):
index = self.view.get_selected_index()
if index is not None:
self.model.toggle_task(index)
self.refresh()
def delete_task(self):
index = self.view.get_selected_index()
if index is not None:
self.model.delete_task(index)
self.refresh()
def search_tasks(self):
query = self.view.get_search_query().lower()
filtered = [task for task in self.model.tasks if query in task["text"].lower()]
self.view.update_tasks(filtered)
def refresh(self):
self.model.sort_by_due()
self.view.update_tasks(self.model.tasks)
self.view.update_stats(self.model.tasks)