From eb4da9d6e08bc2ec6403f6f68f8b31d2f4ffba72 Mon Sep 17 00:00:00 2001 From: Sebastian Serfling Date: Mon, 26 May 2025 14:10:27 +0200 Subject: [PATCH] Change Folder --- .env | 3 -- .gitignore | 5 +++ gui.py | 106 ++++++++++++++++++++++++++++++--------------- install_script.iss | 2 +- 4 files changed, 77 insertions(+), 39 deletions(-) delete mode 100644 .env create mode 100644 .gitignore diff --git a/.env b/.env deleted file mode 100644 index 46321b0..0000000 --- a/.env +++ /dev/null @@ -1,3 +0,0 @@ -API_URL=https://www.laudenbach-gera.de/shop/print/Orders.php -ORDER_DRUCKER=PDF24 -LABEL_DRUCKER=PDF24 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdd8ae4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/pdf_export.spec +/gui.spec +/dist/ +/build/ +/Output/ diff --git a/gui.py b/gui.py index 0ab147c..c3c207c 100644 --- a/gui.py +++ b/gui.py @@ -10,19 +10,17 @@ import winreg if getattr(sys, 'frozen', False): # Wenn das Skript in einer exe läuft, sind die Dateien im temporären Ordner bundle_dir = sys._MEIPASS - pdf_export_path = os.path.join('./export.exe') + pdf_export_path = os.path.join('export.exe') else: # Wenn das Skript nicht in einer exe läuft, benutze das aktuelle Arbeitsverzeichnis bundle_dir = os.path.dirname(os.path.abspath(__file__)) - pdf_export_path = os.path.join('./export.exe') + pdf_export_path = os.path.join('dist/export.exe') print(pdf_export_path) # Pfade für eingebundene Ressourcen logo_path = os.path.join(bundle_dir, 'logo.png') gif_path = os.path.join(bundle_dir, 'printer.gif') reg_check_path = os.path.join(bundle_dir, 'reg_check.py') - - icon_path = os.path.join(bundle_dir, 'printer.ico') class CustomerThinkerApp(ctk.CTk): @@ -58,26 +56,49 @@ class CustomerThinkerApp(ctk.CTk): self.build_gui() self.load_gif() - self.update_file_dropdown() + # self.update_file_dropdown() def build_gui(self): # Titel self.title_label = ctk.CTkLabel(self, text="PDF Export Tool", font=ctk.CTkFont(size=24, weight="bold")) self.title_label.pack(pady=20) - # Button - self.run_button = ctk.CTkButton(self, text="Alle Aufträge drucken", command=self.run_script) - self.run_button.pack(pady=10) + # Button Aufträge drucken + self.run_button = ctk.CTkButton(self, text="Alle Aufträge drucken", command=self.run_script,width=200,height=60,font=ctk.CTkFont(size=18) ) + self.run_button.pack(pady=50) # Auswahl: Letzte Labels oder Orders - self.dropdown_select = ctk.CTkComboBox(self, values=["Letzte Labels", "Letzte Orders"], - command=self.update_file_dropdown, width=200) - self.dropdown_select.set("Auswählen") - self.dropdown_select.pack(pady=10) + # self.dropdown_select = ctk.CTkComboBox(self, values=["Letzte Labels", "Letzte Orders"], + # command=self.update_file_dropdown, width=200) + # self.dropdown_select.set("Auswählen") + # self.dropdown_select.pack(pady=10) # Werte-Dropdown - self.dropdown_values = ctk.CTkComboBox(self, values=[], command=self.file_selected, width=200) - self.dropdown_values.pack(pady=10) + # self.dropdown_values = ctk.CTkComboBox(self, values=[], command=self.file_selected, width=200) + # self.dropdown_values.pack(pady=10) + + # Archiv Buttons + button_frame = ctk.CTkFrame(self, fg_color="transparent") + button_frame.pack(pady=0) + + ## Archive Label + self.labels_button = ctk.CTkButton( + button_frame, + text="Archiv Labels", + command=self.open_labels_folder, + width=100, + height=50 + ) + self.labels_button.pack(side="left",padx=10, pady=0) + + self.paketlist_button = ctk.CTkButton( + button_frame, + text="Archiv Paketlisten", + command=self.open_paketlist_folder, + width=100, + height=50 + ) + self.paketlist_button.pack(side="right",padx=10, pady=0) # Status self.status_label = ctk.CTkLabel(self, text="", font=ctk.CTkFont(size=16)) @@ -87,6 +108,7 @@ class CustomerThinkerApp(ctk.CTk): self.status_label_logo = ctk.CTkLabel(self, text="") self.status_label_logo.pack(pady=10) + # Logo unten rechts self.logo_image = ctk.CTkImage(Image.open(logo_path), size=(50, 50)) # Hier dein Logo self.logo_label = ctk.CTkLabel(self, image=self.logo_image, text="", fg_color="transparent") @@ -95,6 +117,8 @@ class CustomerThinkerApp(ctk.CTk): self.logo_label.bind("", self.on_logo_leave) # Wenn die Maus das Logo verlässt self.logo_label.place(x=0, y=0, anchor="se") # Vorläufige Position setzen + + # Konfigurations-Button unten links self.config_button = ctk.CTkButton(self, text="Konfiguration", width=100, command=self.run_reg_check) self.config_button.place(x=10, y=self.winfo_height() - 10, anchor="sw") @@ -111,6 +135,15 @@ class CustomerThinkerApp(ctk.CTk): # Konfig-Button links unten self.config_button.place(x=10, y=self.winfo_height() - 10, anchor="sw") + def open_labels_folder(self): + folder_path = os.path.abspath("label") + if sys.platform == "win32": + os.startfile(folder_path) + + def open_paketlist_folder(self): + folder_path = os.path.abspath("orders") + if sys.platform == "win32": + os.startfile(folder_path) def open_link(self, event=None): webbrowser.open("https://www.itdata-gera.de") # Ändere dies auf die gewünschte URL @@ -140,28 +173,28 @@ class CustomerThinkerApp(ctk.CTk): except FileNotFoundError: return [] - def update_file_dropdown(self, event=None): - selected_option = self.dropdown_select.get() - directory = self.labels_dir if selected_option == "Letzte Labels" else self.orders_dir - files = self.load_files(directory) + # def update_file_dropdown(self, event=None): + # selected_option = self.dropdown_select.get() + # directory = self.labels_dir if selected_option == "Letzte Labels" else self.orders_dir + # files = self.load_files(directory) + # + # if files: + # self.dropdown_values.configure(values=files) + # self.dropdown_values.set(files[0]) + # else: + # self.dropdown_values.configure(values=[]) + # self.dropdown_values.set("") + # + # self.run_button.configure(text="Alle Aufträge drucken", command=self.run_script) - if files: - self.dropdown_values.configure(values=files) - self.dropdown_values.set(files[0]) - else: - self.dropdown_values.configure(values=[]) - self.dropdown_values.set("") - - self.run_button.configure(text="Alle Aufträge drucken", command=self.run_script) - - def file_selected(self, event=None): - selected_file = self.dropdown_values.get() - if not selected_file: - return - selected_folder = self.labels_dir if self.dropdown_select.get() == "Letzte Labels" else self.orders_dir - full_path = os.path.join(selected_folder, selected_file) - - self.run_button.configure(text=f"{selected_file} drucken", command=lambda: self.run_single_file(full_path)) + # def file_selected(self, event=None): + # selected_file = self.dropdown_values.get() + # if not selected_file: + # return + # selected_folder = self.labels_dir if self.dropdown_select.get() == "Letzte Labels" else self.orders_dir + # full_path = os.path.join(selected_folder, selected_file) + # + # self.run_button.configure(text=f"{selected_file} drucken", command=lambda: self.run_single_file(full_path)) def run_script(self): print("run_script") @@ -182,6 +215,7 @@ class CustomerThinkerApp(ctk.CTk): result = subprocess.run([self.script_path], capture_output=True, text=True) if result.returncode == 0: self.set_status("✅ Alle Aufträge wurden gedruckt!", "green") + self.stop_animation() else: self.set_status("❌ Fehler beim Ausführen des Skripts.", "red") self.show_error(result.stderr) @@ -211,11 +245,13 @@ class CustomerThinkerApp(ctk.CTk): self.status_label.configure(text=text, text_color=color) def start_animation(self): + self.status_label_logo.pack(pady=10) self.animation_running = True self.animate() def stop_animation(self): self.animation_running = False + self.status_label_logo.pack_forget() def animate(self): if self.animation_running and self.frames: diff --git a/install_script.iss b/install_script.iss index 4e82f88..141e6d0 100644 --- a/install_script.iss +++ b/install_script.iss @@ -29,7 +29,7 @@ ArchitecturesAllowed=x64compatible ; the 64-bit view of the registry. ArchitecturesInstallIn64BitMode=x64compatible DisableProgramGroupPage=yes -InfoBeforeFile=C:\Users\Sebastian Serfling\PycharmProjects\PDF_EXPORT_Laudenbach\dist\Before_Install.txt +InfoBeforeFile=C:\Users\Sebastian Serfling\PycharmProjects\PDF_EXPORT_Laudenbach\Before_Install.txt ; Uncomment the following line to run in non administrative install mode (install for current user only). ;PrivilegesRequired=lowest OutputBaseFilename=PDFExporter