add Regestriy Set for Values
parent
2f731e65c5
commit
454af63670
33
gui.py
33
gui.py
|
|
@ -11,7 +11,18 @@ class CustomerThinkerApp(ctk.CTk):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.title("CustomerThinker PDF Export Tool")
|
self.title("CustomerThinker PDF Export Tool")
|
||||||
self.geometry("500x500")
|
window_width = 400
|
||||||
|
window_height = 400
|
||||||
|
|
||||||
|
# Bildschirmgröße ermitteln
|
||||||
|
screen_width = self.winfo_screenwidth()
|
||||||
|
screen_height = self.winfo_screenheight()
|
||||||
|
|
||||||
|
# Position zum Zentrieren berechnen
|
||||||
|
x = int((screen_width / 2) - (window_width / 2))
|
||||||
|
y = int((screen_height / 2) - (window_height / 2))
|
||||||
|
|
||||||
|
self.geometry(f"{window_width}x{window_height}+{x}+{y}")
|
||||||
self.resizable(False, False)
|
self.resizable(False, False)
|
||||||
ctk.set_appearance_mode("System") # "Dark", "Light", "System"
|
ctk.set_appearance_mode("System") # "Dark", "Light", "System"
|
||||||
ctk.set_default_color_theme("blue") # Andere Themes: "green", "dark-blue"
|
ctk.set_default_color_theme("blue") # Andere Themes: "green", "dark-blue"
|
||||||
|
|
@ -63,8 +74,24 @@ class CustomerThinkerApp(ctk.CTk):
|
||||||
self.logo_label.bind("<Leave>", self.on_logo_leave) # Wenn die Maus das Logo verlässt
|
self.logo_label.bind("<Leave>", 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
|
self.logo_label.place(x=0, y=0, anchor="se") # Vorläufige Position setzen
|
||||||
|
|
||||||
# Configure-Event um das Logo nach dem Rendern richtig zu platzieren
|
# Konfigurations-Button unten links
|
||||||
self.bind("<Configure>", self.update_logo_position)
|
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")
|
||||||
|
|
||||||
|
# Einmaliges Binden: Position von Logo UND Button aktualisieren
|
||||||
|
self.bind("<Configure>", self.update_positions)
|
||||||
|
|
||||||
|
|
||||||
|
def run_reg_check(self):
|
||||||
|
script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "reg_check.py")
|
||||||
|
subprocess.Popen([sys.executable, script_path])
|
||||||
|
|
||||||
|
def update_positions(self, event=None):
|
||||||
|
# Logo rechts unten
|
||||||
|
self.logo_label.place(x=self.winfo_width() - 10, y=self.winfo_height() - 10, anchor="se")
|
||||||
|
# Konfig-Button links unten
|
||||||
|
self.config_button.place(x=10, y=self.winfo_height() - 10, anchor="sw")
|
||||||
|
|
||||||
|
|
||||||
def open_link(self, event=None):
|
def open_link(self, event=None):
|
||||||
webbrowser.open("https://www.itdata-gera.de") # Ändere dies auf die gewünschte URL
|
webbrowser.open("https://www.itdata-gera.de") # Ändere dies auf die gewünschte URL
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,36 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import requests
|
import requests
|
||||||
from dotenv import load_dotenv
|
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import fitz # PyMuPDF
|
import fitz # PyMuPDF
|
||||||
import win32print
|
import win32print
|
||||||
import win32ui
|
import win32ui
|
||||||
from PIL import Image, ImageWin
|
from PIL import Image, ImageWin
|
||||||
|
import winreg # ← Registry-Zugriff
|
||||||
|
os.system("chcp 65001")
|
||||||
|
|
||||||
# .env laden
|
# Registry-Pfad
|
||||||
load_dotenv()
|
REG_PATH = r"Software\PDFExporter"
|
||||||
|
|
||||||
# .ENV Import
|
# Registry-Funktion zum Lesen
|
||||||
url = os.getenv('API_URL')
|
def read_registry_value(name):
|
||||||
label_printer = os.getenv('LABEL_DRUCKER') # Name des Labels-Druckers
|
try:
|
||||||
order_printer = os.getenv('ORDER_DRUCKER') # Name des Order-Druckers
|
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_READ)
|
||||||
|
value, _ = winreg.QueryValueEx(key, name)
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
return value
|
||||||
|
except FileNotFoundError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Werte aus Registry lesen
|
||||||
|
url = read_registry_value("Server")
|
||||||
|
api_key = read_registry_value("APIKey")
|
||||||
|
label_printer = read_registry_value("LabelPrinter")
|
||||||
|
order_printer = read_registry_value("OrderPrinter")
|
||||||
|
|
||||||
|
if not all([url, label_printer, order_printer]):
|
||||||
|
print("Fehlende Konfiguration in der Registry! Bitte zuerst Konfiguration über die GUI durchführen.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# Log-Dateipfad
|
# Log-Dateipfad
|
||||||
log_dir = "logs"
|
log_dir = "logs"
|
||||||
|
|
@ -117,7 +133,7 @@ if len(sys.argv) > 1:
|
||||||
else:
|
else:
|
||||||
printer = order_printer
|
printer = order_printer
|
||||||
|
|
||||||
log_message(f"Einzeldatei-Modus: {file_to_print} → {printer}")
|
log_message(f"Einzeldatei-Modus: {file_to_print} - {printer}")
|
||||||
print_pdf(file_to_print, printer)
|
print_pdf(file_to_print, printer)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
import customtkinter as ctk
|
||||||
|
import winreg
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Registry-Pfad definieren
|
||||||
|
REG_PATH = r"Software\PDFExporter"
|
||||||
|
|
||||||
|
def read_registry_value(name):
|
||||||
|
try:
|
||||||
|
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_READ)
|
||||||
|
value, _ = winreg.QueryValueEx(key, name)
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
return value
|
||||||
|
except FileNotFoundError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def write_registry_value(name, value):
|
||||||
|
try:
|
||||||
|
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, REG_PATH)
|
||||||
|
winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value)
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Fehler beim Schreiben in Registry: {e}")
|
||||||
|
|
||||||
|
# def config_exists():
|
||||||
|
# return read_registry_value("APIKey") is not None
|
||||||
|
|
||||||
|
def save_config_and_close(api_entry, server_entry, label_entry, order_entry, app):
|
||||||
|
write_registry_value("APIKey", api_entry.get())
|
||||||
|
write_registry_value("Server", server_entry.get())
|
||||||
|
write_registry_value("LabelPrinter", label_entry.get())
|
||||||
|
write_registry_value("OrderPrinter", order_entry.get())
|
||||||
|
app.destroy()
|
||||||
|
|
||||||
|
def show_config_gui():
|
||||||
|
ctk.set_appearance_mode("System")
|
||||||
|
ctk.set_default_color_theme("blue")
|
||||||
|
|
||||||
|
app = ctk.CTk()
|
||||||
|
app.title("Erstkonfiguration")
|
||||||
|
window_width = 400
|
||||||
|
window_height = 400
|
||||||
|
|
||||||
|
# Bildschirmgröße ermitteln
|
||||||
|
screen_width = app.winfo_screenwidth()
|
||||||
|
screen_height = app.winfo_screenheight()
|
||||||
|
|
||||||
|
# Position zum Zentrieren berechnen
|
||||||
|
x = int((screen_width / 2) - (window_width / 2))
|
||||||
|
y = int((screen_height / 2) - (window_height / 2))
|
||||||
|
|
||||||
|
app.geometry(f"{window_width}x{window_height}+{x}+{y}")
|
||||||
|
|
||||||
|
frame = ctk.CTkFrame(master=app)
|
||||||
|
frame.pack(pady=20, padx=20, fill="both", expand=True)
|
||||||
|
|
||||||
|
# Vorhandene Werte aus der Registry lesen
|
||||||
|
existing_api = read_registry_value("APIKey") or ""
|
||||||
|
existing_server = read_registry_value("Server") or ""
|
||||||
|
existing_label = read_registry_value("LabelPrinter") or ""
|
||||||
|
existing_order = read_registry_value("OrderPrinter") or ""
|
||||||
|
|
||||||
|
api_label = ctk.CTkLabel(master=frame, text="API Key:")
|
||||||
|
api_label.pack(pady=5)
|
||||||
|
api_entry = ctk.CTkEntry(master=frame, width=300)
|
||||||
|
api_entry.insert(0, existing_api)
|
||||||
|
api_entry.pack()
|
||||||
|
|
||||||
|
server_label = ctk.CTkLabel(master=frame, text="Server:")
|
||||||
|
server_label.pack(pady=5)
|
||||||
|
server_entry = ctk.CTkEntry(master=frame, width=300)
|
||||||
|
server_entry.insert(0, existing_server)
|
||||||
|
server_entry.pack()
|
||||||
|
|
||||||
|
label_label = ctk.CTkLabel(master=frame, text="Label-Drucker:")
|
||||||
|
label_label.pack(pady=5)
|
||||||
|
label_entry = ctk.CTkEntry(master=frame, width=300)
|
||||||
|
label_entry.insert(0, existing_label)
|
||||||
|
label_entry.pack()
|
||||||
|
|
||||||
|
order_label = ctk.CTkLabel(master=frame, text="Order-Drucker:")
|
||||||
|
order_label.pack(pady=5)
|
||||||
|
order_entry = ctk.CTkEntry(master=frame, width=300)
|
||||||
|
order_entry.insert(0, existing_order)
|
||||||
|
order_entry.pack()
|
||||||
|
|
||||||
|
save_button = ctk.CTkButton(master=frame, text="Speichern", command=lambda: save_config_and_close(
|
||||||
|
api_entry, server_entry, label_entry, order_entry, app))
|
||||||
|
save_button.pack(pady=15)
|
||||||
|
|
||||||
|
app.mainloop()
|
||||||
|
|
||||||
|
def start_gui_app():
|
||||||
|
# gui.py im gleichen Verzeichnis starten
|
||||||
|
script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "gui.py")
|
||||||
|
subprocess.Popen([sys.executable, script_path])
|
||||||
|
|
||||||
|
|
||||||
|
show_config_gui()
|
||||||
Loading…
Reference in New Issue