feature/integracion-cpanel-asrecovery
This commit is contained in:
55
app/ui/tray_assets.py
Normal file
55
app/ui/tray_assets.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""Icono de bandeja del sistema."""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtGui import QColor, QIcon, QPainter, QPixmap
|
||||
|
||||
_ASSETS_DIR = Path(__file__).resolve().parent.parent.parent / "packaging" / "assets"
|
||||
|
||||
|
||||
def _generated_tray_icon() -> QIcon:
|
||||
"""Icono simple en memoria si no hay archivo empaquetado."""
|
||||
size = 32
|
||||
pixmap = QPixmap(size, size)
|
||||
pixmap.fill(Qt.GlobalColor.transparent)
|
||||
painter = QPainter(pixmap)
|
||||
painter.setRenderHint(QPainter.RenderHint.Antialiasing)
|
||||
painter.setBrush(QColor(0, 120, 215))
|
||||
painter.setPen(Qt.PenStyle.NoPen)
|
||||
painter.drawRoundedRect(2, 2, size - 4, size - 4, 6, 6)
|
||||
painter.setPen(QColor(255, 255, 255))
|
||||
font = painter.font()
|
||||
font.setBold(True)
|
||||
font.setPointSize(14)
|
||||
painter.setFont(font)
|
||||
painter.drawText(pixmap.rect(), Qt.AlignmentFlag.AlignCenter, "C")
|
||||
painter.end()
|
||||
return QIcon(pixmap)
|
||||
|
||||
|
||||
def load_tray_icon() -> QIcon:
|
||||
"""Carga icono de bandeja desde assets empaquetados o genera uno por defecto."""
|
||||
candidates: list[Path] = []
|
||||
meipass = getattr(sys, "_MEIPASS", None)
|
||||
if meipass:
|
||||
base = Path(meipass)
|
||||
candidates.extend(
|
||||
[
|
||||
base / "packaging" / "assets" / "tray-icon.png",
|
||||
base / "packaging" / "assets" / "tray-icon.ico",
|
||||
]
|
||||
)
|
||||
candidates.extend(
|
||||
[
|
||||
_ASSETS_DIR / "tray-icon.png",
|
||||
_ASSETS_DIR / "tray-icon.ico",
|
||||
]
|
||||
)
|
||||
for path in candidates:
|
||||
if path.is_file():
|
||||
icon = QIcon(str(path))
|
||||
if not icon.isNull():
|
||||
return icon
|
||||
return _generated_tray_icon()
|
||||
Reference in New Issue
Block a user