Files
copydev-imposing-tool/app/splash.py
Jules d7a538aa8c V2.5.0 — Theme gris moderne + fix recadrage
- Theme gris clair moderne avec accents cyan (#00b4d8)
  - Fond #e8e8e8, menus #f2f2f2, boutons blancs, hover cyan
  - Viewer fond gris, vignettes fond blanc
  - Splash screen en theme clair
  - Scrollbars, menus, dialogues tous en gris/cyan
- Fix recadrage : dialogue garde une reference (plus de garbage collection)
- Popup recadrage compact (360px fixe) et non-modal
- A propos adapte au theme clair

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:40:31 +01:00

89 lines
3.1 KiB
Python

"""Splash screen CopyDev au demarrage."""
import os
import sys
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel, QApplication
from PyQt6.QtGui import QPixmap, QFont, QColor, QPainter
from PyQt6.QtCore import Qt, QTimer
class SplashScreen(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, False)
self.setFixedSize(500, 400)
self.setStyleSheet("background-color: #f5f5f5; border: 1px solid #d0d0d0;")
layout = QVBoxLayout(self)
layout.setContentsMargins(40, 30, 40, 30)
# Logo
logo_label = QLabel()
base = sys._MEIPASS if getattr(sys, 'frozen', False) else os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
logo_path = os.path.join(base, "resources", "logo.png")
if os.path.exists(logo_path):
pixmap = QPixmap(logo_path).scaled(140, 140,
Qt.AspectRatioMode.KeepAspectRatio,
Qt.TransformationMode.SmoothTransformation)
logo_label.setPixmap(pixmap)
logo_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout.addWidget(logo_label)
layout.addSpacing(10)
# Nom app
title = QLabel("COPYDEV IMPOSING TOOL")
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
title.setFont(QFont("Segoe UI", 18, QFont.Weight.Bold))
title.setStyleSheet("color: #2d2d2d;")
layout.addWidget(title)
# Sous-titre
subtitle = QLabel("Outil professionnel d'imposition PDF")
subtitle.setAlignment(Qt.AlignmentFlag.AlignCenter)
subtitle.setFont(QFont("Segoe UI", 11))
subtitle.setStyleSheet("color: #666;")
layout.addWidget(subtitle)
layout.addSpacing(20)
# Status
self._status = QLabel("Demarrage...")
self._status.setAlignment(Qt.AlignmentFlag.AlignCenter)
self._status.setFont(QFont("Segoe UI", 9))
self._status.setStyleSheet("color: #888;")
layout.addWidget(self._status)
layout.addStretch()
# Coordonnees
contact = QLabel(
"CopyDev - Jules Dubois\n"
"contact@copydev.fr | www.copydev.fr"
)
contact.setAlignment(Qt.AlignmentFlag.AlignCenter)
contact.setFont(QFont("Segoe UI", 8))
contact.setStyleSheet("color: #999;")
layout.addWidget(contact)
# Copyright
copy_label = QLabel("2026 CopyDev - Tous droits reserves")
copy_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
copy_label.setFont(QFont("Segoe UI", 7))
copy_label.setStyleSheet("color: #bbb;")
layout.addWidget(copy_label)
# Centrer sur l'ecran
screen = QApplication.primaryScreen()
if screen:
geo = screen.geometry()
self.move(
(geo.width() - self.width()) // 2,
(geo.height() - self.height()) // 2
)
def set_status(self, text):
self._status.setText(text)
QApplication.processEvents()