better modern header
This commit is contained in:
@ -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."
|
||||
|
Reference in New Issue
Block a user