From 5bd4a18660a7e9359fbf8a8fafe961aa0c83e732 Mon Sep 17 00:00:00 2001 From: Jules Date: Fri, 20 Mar 2026 11:19:19 +0100 Subject: [PATCH] Ajout logo CopyDev, icone et page A propos professionnelle - Logo CopyDev 500x500 + icone 64x64 - Icone affichee dans la barre de titre et la taskbar - Page A propos avec logo, version, description, coordonnees contact@copydev.fr, www.copydev.fr, copyright 2026 Co-Authored-By: Claude Opus 4.6 (1M context) --- app/main_window.py | 85 +++++++++++++++++++++++++++++++++++++++++---- main.py | 6 ++++ resources/icon.png | Bin 0 -> 3670 bytes resources/logo.png | Bin 0 -> 19141 bytes 4 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 resources/icon.png create mode 100755 resources/logo.png diff --git a/app/main_window.py b/app/main_window.py index 5ebb5ff..058265a 100644 --- a/app/main_window.py +++ b/app/main_window.py @@ -36,6 +36,13 @@ class MainWindow(QMainWindow): super().__init__() self.setWindowTitle("Copydev Imposing Tool") self.setMinimumSize(1000, 700) + + # Icone de la fenetre + from PyQt6.QtGui import QIcon + icon_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), + "resources", "logo.png") + if os.path.exists(icon_path): + self.setWindowIcon(QIcon(icon_path)) self._current_file = None self._result_file = None self._setup_menu() @@ -331,11 +338,75 @@ class MainWindow(QMainWindow): QMessageBox.critical(self, "Erreur", str(e)) def _show_about(self): - QMessageBox.about( - self, - "A propos", - "Copydev Imposing Tool\n\n" - "Outil d'imposition PDF\n" - "Remplace Quite Imposing Plus\n\n" - "Copydev 2026" + from PyQt6.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QLabel, QDialogButtonBox + from PyQt6.QtGui import QPixmap + from PyQt6.QtCore import Qt + + dlg = QDialog(self) + dlg.setWindowTitle("A propos") + dlg.setFixedSize(480, 380) + layout = QVBoxLayout(dlg) + + # Logo + logo_label = QLabel() + logo_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), + "resources", "logo.png") + if os.path.exists(logo_path): + pixmap = QPixmap(logo_path).scaled(120, 120, Qt.AspectRatioMode.KeepAspectRatio, + Qt.TransformationMode.SmoothTransformation) + logo_label.setPixmap(pixmap) + logo_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + layout.addWidget(logo_label) + + # Titre + title = QLabel("

Copydev Imposing Tool

") + title.setAlignment(Qt.AlignmentFlag.AlignCenter) + layout.addWidget(title) + + # Version + version = QLabel("Version 1.0.0") + version.setAlignment(Qt.AlignmentFlag.AlignCenter) + version.setStyleSheet("color: #666;") + layout.addWidget(version) + + layout.addSpacing(10) + + # Description + desc = QLabel( + "Outil professionnel d'imposition PDF.\n" + "Creation de livrets, n-up, repetition, imposition manuelle,\n" + "numerotation, masquage et fonds perdus." ) + desc.setAlignment(Qt.AlignmentFlag.AlignCenter) + desc.setWordWrap(True) + layout.addWidget(desc) + + layout.addSpacing(15) + + # Coordonnees + contact = QLabel( + '

' + 'CopyDev
' + 'Jules Dubois
' + 'contact@copydev.fr
' + 'www.copydev.fr' + '

' + ) + contact.setAlignment(Qt.AlignmentFlag.AlignCenter) + contact.setOpenExternalLinks(True) + layout.addWidget(contact) + + layout.addSpacing(5) + + # Copyright + copy_label = QLabel("© 2026 CopyDev — Tous droits reserves") + copy_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + copy_label.setStyleSheet("color: #999; font-size: 11px;") + layout.addWidget(copy_label) + + # Bouton Fermer + buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close) + buttons.rejected.connect(dlg.close) + layout.addWidget(buttons) + + dlg.exec() diff --git a/main.py b/main.py index f5383d6..a21bd90 100644 --- a/main.py +++ b/main.py @@ -42,6 +42,12 @@ def main(): app.setApplicationName("Copydev Imposing Tool") app.setOrganizationName("Copydev") + # Icone application + from PyQt6.QtGui import QIcon + icon_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "resources", "logo.png") + if os.path.exists(icon_path): + app.setWindowIcon(QIcon(icon_path)) + if not _check_auth(): sys.exit(1) diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4561ac8da5de5c95a58584a5035458087ba9e153 GIT binary patch literal 3670 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 literal 0 HcmV?d00001 diff --git a/resources/logo.png b/resources/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..30a61eb413c1c2fc1686c8ebf61ba2297404a699 GIT binary patch literal 19141 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 literal 0 HcmV?d00001