feat: Android Export Guide und UI Verbesserungen

- Add Android iPD Export-Anleitung im Hilfe-Menü
- Fix About Dialog Layout und Close Button Sichtbarkeit
- Fensteröffnungshöhe auf 400px optimiert
- UTF-8 Encoding Deklaration für korrekte Umlaute
This commit is contained in:
2026-02-23 19:51:49 +01:00
parent 44857c6a3c
commit fde69adcec

111
gui.py
View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
""" """
GUI für PDF zu ICS Konverter GUI für PDF zu ICS Konverter
Grafische Benutzeroberfläche mit Tkinter Grafische Benutzeroberfläche mit Tkinter
@@ -258,15 +259,117 @@ class PDFtoICSGUI:
# Hilfe-Menü # Hilfe-Menü
help_menu = tk.Menu(menubar, tearoff=0) help_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="Hilfe", menu=help_menu) menubar.add_cascade(label="Hilfe", menu=help_menu)
help_menu.add_command(label="PDF-Export auf Android (iPD)", command=self.show_android_export_guide)
help_menu.add_separator()
help_menu.add_command(label="Über dieses Programm", command=self.show_about_dialog) help_menu.add_command(label="Über dieses Programm", command=self.show_about_dialog)
help_menu.add_separator() help_menu.add_separator()
help_menu.add_command(label="Beenden", command=self.on_closing) help_menu.add_command(label="Beenden", command=self.on_closing)
def show_android_export_guide(self):
"""Zeige Anleitung für PDF-Export aus Android App (iPD)"""
guide_window = tk.Toplevel(self.root)
guide_window.title("PDF-Export auf Android (iPD)")
guide_window.geometry("550x550")
guide_window.resizable(False, False)
# Zentriere das Fenster
guide_window.transient(self.root)
guide_window.grab_set()
# Header
header = tk.Label(
guide_window,
text="PDF-Export aus iPD",
font=("Arial", 16, "bold"),
bg="#2c3e50",
fg="white",
pady=15
)
header.pack(fill=tk.X)
# Content Frame
content = tk.Frame(guide_window, padx=20, pady=20)
content.pack(fill=tk.BOTH, expand=True)
# Anleitung-Text
guide_text = tk.Text(
content,
height=20,
font=("Courier", 9),
fg="#34495e",
wrap=tk.WORD,
relief=tk.FLAT,
bg="#f8f9fa"
)
guide_content = """1. Öffne die iPD App auf deinem Android-Gerät
2. Öffne einen Dienstplan
3. Wähle den gewünschten Monat aus
4. Tippe auf das PDF-Symbol
(rechts oben, links neben dem 3-Punkte-Menü)
5. Tippe auf "Datei herunterladen"
(rechts oben, neben Drucker-Button)
6. Wähle "Im Arbeitsprofil speichern"
7. Sende die PDF-Datei als E-Mail-Anhang
an deine private E-Mailadresse
8. Transferiere die PDF-Datei auf deinen Computer
9. Öffne diese Anwendung und füge die PDF ein
10. Klicke "ICS Datei erstellen"
11. Importiere die ICS-Datei in deinen Kalender
✓ Fertig!"""
guide_text.insert(tk.END, guide_content)
guide_text.config(state=tk.DISABLED)
guide_text.pack(fill=tk.BOTH, expand=True)
# Button-Frame
button_frame = tk.Frame(content)
button_frame.pack(fill=tk.X, pady=(15, 0))
# Online-Link Button
online_btn = tk.Button(
button_frame,
text="📖 Detaillierte Anleitung online",
command=lambda: webbrowser.open("https://git.file-archive.de/webfarben/pdf_to_ics"),
bg="#3498db",
fg="white",
font=("Arial", 10, "bold"),
padx=20,
pady=10,
cursor="hand2"
)
online_btn.pack(side=tk.LEFT, padx=(0, 10))
# Close Button
close_btn = tk.Button(
button_frame,
text="Schließen",
command=guide_window.destroy,
bg="#95a5a6",
fg="white",
font=("Arial", 10, "bold"),
padx=20,
pady=10,
cursor="hand2"
)
close_btn.pack(side=tk.LEFT)
def show_about_dialog(self): def show_about_dialog(self):
"""Zeige About-Dialog mit Programminformationen""" """Zeige About-Dialog mit Programminformationen"""
about_window = tk.Toplevel(self.root) about_window = tk.Toplevel(self.root)
about_window.title("Über dieses Programm") about_window.title("Über dieses Programm")
about_window.geometry("500x350") about_window.geometry("500x400")
about_window.resizable(False, False) about_window.resizable(False, False)
# Zentriere das Fenster # Zentriere das Fenster
@@ -286,7 +389,7 @@ class PDFtoICSGUI:
# Content Frame # Content Frame
content = tk.Frame(about_window, padx=20, pady=20) content = tk.Frame(about_window, padx=20, pady=20)
content.pack(fill=tk.BOTH, expand=True) content.pack(fill=tk.BOTH, expand=False)
# Version # Version
version = get_current_version() version = get_current_version()
@@ -352,7 +455,7 @@ class PDFtoICSGUI:
# Beschreibung # Beschreibung
desc_frame = tk.Frame(content) desc_frame = tk.Frame(content)
desc_frame.pack(anchor=tk.W, pady=(20, 0), fill=tk.BOTH, expand=True) desc_frame.pack(anchor=tk.W, pady=(20, 0), fill=tk.BOTH, expand=False)
desc_text = tk.Text( desc_text = tk.Text(
desc_frame, desc_frame,
@@ -368,7 +471,7 @@ class PDFtoICSGUI:
"zu ICS-Kalenderdateien für einfaches Importieren " "zu ICS-Kalenderdateien für einfaches Importieren "
"in Kalenderprogramme.") "in Kalenderprogramme.")
desc_text.config(state=tk.DISABLED) desc_text.config(state=tk.DISABLED)
desc_text.pack(fill=tk.BOTH, expand=True) desc_text.pack(fill=tk.BOTH, expand=False)
# Close Button # Close Button
close_btn = tk.Button( close_btn = tk.Button(