#!/usr/bin/env python3 """ Test script for the loading widget functionality """ import sys import time from pathlib import Path from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget from PyQt6.QtCore import QTimer # Add parent directory to path sys.path.insert(0, str(Path(__file__).parent)) from pyPhotoAlbum.loading_widget import LoadingWidget class TestWindow(QMainWindow): """Test window for loading widget""" def __init__(self): super().__init__() self.setWindowTitle("Loading Widget Test") self.resize(800, 600) # Central widget central = QWidget() layout = QVBoxLayout() # Test buttons btn1 = QPushButton("Show Loading (Determinate)") btn1.clicked.connect(self.test_determinate) layout.addWidget(btn1) btn2 = QPushButton("Show Loading (Indeterminate)") btn2.clicked.connect(self.test_indeterminate) layout.addWidget(btn2) btn3 = QPushButton("Simulate File Loading") btn3.clicked.connect(self.simulate_file_loading) layout.addWidget(btn3) central.setLayout(layout) self.setCentralWidget(central) # Create loading widget self.loading_widget = LoadingWidget(self) # Timer for progress simulation self.timer = QTimer() self.timer.timeout.connect(self.update_progress) self.progress = 0 def test_determinate(self): """Test determinate progress""" self.loading_widget.show_loading("Loading...") self.loading_widget.set_indeterminate(False) self.loading_widget.set_progress(50, 100) # Auto hide after 3 seconds QTimer.singleShot(3000, self.loading_widget.hide_loading) def test_indeterminate(self): """Test indeterminate progress""" self.loading_widget.show_loading("Processing...") self.loading_widget.set_indeterminate(True) # Auto hide after 3 seconds QTimer.singleShot(3000, self.loading_widget.hide_loading) def simulate_file_loading(self): """Simulate file loading with progress""" self.progress = 0 self.loading_widget.show_loading("Extracting files...") self.loading_widget.set_indeterminate(False) self.timer.start(100) # Update every 100ms def update_progress(self): """Update progress during simulation""" self.progress += 5 if self.progress <= 40: self.loading_widget.set_status(f"Extracting files... ({self.progress}%)") elif self.progress <= 70: self.loading_widget.set_status("Loading project data...") elif self.progress <= 95: self.loading_widget.set_status("Normalizing asset paths...") else: self.loading_widget.set_status("Loading complete!") self.loading_widget.set_progress(self.progress, 100) if self.progress >= 100: self.timer.stop() QTimer.singleShot(500, self.loading_widget.hide_loading) def resizeEvent(self, event): """Handle resize""" super().resizeEvent(event) self.loading_widget.resizeParent() def main(): """Run test""" app = QApplication(sys.argv) window = TestWindow() window.show() print("Loading widget test window opened") print("Click buttons to test different loading states") sys.exit(app.exec()) if __name__ == "__main__": main()