#!/usr/bin/env python3 """ Test script to verify mouse wheel scrolling works in both the new entry window and edit window of TheChart application. """ import logging import tkinter as tk from src.ui_manager import UIManager def test_scrolling(): """Test both new entry and edit window scrolling.""" print("Testing mouse wheel scrolling functionality...") # Create test root window root = tk.Tk() root.title("Scrolling Test") root.geometry("800x600") # Create logger logger = logging.getLogger("test") logger.setLevel(logging.DEBUG) # Create UI manager ui_manager = UIManager(root, logger) # Create main frame main_frame = tk.Frame(root) main_frame.pack(fill="both", expand=True) main_frame.grid_rowconfigure(0, weight=1) main_frame.grid_rowconfigure(1, weight=1) main_frame.grid_columnconfigure(0, weight=1) main_frame.grid_columnconfigure(1, weight=1) # Test 1: Create input frame (new entry window) print("✓ Creating new entry input frame with mouse wheel scrolling...") ui_manager.create_input_frame(main_frame) # Test 2: Create edit window def test_edit_window(): print("✓ Creating edit window with mouse wheel scrolling...") # Sample data for edit window test_values = ( "01/15/2025", # date "3", # depression "5", # anxiety "7", # sleep "4", # appetite "1", # bupropion "09:00: 150", # bup_doses "0", # hydroxyzine "", # hydro_doses "1", # gabapentin "20:00: 100", # gaba_doses "0", # propranolol "", # prop_doses "0", # quetiapine "", # quet_doses "Test note", # note ) callbacks = { "save": lambda *args: print("Save callback called"), "delete": lambda *args: print("Delete callback called"), } edit_window = ui_manager.create_edit_window(test_values, callbacks) return edit_window # Add test button test_button = tk.Button( main_frame, text="Test Edit Window Scrolling", command=test_edit_window, font=("TkDefaultFont", 12), bg="#4CAF50", fg="white", padx=20, pady=10, ) test_button.grid(row=2, column=0, columnspan=2, pady=20) # Add instructions instructions = tk.Label( main_frame, text="Instructions:\n\n" "1. Use mouse wheel anywhere in the 'New Entry' section to test scrolling\n" "2. Click 'Test Edit Window Scrolling' button\n" "3. Use mouse wheel anywhere in the edit window to test scrolling\n" "4. Both windows should scroll smoothly with mouse wheel\n\n" "✓ Mouse wheel scrolling has been enhanced for both windows!", font=("TkDefaultFont", 10), justify="left", bg="#E8F5E8", padx=20, pady=15, ) instructions.grid(row=3, column=0, columnspan=2, padx=20, pady=10, sticky="ew") print("✓ Test setup complete!") print("\nMouse wheel scrolling features implemented:") print(" • Recursive binding to all child widgets") print(" • Platform-specific event handling (Windows/Linux)") print(" • Focus management for consistent scrolling") print(" • Works anywhere within the scrollable areas") print("\nTest the scrolling by moving your mouse wheel over any part of the") print("'New Entry' section or the edit window when opened.") root.mainloop() if __name__ == "__main__": test_scrolling()