diff --git a/frontend/todo_tk.py b/frontend/todo_tk.py index 9ecf288..ce4fa50 100644 --- a/frontend/todo_tk.py +++ b/frontend/todo_tk.py @@ -15,7 +15,7 @@ if "win" in sys.platform.lower(): else: DEFAULT_URL = "http://0.0.0.0:8000" -BASE_W = 600 +BASE_W = 900 BASE_H = 400 TITLE_APP = _("Приложение для планирования") diff --git a/frontend/workspace.py b/frontend/workspace.py index c418616..fe4ba2f 100644 --- a/frontend/workspace.py +++ b/frontend/workspace.py @@ -9,9 +9,10 @@ def str_time(time): return time.strftime("%Y-%m-%d %H:%M:%S") -TODO_ITEM_TABLE_TEXT_WIDTH = 15 -TODO_ITEM_TABLE_FINISHED_WIDTH = 8 -TODO_ITEM_TABLE_CREATED_AT_WIDTH = 15 +TODO_ITEM_TABLE_TEXT_WIDTH = 25 +TODO_ITEM_TABLE_FINISHED_WIDTH = 20 + +TODO_ITEM_TABLE_CREATED_AT_WIDTH = 25 def placeholder(): @@ -19,48 +20,46 @@ def placeholder(): class ToDoItemWidget(tk.Frame): - @staticmethod - def header(parent): - body = tk.Frame(parent) - - text = tk.Label(body, text=_("Текст"), width=TODO_ITEM_TABLE_TEXT_WIDTH) - text.pack(side="left") - - text = tk.Label(body, text=_("Выполнено"), width=TODO_ITEM_TABLE_FINISHED_WIDTH) - text.pack(side="left") - - text = tk.Label(body, text=_("Создано"), width=TODO_ITEM_TABLE_CREATED_AT_WIDTH) - text.pack(side="left") - - return body - - def __init__(self, *args, item, **argv): + def __init__(self, *args, row_number, item, table, **argv): super().__init__(*args, **argv) self.parent = self.master self.item = item - self.noteLabel = tk.Label(self, text=item.text, width=TODO_ITEM_TABLE_TEXT_WIDTH) - self.noteLabel.pack(side="left") + self.noteLabel = tk.Label( + table, + text=item.text, + width=TODO_ITEM_TABLE_TEXT_WIDTH, + justify="center", + font=("Arial", 8), + ) + self.noteLabel.grid(row=row_number, column=0) self.finished = tk.IntVar(value=int(item.finished)) self.finishedButton = tk.Checkbutton( - self, + table, variable=self.finished, command=self.finishedButton_command, width=TODO_ITEM_TABLE_FINISHED_WIDTH, + justify="center", ) - self.finishedButton.pack(side="left") + self.finishedButton.grid(row=row_number, column=1) self.createdAt = tk.Label( - self, text=str_time(item.created_at), width=TODO_ITEM_TABLE_CREATED_AT_WIDTH + table, + text=str_time(item.created_at), + width=TODO_ITEM_TABLE_CREATED_AT_WIDTH, + justify="center", ) - self.createdAt.pack(side="left") + self.createdAt.grid(row=row_number, column=2) self.remove = tk.Button( - self, text=_("Удалить"), command=lambda: self.parent.remove(self.item) + table, + text=_("Удалить"), + command=lambda: self.parent.remove(self.item), + justify="center", ) - self.remove.pack(side="left") + self.remove.grid(row=row_number, column=3) def finishedButton_command(self): self.item.modify(finished=self.finished.get() > 0) @@ -71,26 +70,69 @@ class ToDoListWidget(tk.Frame): super().__init__(*args, **argv) self.delete_list = delete_list - def fill(self, itemList): + def create_table_header(self, body): - header = ToDoItemWidget.header(self) - header.pack(side="left") - header.pack(side="top", fill="y") + header_font = ("Arial", "10", "bold") + text = tk.Label( + body, + text=_("Текст"), + width=TODO_ITEM_TABLE_TEXT_WIDTH, + justify="center", + font=header_font, + ) + text.grid(row=0, column=0) + + done = tk.Label( + body, + text=_("Выполнено"), + width=TODO_ITEM_TABLE_FINISHED_WIDTH, + justify="center", + font=header_font, + ) + done.grid(row=0, column=1) + + created = tk.Label( + body, + text=_("Создано"), + width=TODO_ITEM_TABLE_CREATED_AT_WIDTH, + justify="center", + font=header_font, + ) + created.grid(row=0, column=2) + + def create_table(self, itemList): + table = tk.LabelFrame(self, relief=tk.GROOVE) + table.grid() + self.create_table_header(table) self.itemList = itemList - + row_number = 1 for item in itemList: - item = ToDoItemWidget(self, item=item) - item.pack(side="top", fill="y") + item = ToDoItemWidget(self, row_number=row_number, item=item, table=table) + row_number += 1 + return table - self.itemToAdd = tk.Text(self, width=15, height=1) - self.itemToAdd.pack(side="top") + def create_new_item(self): + table = tk.LabelFrame(self, relief=tk.GROOVE) + table.grid() + self.itemToAdd = tk.Text(table, width=15, height=1) + self.itemToAdd.grid(row=0, column=0) - add = tk.Button(self, text=_("Добавить заметку"), command=self.add_command) - add.pack(side="top") + add = tk.Button(table, text=_("Добавить заметку"), command=self.add_command) + add.grid(row=0, column=1) + return table + + def fill(self, itemList): + self.frame = tk.LabelFrame(self, relief=tk.GROOVE) + self.frame.grid(sticky="NEWS") + table = self.create_table(itemList) + table.grid(row=0, column=0) + + new = self.create_new_item() + new.grid(row=2, column=0) delete = tk.Button(self, text=_("Удалить лист"), command=self.delete_list) - delete.pack(side="top") + delete.grid(row=4, column=0) def update(self, itemList=None): self.clear()