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:
134
gui.py
134
gui.py
@@ -10,6 +10,7 @@ from pathlib import Path
|
||||
import threading
|
||||
import re
|
||||
import json
|
||||
import webbrowser
|
||||
from pdf_to_ics import extract_dienstplan_data, create_ics_from_dienstplan
|
||||
from update_checker import check_for_updates, get_current_version
|
||||
|
||||
@@ -263,22 +264,125 @@ class PDFtoICSGUI:
|
||||
|
||||
def show_about_dialog(self):
|
||||
"""Zeige About-Dialog mit Programminformationen"""
|
||||
version = get_current_version()
|
||||
about_text = f"""PDF zu ICS Konverter - Dienstplan Importer
|
||||
Version {version}
|
||||
|
||||
Entwickler: Sebastian Köhler
|
||||
Firma: Webfarben
|
||||
Kontakt: kontakt@webfarben.de
|
||||
|
||||
Git Repository:
|
||||
https://git.file-archive.de/webfarben/pdf_to_ics.git
|
||||
|
||||
Ein Programm zur Konvertierung von Dienstplan-PDFs
|
||||
zu ICS-Kalenderdateien für einfaches Importieren
|
||||
in Kalenderprogramme."""
|
||||
about_window = tk.Toplevel(self.root)
|
||||
about_window.title("Über dieses Programm")
|
||||
about_window.geometry("500x350")
|
||||
about_window.resizable(False, False)
|
||||
|
||||
messagebox.showinfo("Über dieses Programm", about_text)
|
||||
# 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_label = tk.Label(
|
||||
content,
|
||||
text=f"Version {version}",
|
||||
font=("Arial", 11, "bold"),
|
||||
fg="#2c3e50"
|
||||
)
|
||||
version_label.pack(anchor=tk.W, pady=(0, 15))
|
||||
|
||||
# Info-Texte
|
||||
info_texts = [
|
||||
("Firma:", "Webfarben"),
|
||||
("Programmierer:", "Sebastian Köhler"),
|
||||
("Kontakt:", "kontakt@webfarben.de"),
|
||||
]
|
||||
|
||||
for label, value in info_texts:
|
||||
frame = tk.Frame(content)
|
||||
frame.pack(anchor=tk.W, pady=3, fill=tk.X)
|
||||
|
||||
label_widget = tk.Label(
|
||||
frame,
|
||||
text=label,
|
||||
font=("Arial", 10, "bold"),
|
||||
width=15,
|
||||
anchor=tk.W
|
||||
)
|
||||
label_widget.pack(side=tk.LEFT)
|
||||
|
||||
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):
|
||||
|
||||
Reference in New Issue
Block a user