# app/widgets/loading_page.py import logging from PyQt6.QtWidgets import QWidget, QLabel, QVBoxLayout from PyQt6.QtGui import QMovie, QFont from PyQt6.QtCore import Qt, QSize # 1. Importa la nostra nuova funzione helper from app.utils.paths import resource_path logger = logging.getLogger(__name__) class LoadingPageWidget(QWidget): """ Una pagina a schermo intero mostrata durante operazioni lunghe. Mostra uno spinner animato e un testo. """ # 2. Rimuoviamo spinner_path dagli argomenti di default, ora lo calcoliamo internamente def __init__(self, text: str = "Caricamento in corso...", parent=None): super().__init__(parent) self.setStyleSheet("background-color: #F0F2F5;") layout = QVBoxLayout(self) layout.setAlignment(Qt.AlignmentFlag.AlignCenter) layout.setSpacing(20) # Spinner animato self.spinner_label = QLabel(self) # 3. Usiamo la funzione resource_path per ottenere il percorso assoluto spinner_full_path = resource_path("assets/icons/spinner.gif") self.movie = QMovie(str(spinner_full_path)) # Usiamo il percorso assoluto if self.movie.isValid(): self.movie.setScaledSize(QSize(64, 64)) self.spinner_label.setMovie(self.movie) self.movie.start() else: # Ora il messaggio di warning mostrerà il percorso completo, più utile per il debug logger.warning(f"Spinner non trovato o non valido: {spinner_full_path}") self.spinner_label.setText("...") # Testo (invariato) self.loading_text_label = QLabel(text, self) font = QFont("Segoe UI", 18) self.loading_text_label.setFont(font) self.loading_text_label.setStyleSheet("color: #333333; background-color: transparent;") layout.addWidget(self.spinner_label) layout.addWidget(self.loading_text_label) def setText(self, text: str): """Aggiorna il testo visualizzato.""" self.loading_text_label.setText(text)