theme works
This commit is contained in:
@ -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"
|
||||
|
Reference in New Issue
Block a user