Skip to content

Commit fed33e6

Browse files
committed
Major update: Notes Finished
Major update: - Notes finished - App redesign canceled - Added icons - Minor UI changes
1 parent 51b15e8 commit fed33e6

26 files changed

Lines changed: 276 additions & 1274 deletions

Package/data_management.py

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import datetime
22
from openpyxl.styles import Font
3-
from .styles import *
43

54
import customtkinter as ctk
65

6+
from .styles import *
7+
from .note_management import NotesManager
8+
79
class DataManager:
810
def __init__(self, App, timer_manager, workbook, worksheet):
911
self.app = App
@@ -12,13 +14,19 @@ def __init__(self, App, timer_manager, workbook, worksheet):
1214
self.worksheet = worksheet
1315
self.initialize_variables()
1416

17+
self.notes_manager = NotesManager(self.app, self)
18+
1519

1620
def initialize_variables(self) -> None:
1721
self.day_name_list = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
1822
self.date_list = []
1923
self.duration_list = []
2024
self.total_duration = 0
2125
self.graph_color = "#f38064"
26+
self.graph_bg_color = graph_bg_color
27+
self.graph_fg_color = graph_fg_color
28+
self.font_color = font_color
29+
self.spine_color = border_frame_color
2230

2331

2432
def initialize_new_file_variables(self) -> None:
@@ -103,6 +111,7 @@ def customize_excel(self) -> None:
103111
self.worksheet["N8"].value = "Notes amount:"
104112
self.worksheet["N9"].value = self.notes_amount
105113
self.worksheet["N11"].value = "Notes:"
114+
self.worksheet["M12"].value = "Deleted:"
106115
self.worksheet["N12"].value = "Date:"
107116
self.worksheet["O12"].value = "Title:"
108117
self.worksheet["P12"].value = "Text:"
@@ -258,6 +267,7 @@ def change_color(self) -> None:
258267
self.app.eye_care_checkbox.configure(fg_color=self.color)
259268
self.app.create_graphs()
260269

270+
self.load_notes()
261271
print("Color changed.")
262272

263273

@@ -266,28 +276,39 @@ def set_theme(self, theme_dropdown) -> None:
266276
print("Theme set.")
267277
self.save_theme()
268278

279+
269280
def save_theme(self) -> None:
270281
self.worksheet["U2"].value = self.theme_name
271282
self.load_theme()
272283

273-
274-
def save_subject(self, subject: str) -> None:
275-
self.worksheet["S2"].value = subject
276-
print("Subject saved.")
277-
278284

279285
def load_theme(self) -> None:
280286
self.theme_name = self.worksheet["U2"].value
281287
self.app.theme_dropdown.configure(variable=ctk.StringVar(value=self.theme_name))
282288

283289
if self.theme_name == "Dark":
284290
ctk.set_appearance_mode("dark")
291+
self.graph_bg_color = graph_bg_color
292+
self.graph_fg_color = graph_fg_color
293+
self.spine_color = border_frame_color
294+
self.font_color = "white"
285295
else:
286296
ctk.set_appearance_mode("light")
297+
self.graph_bg_color = light_graph_bg_color
298+
self.graph_fg_color = light_graph_fg_color
299+
self.spine_color = light_border_frame_color
300+
self.font_color = "black"
301+
302+
self.app.create_graphs()
287303

288304
print("Theme loaded.")
289305

290306

307+
def save_subject(self, subject: str) -> None:
308+
self.worksheet["S2"].value = subject
309+
print("Subject saved.")
310+
311+
291312
def load_subject(self) -> None:
292313
if self.worksheet["S2"].value != None:
293314
subject = self.worksheet["S2"].value
@@ -316,36 +337,14 @@ def create_new_note(self, title, text):
316337

317338

318339
def load_notes(self) -> None:
319-
self.app.clear_notes()
340+
self.notes_manager.clear_notes()
320341

321342
if self.notes_amount == 0:
322343
return None
323344

324-
for i in range(self.notes_amount+13, 13, -1):
325-
frame = ctk.CTkFrame(self.app.notes_data_frame, width=WIDTH + frame_padding, fg_color=(light_frame_color, frame_color), height=button_height + frame_padding * 2)
326-
frame.pack(pady=frame_padding)
327-
frame.grid_propagate(False)
328-
329-
def _delete_note(frame):
330-
frame.destroy()
331-
#DELETE NOTE FROM EXCEL
332-
333-
title = ctk.CTkLabel(frame, text=str(self.worksheet["O" + str(i)].value), font=(font_family, font_size*1.25),
334-
text_color=(light_font_color, font_color), anchor="center", height=button_height + frame_padding * 2)
335-
title.grid(row=0, column=0, padx=widget_padding_x)
336-
date = ctk.CTkLabel(frame, text=str(self.worksheet["N" + str(i)].value), font=(font_family, font_size*1.25),
337-
text_color=(light_font_color, font_color), anchor="center", height=button_height + frame_padding * 2)
338-
date.grid(row=0, column=1, padx=widget_padding_x)
339-
340-
button_frame = ctk.CTkFrame(frame, fg_color="transparent")
341-
button_frame.place(anchor="center", rely=0.5, relx=0.8)
342-
343-
open_button = ctk.CTkButton(button_frame, text="Open", height=button_height, fg_color=self.color, hover_color=self.highlight_color, font=(font_family, font_size), text_color=button_font_color,
344-
command=lambda: self.app._open_notes_text(str(self.worksheet["N" + str(i)].value), str(self.worksheet["O" + str(i)].value), str(self.worksheet["P" + str(i)].value), i))
345-
open_button.grid(row=0, column=0, padx=widget_padding_x)
346-
delete_button = ctk.CTkButton(button_frame, text="Delete", height=button_height, fg_color=self.color, hover_color=self.highlight_color, font=(font_family, font_size), text_color=button_font_color,
347-
command=lambda: _delete_note(frame))
348-
delete_button.grid(row=0, column=1)
345+
for i in range(self.notes_amount+12, 12, -1):
346+
if self.worksheet["M" + str(i)].value != "Yes":
347+
self.notes_manager.create_task(i)
349348

350349

351350
def save_eye_care(self, eye_care: str, checkbox: str) -> None:

Package/eye_care.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

Package/note_management.py

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,100 @@
1+
import customtkinter as ctk
2+
3+
from .styles import *
4+
15
class NotesManager:
2-
pass
6+
def __init__(self, app, data_manager):
7+
self.app = app
8+
self.data_manager = data_manager
9+
10+
def create_task(self, index):
11+
self.frame = ctk.CTkFrame(self.app.notes_data_frame, width=WIDTH + frame_padding, fg_color=(light_frame_color, frame_color), height=button_height + frame_padding * 2)
12+
self.frame.pack(pady=frame_padding/2)
13+
self.frame.grid_propagate(False)
14+
15+
def title_text(title: str) -> str:
16+
max_letters = 20
17+
18+
display_title = title
19+
20+
if len(title) > max_letters:
21+
display_title = title[:max_letters] + "..."
22+
23+
return display_title
24+
25+
title = ctk.CTkLabel(self.frame, text=title_text(str(self.data_manager.worksheet["O" + str(index)].value)), font=(font_family, font_size*1.25),
26+
text_color=(light_font_color, font_color), anchor="center", height=button_height + frame_padding * 2)
27+
title.grid(row=0, column=0, padx=widget_padding_x)
28+
date = ctk.CTkLabel(self.frame, text=str(self.data_manager.worksheet["N" + str(index)].value), font=(font_family, font_size*1.25),
29+
text_color=(light_font_color, font_color), anchor="center", height=button_height + frame_padding * 2)
30+
date.grid(row=0, column=1, padx=widget_padding_x)
31+
32+
button_frame = ctk.CTkFrame(self.frame, fg_color="transparent")
33+
button_frame.place(anchor="center", rely=0.5, relx=0.825)
34+
35+
open_button = ctk.CTkButton(button_frame, text="Open", height=button_height, fg_color=self.data_manager.color, hover_color=self.data_manager.highlight_color, font=(font_family, font_size), text_color=button_font_color,
36+
command=lambda: self._open_notes_text(str(self.data_manager.worksheet["N" + str(index)].value), str(self.data_manager.worksheet["O" + str(index)].value), str(self.data_manager.worksheet["P" + str(index)].value), index))
37+
open_button.grid(row=0, column=0, padx=widget_padding_x)
38+
delete_button = ctk.CTkButton(button_frame, text="Delete", height=button_height, fg_color=self.data_manager.color, hover_color=self.data_manager.highlight_color, font=(font_family, font_size), text_color=button_font_color,
39+
command=lambda: self.delete_task(index))
40+
delete_button.grid(row=0, column=1)
41+
42+
43+
def delete_task(self, index):
44+
self.data_manager.worksheet["M" + str(index)].value = "Yes"
45+
self.frame.destroy()
46+
self.data_manager.load_notes()
47+
48+
49+
def _open_notes_text(self, date, title, text, index):
50+
self.app.notes_frame_frame.grid_forget()
51+
52+
frame = ctk.CTkFrame(self.app.notes_frame, fg_color="transparent", corner_radius=10, height=HEIGHT + frame_padding * 2, width=WIDTH - frame_padding * 2)
53+
frame.grid(padx=frame_padding, pady=frame_padding)
54+
frame.grid_propagate(False)
55+
56+
header_frame = ctk.CTkFrame(frame, fg_color=(light_frame_color, frame_color), corner_radius=10, width=WIDTH - frame_padding * 2, height=60)
57+
header_frame.grid(row=0, column=0, pady=(0, frame_padding))
58+
header_frame.grid_propagate(False)
59+
60+
title_label = ctk.CTkLabel(header_frame, text=title, font=(font_family, font_size*1.5), text_color=(light_font_color, font_color),
61+
height=40, width=WIDTH - 280 - frame_padding * 6, fg_color=(light_frame_color, frame_color), anchor="w")
62+
title_label.grid(row=0, column=0, padx=widget_padding_x, pady=widget_padding_y)
63+
#date_label = ctk.CTkLabel(header_frame, text=date, font=(font_family, font_size), text_color=(light_font_color, font_color),
64+
#height=40, width=WIDTH - 280 - frame_padding * 6, fg_color=(light_frame_color, frame_color))
65+
#date_label.grid(row=0, column=0, padx=widget_padding_x, pady=widget_padding_y)
66+
67+
button_frame = ctk.CTkFrame(header_frame, fg_color="transparent")
68+
button_frame.place(anchor="center", rely=0.5, relx=0.85)
69+
70+
textbox = ctk.CTkTextbox(frame, font=(font_family, font_size), text_color=(light_font_color, font_color), fg_color="transparent", width=WIDTH - frame_padding * 2, height=HEIGHT + frame_padding * 2 - 60)
71+
textbox.grid(row=1, column=0)
72+
textbox.insert("0.0", text)
73+
textbox.configure(state="disabled")
74+
75+
edit_button = ctk.CTkButton(button_frame, height=button_height, text="Edit", fg_color=self.data_manager.color,
76+
hover_color=self.data_manager.highlight_color, font=(font_family, font_size), text_color=button_font_color, command=lambda: self.edit_note(index, textbox, edit_button, frame))
77+
edit_button.grid(row=0, column=1)
78+
exit_button = ctk.CTkButton(button_frame, height=button_height, text="Exit", fg_color=self.data_manager.color, command=lambda: self._exit_note(frame),
79+
hover_color=self.data_manager.highlight_color, font=(font_family, font_size), text_color=button_font_color)
80+
exit_button.grid(row=0, column=2, padx=widget_padding_x, pady=widget_padding_y)
81+
82+
83+
def _exit_note(self, frame):
84+
frame.destroy()
85+
self.app.notes_frame_frame.grid(row=0, column=0, padx=frame_padding, pady=(frame_padding, 0))
86+
87+
88+
def edit_note(self, index, textbox, edit_button, frame):
89+
def save_note(index, frame):
90+
self.data_manager.worksheet["P" + str(index)].value = textbox.get("0.0", "end")
91+
self._exit_note(frame)
92+
self.data_manager.workbook.save(self.app.data_file)
93+
94+
textbox.configure(state="normal", fg_color=(light_frame_color, frame_color))
95+
edit_button.configure(text="Save", command=lambda: save_note(index, frame))
96+
97+
98+
def clear_notes(self):
99+
for note in self.app.notes_data_frame.winfo_children():
100+
note.destroy()

Package/styles.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
tab_width = tab_frame_width - (tab_frame_width * 0.2)
5656
tab_height = HEIGHT * 0.07
5757

58-
border_frame_color = "#5b5b5b"
58+
border_frame_color = frame_border_color
5959
light_border_frame_color = "#b3b3b3"
6060

6161
main_frame_pad_x = 0
@@ -64,17 +64,17 @@
6464
main_frame_color = "#2b2b2b"
6565
light_main_frame_color = "#d4d4d4"
6666

67-
graph_height = HEIGHT/2
68-
graph_width = (WIDTH/2)-25
67+
graph_height = HEIGHT / 2
68+
graph_width = (WIDTH / 2) - frame_padding * 4
6969

70-
graph_bg_color = "#323232"
71-
light_graph_bg_color = "#cccccc"
70+
graph_bg_color = frame_color
71+
light_graph_bg_color = light_frame_color
7272

73-
graph_fg_color = "#323232"
74-
light_graph_fg_color = "#cccccc"
73+
graph_fg_color = frame_color
74+
light_graph_fg_color = light_frame_color
7575

7676
graph_color = "#f38064"
77-
spine_color = "#5b5b5b"
77+
spine_color = frame_border_color
7878

7979
pie_font_family = font_family
8080
pie_font_size = 10

icons/achievements_icon_dark.png

18.5 KB
Loading

icons/achievements_icon_light.png

27.6 KB
Loading

icons/clock_icon_dark.png

14.3 KB
Loading

icons/clock_icon_light.png

16.3 KB
Loading

icons/history_icon_dark.png

8.33 KB
Loading

icons/history_icon_light.png

9.29 KB
Loading

0 commit comments

Comments
 (0)