117 lines
3.4 KiB
Python
117 lines
3.4 KiB
Python
#!/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()
|