#!/usr/bin/env python3 """Test script to analyze all theme header colors.""" import sys import tkinter as tk from pathlib import Path from init import logger from theme_manager import ThemeManager # Add src directory to Python path src_path = Path(__file__).parent / "src" sys.path.insert(0, str(src_path)) def analyze_all_themes(): """Analyze header colors for all available themes.""" print("Analyzing table header colors for all themes...") root = tk.Tk() root.withdraw() # Hide the window theme_manager = ThemeManager(root, logger) available_themes = theme_manager.get_available_themes() print(f"Available themes: {available_themes}") print("-" * 80) for theme in available_themes: print(f"\n=== {theme.upper()} THEME ===") # Apply theme success = theme_manager.apply_theme(theme) if not success: print(f"Failed to apply theme: {theme}") continue # Get theme colors colors = theme_manager.get_theme_colors() # Check base theme header colors style = theme_manager.style if style: try: base_header_bg = style.lookup("Treeview.Heading", "background") base_header_fg = style.lookup("Treeview.Heading", "foreground") custom_header_bg = style.lookup("Modern.Treeview.Heading", "background") custom_header_fg = style.lookup("Modern.Treeview.Heading", "foreground") print(f"Base theme BG: {colors['bg']}, FG: {colors['fg']}") print(f"Base header BG: {base_header_bg}, FG: {base_header_fg}") print(f"Custom header BG: {custom_header_bg}, FG: {custom_header_fg}") print( f"Select colors: BG: {colors['select_bg']}, " f"FG: {colors['select_fg']}" ) # Calculate contrast ratio (simplified) def get_luminance(color): """Get relative luminance of a color.""" if not color or not color.startswith("#"): return 0.5 try: rgb = tuple(int(color[i : i + 2], 16) for i in (1, 3, 5)) # Simplified luminance calculation return (0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]) / 255 except (ValueError, IndexError): return 0.5 base_bg_lum = get_luminance(str(base_header_bg)) base_fg_lum = get_luminance(str(base_header_fg)) custom_bg_lum = get_luminance(str(custom_header_bg)) custom_fg_lum = get_luminance(str(custom_header_fg)) base_contrast = abs(base_bg_lum - base_fg_lum) custom_contrast = abs(custom_bg_lum - custom_fg_lum) print(f"Base contrast ratio: {base_contrast:.3f}") print(f"Custom contrast ratio: {custom_contrast:.3f}") # Check if problematic if base_contrast < 0.3: print("⚠️ BASE THEME HAS POOR CONTRAST!") if custom_contrast < 0.3: print("⚠️ CUSTOM STYLE HAS POOR CONTRAST!") except Exception as e: print(f"Error analyzing {theme}: {e}") root.destroy() if __name__ == "__main__": analyze_all_themes()