Files
copydev-imposing-tool/app/splash.py
Jules e650eb9c68 Branding CopyDev complet — splash screen, A propos, statusbar
- Splash screen au demarrage (fond sombre, logo CopyDev, nom, coordonnees)
- Statut dans le splash : licence, mise a jour, chargement
- A propos refait : design sombre pro, logo 150px, version, description,
  coordonnees completes (email, web, tel), copyright
- Barre de titre : "CopyDev Imposing Tool vX.X.X — www.copydev.fr"
- Barre de statut : mention "CopyDev — contact@copydev.fr" permanente

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:49:23 +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: #0f172a;")
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: white;")
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: #94a3b8;")
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: #64748b;")
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: #475569;")
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: #334155;")
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()