buzz/buzz/widgets/icon_presentation.py
David Olowomeye 6e54b5cb02
Implemented presentation window for live transcripts #1306 (#1323)
Co-authored-by: Raivis Dejus <orvils@gmail.com>
2025-12-23 19:29:34 +00:00

60 lines
1.3 KiB
Python

from PyQt6.QtGui import QIcon, QPixmap, QPainter, QPalette
from PyQt6.QtCore import QSize
from PyQt6.QtSvg import QSvgRenderer
import os
from buzz.assets import APP_BASE_DIR
class PresentationIcon:
"Icons for presentation window controls"
def __init__(self, parent, svg_path: str, color: str = None):
self.parent = parent
self.svg_path = svg_path
self.color = color or self.get_default_color()
def get_default_color(self) -> str:
"""Get default icon color based on theme"""
palette = self.parent.palette()
is_dark = palette.window().color().black() > 127
return "#EEE" if is_dark else "#555"
def get_icon(self) -> QIcon:
"""Load SVG icon and return as QIcon"""
#Load from asset first
full_path = os.path.join(APP_BASE_DIR, "assets", "icons", os.path.basename(self.svg_path))
if not os.path.exists(full_path):
pixmap = QPixmap(24, 24)
pixmap.fill(self.color)
return QIcon(pixmap)
#Load SVG
renderer = QSvgRenderer(full_path)
pixmap = QPixmap(24, 24)
pixmap.fill(Qt.GlobalColor.transparent)
painter = QPainter(pixmap)
renderer.render(painter)
painter.end()
return QIcon(pixmap)