From 6cad24995fbbd5ee3e72d1d0c4453b8dcf05f300 Mon Sep 17 00:00:00 2001 From: punix Date: Thu, 5 Jun 2025 23:37:17 +0200 Subject: [PATCH] theme works --- lxtools_installerv3.py | 108 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 96 insertions(+), 12 deletions(-) diff --git a/lxtools_installerv3.py b/lxtools_installerv3.py index e69c346..2d530cf 100755 --- a/lxtools_installerv3.py +++ b/lxtools_installerv3.py @@ -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}" @@ -1474,7 +1558,7 @@ class LXToolsGUI: if latest_version != "Unknown": if installed_version != latest_version: version_label.config( - text=f"Latest: v{latest_version} (Update available)", + text=f"Latest: v {latest_version} (Update available)", fg="orange", ) self.log_message( @@ -1482,7 +1566,7 @@ class LXToolsGUI: ) else: version_label.config( - text=f"Latest: v{latest_version} (Up to date)", + text=f"Latest: v {latest_version} (Up to date)", fg="green", ) self.log_message(f"{project_info['name']}: Up to date") @@ -1505,10 +1589,10 @@ class LXToolsGUI: latest_version = self.app_manager.get_latest_version(project_key) if latest_version != "Unknown": version_label.config( - text=f"Available: v{latest_version}", fg="blue" + text=f"Available: v {latest_version}", fg="blue" ) self.log_message( - f"{project_info['name']}: Available v{latest_version}" + f"{project_info['name']}: Available v {latest_version}" ) else: version_label.config(text="Available: Unknown", fg="gray") @@ -1557,8 +1641,8 @@ class LXToolsGUI: dialog_text = ( f"{project_info['name']} is already installed.\n\n" - f"Installed version: v{installed_version}\n" - f"Latest version: v{latest_version}\n\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" f"Cancel = Do nothing"