refactor: Improve about dialog with better layout and clickable repository link
- Convert about dialog from messagebox to custom Toplevel window - Improve text formatting and readability with proper spacing - Make Git repository link clickable (opens in browser with webbrowser module) - Better layout with aligned labels and structured information display - Add close button for better user experience
This commit is contained in:
126
gui.py
126
gui.py
@@ -10,6 +10,7 @@ from pathlib import Path
|
|||||||
import threading
|
import threading
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
|
import webbrowser
|
||||||
from pdf_to_ics import extract_dienstplan_data, create_ics_from_dienstplan
|
from pdf_to_ics import extract_dienstplan_data, create_ics_from_dienstplan
|
||||||
from update_checker import check_for_updates, get_current_version
|
from update_checker import check_for_updates, get_current_version
|
||||||
|
|
||||||
@@ -263,22 +264,125 @@ class PDFtoICSGUI:
|
|||||||
|
|
||||||
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.title("Über dieses Programm")
|
||||||
|
about_window.geometry("500x350")
|
||||||
|
about_window.resizable(False, False)
|
||||||
|
|
||||||
|
# Zentriere das Fenster
|
||||||
|
about_window.transient(self.root)
|
||||||
|
about_window.grab_set()
|
||||||
|
|
||||||
|
# Header
|
||||||
|
header = tk.Label(
|
||||||
|
about_window,
|
||||||
|
text="PDF zu ICS Konverter",
|
||||||
|
font=("Arial", 16, "bold"),
|
||||||
|
bg="#2c3e50",
|
||||||
|
fg="white",
|
||||||
|
pady=15
|
||||||
|
)
|
||||||
|
header.pack(fill=tk.X)
|
||||||
|
|
||||||
|
# Content Frame
|
||||||
|
content = tk.Frame(about_window, padx=20, pady=20)
|
||||||
|
content.pack(fill=tk.BOTH, expand=True)
|
||||||
|
|
||||||
|
# Version
|
||||||
version = get_current_version()
|
version = get_current_version()
|
||||||
about_text = f"""PDF zu ICS Konverter - Dienstplan Importer
|
version_label = tk.Label(
|
||||||
Version {version}
|
content,
|
||||||
|
text=f"Version {version}",
|
||||||
|
font=("Arial", 11, "bold"),
|
||||||
|
fg="#2c3e50"
|
||||||
|
)
|
||||||
|
version_label.pack(anchor=tk.W, pady=(0, 15))
|
||||||
|
|
||||||
Entwickler: Sebastian Köhler
|
# Info-Texte
|
||||||
Firma: Webfarben
|
info_texts = [
|
||||||
Kontakt: kontakt@webfarben.de
|
("Firma:", "Webfarben"),
|
||||||
|
("Programmierer:", "Sebastian Köhler"),
|
||||||
|
("Kontakt:", "kontakt@webfarben.de"),
|
||||||
|
]
|
||||||
|
|
||||||
Git Repository:
|
for label, value in info_texts:
|
||||||
https://git.file-archive.de/webfarben/pdf_to_ics.git
|
frame = tk.Frame(content)
|
||||||
|
frame.pack(anchor=tk.W, pady=3, fill=tk.X)
|
||||||
|
|
||||||
Ein Programm zur Konvertierung von Dienstplan-PDFs
|
label_widget = tk.Label(
|
||||||
zu ICS-Kalenderdateien für einfaches Importieren
|
frame,
|
||||||
in Kalenderprogramme."""
|
text=label,
|
||||||
|
font=("Arial", 10, "bold"),
|
||||||
|
width=15,
|
||||||
|
anchor=tk.W
|
||||||
|
)
|
||||||
|
label_widget.pack(side=tk.LEFT)
|
||||||
|
|
||||||
messagebox.showinfo("Über dieses Programm", about_text)
|
value_widget = tk.Label(
|
||||||
|
frame,
|
||||||
|
text=value,
|
||||||
|
font=("Arial", 10),
|
||||||
|
fg="#34495e"
|
||||||
|
)
|
||||||
|
value_widget.pack(side=tk.LEFT, padx=(5, 0))
|
||||||
|
|
||||||
|
# Git Repository mit Link
|
||||||
|
repo_frame = tk.Frame(content)
|
||||||
|
repo_frame.pack(anchor=tk.W, pady=(15, 0), fill=tk.X)
|
||||||
|
|
||||||
|
repo_label = tk.Label(
|
||||||
|
repo_frame,
|
||||||
|
text="Repository:",
|
||||||
|
font=("Arial", 10, "bold"),
|
||||||
|
width=15,
|
||||||
|
anchor=tk.W
|
||||||
|
)
|
||||||
|
repo_label.pack(side=tk.LEFT)
|
||||||
|
|
||||||
|
repo_url = "https://git.file-archive.de/webfarben/pdf_to_ics.git"
|
||||||
|
repo_link = tk.Label(
|
||||||
|
repo_frame,
|
||||||
|
text=repo_url,
|
||||||
|
font=("Arial", 10, "underline"),
|
||||||
|
fg="#3498db",
|
||||||
|
cursor="hand2"
|
||||||
|
)
|
||||||
|
repo_link.pack(side=tk.LEFT, padx=(5, 0))
|
||||||
|
repo_link.bind("<Button-1>", lambda e: webbrowser.open(repo_url))
|
||||||
|
|
||||||
|
# Beschreibung
|
||||||
|
desc_frame = tk.Frame(content)
|
||||||
|
desc_frame.pack(anchor=tk.W, pady=(20, 0), fill=tk.BOTH, expand=True)
|
||||||
|
|
||||||
|
desc_text = tk.Text(
|
||||||
|
desc_frame,
|
||||||
|
height=4,
|
||||||
|
font=("Arial", 9),
|
||||||
|
fg="#34495e",
|
||||||
|
wrap=tk.WORD,
|
||||||
|
relief=tk.FLAT,
|
||||||
|
bg=about_window.cget("bg")
|
||||||
|
)
|
||||||
|
desc_text.insert(tk.END,
|
||||||
|
"Ein Programm zur Konvertierung von Dienstplan-PDFs "
|
||||||
|
"zu ICS-Kalenderdateien für einfaches Importieren "
|
||||||
|
"in Kalenderprogramme.")
|
||||||
|
desc_text.config(state=tk.DISABLED)
|
||||||
|
desc_text.pack(fill=tk.BOTH, expand=True)
|
||||||
|
|
||||||
|
# Close Button
|
||||||
|
close_btn = tk.Button(
|
||||||
|
about_window,
|
||||||
|
text="Schließen",
|
||||||
|
command=about_window.destroy,
|
||||||
|
bg="#3498db",
|
||||||
|
fg="white",
|
||||||
|
font=("Arial", 10, "bold"),
|
||||||
|
padx=30,
|
||||||
|
pady=8,
|
||||||
|
cursor="hand2"
|
||||||
|
)
|
||||||
|
close_btn.pack(pady=(0, 15))
|
||||||
|
|
||||||
|
|
||||||
def save_config(self):
|
def save_config(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user