theme works

This commit is contained in:
2025-06-05 23:37:17 +02:00
parent e9e53b2866
commit 6cad24995f

View File

@ -19,9 +19,9 @@ from datetime import datetime
################### Teil 2 - LXTools App Configuration ###################
class LXToolsAppConfig:
VERSION = "1.0.9"
VERSION = "1.1.3"
APP_NAME = "LX Tools Installer"
WINDOW_WIDTH = 600
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 700
# Working directory
@ -124,6 +124,89 @@ class LXToolsAppConfig:
_ = LXToolsAppConfig.setup_translations()
# ----------------------------
# Color Manager Class (NEU für einheitliche Farben)
# ----------------------------
class ColorManager:
@staticmethod
def get_system_colors(root):
"""Get system colors that work across different themes"""
try:
# Versuche system-spezifische Farben zu ermitteln
default_bg = root.cget("bg")
# Teste verschiedene Farbnamen
test_colors = ["#f0f0f0", "#e1e1e1", "#d9d9d9", "lightgray"]
working_bg = default_bg
for color in test_colors:
try:
# Teste ob die Farbe funktioniert
test_label = tk.Label(root, bg=color)
working_bg = color
test_label.destroy()
break
except tk.TclError:
continue
return {
"default_bg": working_bg,
"card_bg": "#f8f9fa", # Hellerer Hintergrund für Cards
"hover_bg": "#e6f3ff",
"selected_bg": "#cce7ff",
"border_color": "#cccccc",
"header_bg": "#2c3e50", # Dunkler Header
"header_fg": "white", # Weiße Schrift im Header
"progress_bg": "#f1f3f4", # Wie Progress Label
}
except:
# Fallback Farben
return {
"default_bg": "#f0f0f0",
"card_bg": "#f8f9fa",
"hover_bg": "#e6f3ff",
"selected_bg": "#cce7ff",
"border_color": "#cccccc",
"header_bg": "#2c3e50",
"header_fg": "white",
"progress_bg": "#f1f3f4",
}
# ----------------------------
# Theme Manager Class
# ----------------------------
class ThemeManager:
@staticmethod
def apply_light_theme(root):
"""Apply light theme"""
try:
theme_dir = LXToolsAppConfig.THEMES_DIR
water_theme_path = os.path.join(theme_dir, "water.tcl")
if os.path.exists(water_theme_path):
try:
root.tk.call("source", water_theme_path)
root.tk.call("set_theme", "light")
return True
except tk.TclError:
pass
# System theme fallback
try:
style = ttk.Style()
if "clam" in style.theme_names():
style.theme_use("clam")
return True
except:
pass
except Exception:
pass
return False
################### Teil 3 - OS Detection und System Manager ###################
class OSDetector:
@staticmethod
@ -1017,16 +1100,17 @@ class LXToolsGUI:
self.root.geometry(
f"{LXToolsAppConfig.WINDOW_WIDTH}x{LXToolsAppConfig.WINDOW_HEIGHT}"
)
self.root.configure(bg=self.colors["bg"])
# Try to set icon
try:
icon = self.image_manager.load_image("app_icon")
icon = self.image_manager.load_image("download_icon")
if icon:
self.root.iconphoto(False, icon)
except:
pass
ThemeManager.apply_light_theme(self.root)
# Create header
self._create_header()
@ -1329,7 +1413,7 @@ class LXToolsGUI:
progress_container.pack(fill="x")
# Download Icon (left)
self.download_icon_label = tk.Label(progress_container, text="", width=4)
self.download_icon_label = tk.Label(progress_container, text="", width=50)
self.download_icon_label.pack(side="left", padx=(0, 10))
# Progress Text (right, expandable)
@ -1462,7 +1546,7 @@ class LXToolsGUI:
if self.app_manager.is_installed(project_key):
installed_version = self.app_manager.get_installed_version(project_key)
status_label.config(
text=f"✅ Installed (v{installed_version})", fg="green"
text=f"✅ Installed ({installed_version})", fg="green"
)
self.log_message(
f"{project_info['name']}: Installed v{installed_version}"
@ -1557,7 +1641,7 @@ class LXToolsGUI:
dialog_text = (
f"{project_info['name']} is already installed.\n\n"
f"Installed version: v{installed_version}\n"
f"Installed version: {installed_version}\n"
f"Latest version: v {latest_version}\n\n"
f"YES = Update (reinstall all files)\n"
f"NO = Uninstall\n"