Fix taskbar icon.

This commit is contained in:
2026-03-25 17:01:13 +01:00
parent 1a1a287471
commit d22b857fe1
3 changed files with 68 additions and 18 deletions
+48 -17
View File
@@ -1,23 +1,45 @@
# -*- mode: python ; coding: utf-8 -*-
import os
from pathlib import Path
# 🔥 Base path fiable (indépendant du dossier de lancement)
BASE_DIR = Path(os.getcwd()).resolve()
if not (BASE_DIR / "src").exists():
raise Exception("Lance PyInstaller depuis la racine du projet")
print("BASE_DIR =", BASE_DIR)
# ------------------------------------------------------------------
# Analysis
# ------------------------------------------------------------------
a = Analysis(
['src\\main.py'],
[str(BASE_DIR / 'src' / 'main.py')],
pathex=['src'],
binaries=[],
datas=[
('.\\styles\\styles.qss', 'styles'),
('.\\ui\\mainwindow_vertical_pager.ui', 'ui')
# Assets critiques
(str(BASE_DIR / 'assets' / 'Icon.ico'), 'assets'),
# Styles
(str(BASE_DIR / 'styles' / 'styles.qss'), 'styles'),
# UI (tu peux ajouter d'autres .ui ici)
(str(BASE_DIR / 'ui' / 'mainwindow_vertical_pager.ui'), 'ui'),
],
hiddenimports=[
"asyncio",
"pypresence",
"pypresence.baseclient",
"pypresence"
],
hookspath=[],
hooksconfig={
"qt_plugins": ["platforms", "styles"]
# 🔥 STRICT MINIMUM
"qt_plugins": ["platforms"]
},
runtime_hooks=[],
# 🔥 Exclusions
excludes=[
# PySide6 - modules non utilisés
'PySide6.Qt3DAnimation',
@@ -173,8 +195,9 @@ a = Analysis(
optimize=2,
)
# --- Filtre des DLLs Qt inutiles ---
# Ces DLLs sont incluses par analyse binaire malgré les excludes Python
# ------------------------------------------------------------------
# 🔥 Nettoyage DLL Qt (SAFE)
# ------------------------------------------------------------------
unwanted_dlls = [
'Qt6Pdf',
'Qt6Quick',
@@ -222,13 +245,13 @@ a.binaries = [
if not any(u.lower() in name.lower() for u in unwanted_dlls)
]
# AJOUTE CECI ICI :
# On filtre la liste des fichiers de données (datas)
# On exclut tout ce qui se trouve dans le dossier 'translations' de PySide6
a.datas = [f for f in a.datas if "translations" not in f[0].lower()]
# Si tu veux aussi supprimer les traductions système de Qt (fichiers .qm)
a.datas = [f for f in a.datas if not f[0].endswith('.qm')]
# ------------------------------------------------------------------
# 🔥 Suppression traductions Qt (gain taille)
# ------------------------------------------------------------------
a.datas = [
f for f in a.datas
if "translations" not in f[0].lower() and not f[0].endswith('.qm')
]
pyz = PYZ(a.pure, a.zipped_data)
@@ -243,6 +266,8 @@ exe = EXE(
debug=False,
bootloader_ignore_signals=False,
strip=False,
# 🔥 Compression max
upx=True,
upx_exclude=[
"_uuid.pyd",
@@ -256,11 +281,17 @@ exe = EXE(
"msvcp*.dll",
],
runtime_tmpdir=None,
console=True,
console=False,
# 🔥 ONEFILE
onefile=True,
disable_windowed_traceback=True,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['assets\\Icon.ico'],
# 🔥 Icône EXE (important mais pas suffisant seul)
icon=str(BASE_DIR / 'assets' / 'Icon.ico'),
)
+17 -1
View File
@@ -1,8 +1,12 @@
import ctypes
import sys
import os
import tempfile
from tools.utils import get_internal_dir
from PySide6.QtCore import QResource
from PySide6.QtGui import QFontDatabase, QFont
from PySide6.QtGui import QFontDatabase, QFont, QIcon
from PySide6.QtWidgets import QApplication
# Imports pour la gestion de la configuration
@@ -19,6 +23,8 @@ from ui.main_window import MainWindow
# Ne pas supprimer ! Enregistre les ressources Qt
import resources # noqa: F401 - required to register Qt resources
if getattr(sys, 'frozen', False):
os.environ["TMPDIR"] = tempfile.gettempdir()
# ---------------------------------------------------------------------------
# Bundle path resolution
@@ -26,6 +32,11 @@ import resources # noqa: F401 - required to register Qt resources
bundle_dir = get_internal_dir()
QResource.registerResource(f"{bundle_dir}/resources.py")
# ---------------------------------------------------------------------------
# Fix barre des tâches Windows
# ---------------------------------------------------------------------------
if sys.platform.startswith("win"):
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("LaTaniere.Launcher.1")
# ---------------------------------------------------------------------------
# Font helper
@@ -46,6 +57,10 @@ def load_custom_font() -> str:
if __name__ == "__main__":
app = QApplication(sys.argv)
# Icône sur l'application ET la barre des tâches
icon = QIcon(str(get_internal_dir() / "assets" / "Icon.ico"))
app.setWindowIcon(icon)
# 1. Initialisation UNIQUE du gestionnaire de config
config = ConfigManager()
@@ -89,6 +104,7 @@ if __name__ == "__main__":
# 4. Lancement de l'application si tout est OK
window = MainWindow(bundle_dir, config)
window.setWindowIcon(icon) # 🔥 important
# Note: Assure-toi que self.show() est bien dans le __init__ de MainWindow
# ou ajoute window.show() ici si tu l'en lèves du constructeur.
+3
View File
@@ -3,6 +3,7 @@ from sys import platform
from os import environ
from PySide6 import QtGui
from PySide6.QtGui import QIcon
from PySide6.QtCore import Qt, QTimer
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QMainWindow, QSizePolicy
@@ -47,6 +48,8 @@ class MainWindow(QMainWindow):
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.Window)
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
self.setWindowIcon(QIcon(str(bundle_dir / "assets" / "Icon.ico")))
# Par défaut on affiche la page normal pour la connexion au serveur
self.ui.stackedWidget.setCurrentIndex(0)
# On cache par défaut les infos liste d'attente