Add profile module.
This commit is contained in:
+60
-3
@@ -1,6 +1,8 @@
|
||||
from pathlib import Path
|
||||
|
||||
from PySide6.QtCore import QCoreApplication, QThread, QSize, Qt
|
||||
from PySide6.QtGui import QScreen, QPixmap, QPainter, QPalette, QIcon
|
||||
from PySide6.QtWidgets import QMainWindow, QApplication
|
||||
from PySide6.QtGui import QScreen, QPixmap, QPainter, QPalette, QIcon, QColor
|
||||
from PySide6.QtWidgets import QMainWindow, QApplication, QWidget
|
||||
|
||||
|
||||
def move_window_to_center(window: QMainWindow):
|
||||
@@ -14,6 +16,7 @@ def is_main_thread() -> bool:
|
||||
app = QCoreApplication.instance()
|
||||
return app is not None and QThread.currentThread() == app.thread()
|
||||
|
||||
# ======================== AI generated ========================
|
||||
def recolor_standard_icon(widget, standard_pixmap, size=24):
|
||||
source_icon = widget.style().standardIcon(standard_pixmap)
|
||||
source = source_icon.pixmap(QSize(size, size))
|
||||
@@ -32,4 +35,58 @@ def recolor_standard_icon(widget, standard_pixmap, size=24):
|
||||
)
|
||||
painter.end()
|
||||
|
||||
return QIcon(result)
|
||||
return QIcon(result)
|
||||
|
||||
def recolor_pixmap(
|
||||
path: str | Path,
|
||||
color: QColor | None = None,
|
||||
) -> QPixmap:
|
||||
source = QPixmap(str(path))
|
||||
|
||||
if source.isNull():
|
||||
raise FileNotFoundError(f"Unable to load image: {path}")
|
||||
|
||||
if color is None:
|
||||
color = QApplication.palette().color(
|
||||
QPalette.ColorRole.ButtonText
|
||||
)
|
||||
|
||||
result = QPixmap(source.size())
|
||||
result.setDevicePixelRatio(source.devicePixelRatio())
|
||||
result.fill(Qt.GlobalColor.transparent)
|
||||
|
||||
painter = QPainter(result)
|
||||
painter.drawPixmap(0, 0, source)
|
||||
painter.setCompositionMode(
|
||||
QPainter.CompositionMode.CompositionMode_SourceIn
|
||||
)
|
||||
painter.fillRect(result.rect(), color)
|
||||
painter.end()
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def recolor_icon(
|
||||
path: str | Path,
|
||||
color: QColor | None = None,
|
||||
) -> QIcon:
|
||||
return QIcon(recolor_pixmap(path, color))
|
||||
|
||||
def is_light_theme(widget=None) -> bool:
|
||||
palette = (
|
||||
widget.palette()
|
||||
if widget is not None
|
||||
else QApplication.palette()
|
||||
)
|
||||
|
||||
color = palette.color(QPalette.ColorRole.Window)
|
||||
|
||||
luminance = (
|
||||
0.2126 * color.redF()
|
||||
+ 0.7152 * color.greenF()
|
||||
+ 0.0722 * color.blueF()
|
||||
)
|
||||
|
||||
return luminance >= 0.5
|
||||
|
||||
# ======================== AI generated END ========================
|
||||
Reference in New Issue
Block a user