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>
This commit is contained in:
88
app/splash.py
Normal file
88
app/splash.py
Normal file
@@ -0,0 +1,88 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user