Source code for pyqt_liquidglass._types
"""Type definitions for pyqt-liquidglass."""
from __future__ import annotations
from dataclasses import dataclass, field
from enum import IntEnum
__all__ = ["BlendingMode", "GlassMaterial", "GlassOptions"]
[docs]
class GlassMaterial(IntEnum):
"""
Available materials for glass effects.
These map to NSVisualEffectMaterial values for the fallback
implementation on pre-macOS 26 systems.
"""
TITLEBAR = 3
SELECTION = 4
MENU = 5
POPOVER = 6
SIDEBAR = 7
HEADER_VIEW = 10
SHEET = 11
WINDOW_BACKGROUND = 12
HUD = 13
FULLSCREEN_UI = 15
TOOLTIP = 17
CONTENT_BACKGROUND = 18
UNDER_WINDOW_BACKGROUND = 21
UNDER_PAGE_BACKGROUND = 22
[docs]
class BlendingMode(IntEnum):
"""
Blending modes for visual effect views.
These map to NSVisualEffectBlendingMode values.
"""
BEHIND_WINDOW = 0
WITHIN_WINDOW = 1
[docs]
@dataclass(frozen=True, slots=True)
class GlassOptions:
"""
Configuration options for glass effects.
Attributes:
corner_radius: Corner radius in points for rounded glass effects.
Only applies to NSGlassEffectView on macOS 26+.
material: The visual effect material to use. Only applies to
NSVisualEffectView fallback on older macOS versions.
blending_mode: How the effect blends with content. Only applies
to NSVisualEffectView fallback.
padding: Inset padding from widget edges in points (left, top, right, bottom).
"""
corner_radius: float = 0.0
material: GlassMaterial = GlassMaterial.UNDER_WINDOW_BACKGROUND
blending_mode: BlendingMode = BlendingMode.BEHIND_WINDOW
padding: tuple[float, float, float, float] = field(default=(0.0, 0.0, 0.0, 0.0))
[docs]
@classmethod
def window(cls) -> GlassOptions:
"""
Create options for full window glass effects.
Returns:
GlassOptions configured for window-wide glass.
"""
return cls(
corner_radius=0.0,
material=GlassMaterial.UNDER_WINDOW_BACKGROUND,
blending_mode=BlendingMode.BEHIND_WINDOW,
padding=(0.0, 0.0, 0.0, 0.0),
)