diff --git a/src/brovski-adress-etiketten-verwaltung.py b/src/brovski-adress-etiketten-verwaltung.py index 1cb5f53..40fc260 100644 --- a/src/brovski-adress-etiketten-verwaltung.py +++ b/src/brovski-adress-etiketten-verwaltung.py @@ -1,7 +1,7 @@ import csv import os import tkinter as tk -from configparser import NoSectionError, NoOptionError +from configparser import NoOptionError from configparser import ConfigParser from tkinter import messagebox from tkinter import ttk @@ -74,8 +74,8 @@ class Application: top_frame.pack(side=tk.TOP, fill=tk.X) button_width = 8 tk.Button(top_frame, text="Export CSV", command=self.export_csv, width=button_width).grid(row=0, column=2) - tk.Button(top_frame, text="Insert", command=self.export_csv, width=button_width).grid(row=0, column=0) - tk.Button(top_frame, text="Delete", command=self.export_csv, width=button_width).grid(row=0, column=1) + tk.Button(top_frame, text="Insert", command=self.insert_record, width=button_width).grid(row=0, column=0) + tk.Button(top_frame, text="Delete", command=self.delete_record, width=button_width).grid(row=0, column=1) self.aktiv = tk.StringVar() self.firma = tk.StringVar() @@ -113,18 +113,75 @@ class Application: self.table.heading('4', text="Plz/Ort") self.table.pack() - self.table.bind("", self.select_record) + self.table.bind("", self.mouse_click) self._load_file() self.root.mainloop() - def select_record(self, event): - self.current_record = self.table.focus() - values = self.table.item(self.current_record, "values") + def insert_record(self): + if self.current_record is not None: + self.clear_entry_fields() + children = self.table.get_children() + values = [ + "x", + "Firma", + "Name", + "Strasse", + "Plz/Ort", + ] + self.table.insert('', 'end', values=values) + self._save_file() + + def delete_record(self): + if self.current_record is None: + return + + if messagebox.askyesno( + "Eintrag löschen?", + "Willst du diesen Eintrag wirklich löschen?\nDies kann nicht rückgängig gemacht werden"): + self.table.delete(self.current_record) + + self.clear_entry_fields() + self._save_file() + + + def clear_entry_fields(self): entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort] - for i in range(len(values)): - entry_var_list[i].set(values[i]) + for entry in entry_var_list: + entry.set("") + self.current_record = None + + def mouse_click(self, event): + region = self.table.identify("region", event.x, event.y) + + if region == "heading": + column = self.table.identify_column(event.x) + match column: + case "#1": + self.address_list.sort(key=lambda x: x[int(column[-1]) - 1]) + self.populate_table() + case "#2": + self.address_list.sort(key=lambda x: x[int(column[-1]) - 1]) + self.populate_table() + case "#3": + self.address_list.sort(key=lambda x: x[int(column[-1]) - 1]) + self.populate_table() + case "#4": + self.address_list.sort(key=lambda x: x[int(column[-1]) - 1]) + self.populate_table() + case "#5": + self.address_list.sort(key=lambda x: x[int(column[-1]) - 1]) + self.populate_table() + case _: + print(column) + + if region == "cell": + self.current_record = self.table.focus() + values = self.table.item(self.current_record, "values") + entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort] + for i in range(len(values)): + entry_var_list[i].set(values[i]) def update_record(self): if self.current_record is None: @@ -139,10 +196,7 @@ class Application: for key, value in values.items(): self.table.set(self.current_record, key, value) - entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort] - for entry in entry_var_list: - entry.set("") - self.current_record = None + self.clear_entry_fields() self._save_file() def _load_file(self):