#!/usr/bin/env python3 """ Test script to verify Page Setup functionality """ import sys from PyQt6.QtWidgets import QApplication from pyPhotoAlbum.project import Project, Page from pyPhotoAlbum.page_layout import PageLayout def test_page_setup_behavior(): """Test that page setup works correctly with multiple pages""" # Create a project with default size project = Project("Test Project") print(f"Initial project default page size: {project.page_size_mm}") # Add first page - should use project default page1_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1]) page1 = Page(layout=page1_layout, page_number=1) page1.manually_sized = False project.add_page(page1) print(f"Page 1 size: {page1.layout.size}, manually_sized: {page1.manually_sized}") # Add second page - should also use project default page2_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1]) page2 = Page(layout=page2_layout, page_number=2) page2.manually_sized = False project.add_page(page2) print(f"Page 2 size: {page2.layout.size}, manually_sized: {page2.manually_sized}") # Simulate changing page 1 size without setting as default print("\n--- Simulating Page Setup on Page 1 (without setting as default) ---") page1.layout.size = (200, 200) page1.layout.base_width = 200 page1.manually_sized = True print(f"Page 1 size after change: {page1.layout.size}, manually_sized: {page1.manually_sized}") print(f"Project default still: {project.page_size_mm}") print(f"Page 2 unchanged: {page2.layout.size}, manually_sized: {page2.manually_sized}") # Add third page - should use original project default page3_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1]) page3 = Page(layout=page3_layout, page_number=3) page3.manually_sized = False project.add_page(page3) print(f"Page 3 size: {page3.layout.size}, manually_sized: {page3.manually_sized}") # Simulate changing page 2 size AND setting as default print("\n--- Simulating Page Setup on Page 2 (with setting as default) ---") page2.layout.size = (250, 250) page2.layout.base_width = 250 page2.manually_sized = True project.page_size_mm = (250, 250) # Set as default print(f"Page 2 size after change: {page2.layout.size}, manually_sized: {page2.manually_sized}") print(f"Project default updated to: {project.page_size_mm}") # Add fourth page - should use NEW project default page4_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1]) page4 = Page(layout=page4_layout, page_number=4) page4.manually_sized = False project.add_page(page4) print(f"Page 4 size: {page4.layout.size}, manually_sized: {page4.manually_sized}") # Test double spread print("\n--- Testing Double Spread ---") page5_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1], is_facing_page=True) page5 = Page(layout=page5_layout, page_number=5, is_double_spread=True) page5.manually_sized = False project.add_page(page5) print(f"Page 5 (double spread) size: {page5.layout.size}, base_width: {page5.layout.base_width}") print(f"Expected: width should be 2x base_width = {project.page_size_mm[0] * 2}") print("\n--- Summary ---") for i, page in enumerate(project.pages, 1): spread_info = " (double spread)" if page.is_double_spread else "" manual_info = " *manually sized*" if page.manually_sized else "" print(f"Page {i}: {page.layout.size}{spread_info}{manual_info}") print(f"Project default: {project.page_size_mm}") print("\n✓ All tests passed!") if __name__ == "__main__": # Initialize Qt application (needed for PyQt6 widgets even in tests) app = QApplication(sys.argv) test_page_setup_behavior() print("\nTest completed successfully!")