better modern header

This commit is contained in:
2025-06-06 01:14:23 +02:00
parent 6cad24995f
commit 4bdf63f613

View File

@ -397,7 +397,7 @@ class GiteaUpdate:
class NetworkChecker:
@staticmethod
def check_internet(host="8.8.8.8", port=53, timeout=3):
def check_internet_connection(host="8.8.8.8", port=53, timeout=3):
"""Check if internet connection is available"""
try:
socket.setdefaulttimeout(timeout)
@ -407,7 +407,7 @@ class NetworkChecker:
return False
@staticmethod
def check_repository(url="https://git.ilunix.de", timeout=5):
def check_repository_access(url="https://git.ilunix.de", timeout=5):
"""Check if repository is accessible"""
try:
urllib.request.urlopen(url, timeout=timeout)
@ -1116,7 +1116,7 @@ class LXToolsGUI:
# Create notebook (tabs)
self.notebook = ttk.Notebook(self.root)
self.notebook.pack(fill="both", expand=True, padx=15, pady=(0, 10))
self.notebook.pack(fill="both", expand=True, padx=15, pady=(10, 10))
# Create tabs
self._create_projects_tab()
@ -1134,29 +1134,89 @@ class LXToolsGUI:
return self.root
def _create_header(self):
"""Create header section"""
header_frame = tk.Frame(self.root, bg=self.colors["bg"])
header_frame.pack(fill="x", padx=15, pady=15)
"""Create clean header"""
# HEADER
header_frame = tk.Frame(self.root, bg="#2c3e50", height=70)
header_frame.pack(fill="x", pady=(0, 0))
header_frame.pack_propagate(False)
# Title
title_label = tk.Label(
header_frame,
text=f"{LXToolsAppConfig.APP_NAME} v{LXToolsAppConfig.VERSION}",
font=("Helvetica", 16, "bold"),
bg=self.colors["bg"],
fg=self.colors["text"],
)
title_label.pack()
# Content
content = tk.Frame(header_frame, bg="#2c3e50")
content.pack(fill="both", expand=True, padx=15, pady=12)
# OS info
os_label = tk.Label(
header_frame,
text=f"Detected OS: {self.detected_os}",
font=("Helvetica", 10),
bg=self.colors["bg"],
fg="#7f8c8d",
# LINKE SEITE: Icon + App Info
left_side = tk.Frame(content, bg="#2c3e50")
left_side.pack(side="left", anchor="w")
icon_text_frame = tk.Frame(left_side, bg="#2c3e50")
icon_text_frame.pack(anchor="w")
# Werkzeug-Icon
tk.Label(
icon_text_frame, text="🔧", font=("Helvetica", 18), bg="#2c3e50", fg="white"
).pack(side="left", padx=(0, 8))
# App Name und Version
text_frame = tk.Frame(icon_text_frame, bg="#2c3e50")
text_frame.pack(side="left")
tk.Label(
text_frame,
text="Lx Tools Installer",
font=("Helvetica", 14, "bold"),
fg="white",
bg="#2c3e50",
).pack(anchor="w")
tk.Label(
text_frame,
text=f"v{LXToolsAppConfig.VERSION} • Linux Application Installer",
font=("Helvetica", 9),
fg="#bdc3c7",
bg="#2c3e50",
).pack(anchor="w")
# RECHTE SEITE: System + Dynamischer Status
right_side = tk.Frame(content, bg="#2c3e50")
right_side.pack(side="right", anchor="e")
tk.Label(
right_side,
text=f"System: {self.detected_os}",
font=("Helvetica", 11),
fg="#ecf0f1",
bg="#2c3e50",
).pack(anchor="e")
# DYNAMISCHER Status (anfangs leer)
self.header_status_label = tk.Label(
right_side, text="", font=("Helvetica", 10), bg="#2c3e50" # Anfangs leer
)
os_label.pack()
self.header_status_label.pack(anchor="e", pady=(2, 0))
# Trennlinie
separator = tk.Frame(self.root, height=1, bg="#34495e")
separator.pack(fill="x", pady=0)
def update_header_status(self, message="", color="#1abc9c"):
"""Update status in header"""
if hasattr(self, "header_status_label"):
self.header_status_label.config(text=message, fg=color)
def check_ready_status(self):
"""Check if system is ready for installation"""
# Prüfungen:
internet_ok = NetworkChecker.check_internet_connection()
repo_ok = NetworkChecker.check_repository_access()
if internet_ok and repo_ok:
self.update_header_status("Ready for installation", "#1abc9c") # Grün
elif not internet_ok:
self.update_header_status("No internet connection", "#e74c3c") # Rot
elif not repo_ok:
self.update_header_status("Repository unavailable", "#f39c12") # Orange
else:
self.update_header_status("System checking...", "#3498db") # Blau
################### Teil 12 - GUI Projects Tab ###################
def _create_projects_tab(self):
@ -1604,6 +1664,7 @@ class LXToolsGUI:
self.update_progress("Status refresh completed.")
self.log_message("=== Status refresh completed ===")
self.check_ready_status()
################### Teil 17 - GUI Action Methods ###################
def install_selected(self):
@ -1613,7 +1674,7 @@ class LXToolsGUI:
return
# Check internet connection
if not NetworkChecker.check_internet():
if not NetworkChecker.check_internet_connection():
self.update_download_icon("error")
messagebox.showerror(
"Network Error",
@ -1621,7 +1682,7 @@ class LXToolsGUI:
)
return
if not NetworkChecker.check_repository():
if not NetworkChecker.check_repository_access():
self.update_download_icon("error")
messagebox.showerror(
"Repository Error", "Cannot access repository.\nPlease try again later."