A versatile data visualization component: bar, pie, line, scatter, radar charts.
Supports gradients, animations, and legend.
_properties: Dict[str, Dict[str, Any]] = {**UIElement._properties, 'chart_type': {'name': 'chart type', 'key': 'chart_type', 'type': str, 'editable': True, 'description': 'Type of chart: bar, pie, line, scatter, radar', 'options': ['bar', 'pie', 'line', 'scatter', 'radar']}, 'title': {'name': 'title', 'key': 'title', 'type': str, 'editable': True, 'description': 'Chart title text.'}, 'show_labels': {'name': 'show labels', 'key': 'show_labels', 'type': bool, 'editable': True, 'description': 'Display data labels.'}, 'show_legend': {'name': 'show legend', 'key': 'show_legend', 'type': bool, 'editable': True, 'description': 'Display color legend.'}, 'use_gradient': {'name': 'use gradient', 'key': 'use_gradient', 'type': bool, 'editable': True, 'description': 'Use color gradient across data points.'}}
def __init__(self: Any, x: int, y: int, width: int, height: int, data: Optional[List[float]] = None, labels: Optional[List[str]] = None, colors: Optional[List[Tuple[int, int, int]]] = None, chart_type: Literal['bar', 'pie', 'line', 'scatter', 'radar'] = 'bar', orientation: Literal['vertical', 'horizontal'] = 'vertical', title: str = '', show_labels: bool = True, show_legend: bool = False, min_value: Optional[float] = None, max_value: Optional[float] = None, radar_max_value: float = 1.0, radar_axis_labels: Optional[List[str]] = None, pivot: Tuple[float, float] = (0, 0), theme: Optional[ThemeType] = None, element_id: Optional[str] = None, **kwargs: dict) -> None
def _get_init_args(self: Any) -> Dict[str, Any]
def _default_colors(self: Any) -> List[Tuple[int, int, int]]
def title_font(self: Any) -> pygame.font.Font
def label_font(self: Any) -> pygame.font.Font
def legend_font(self: Any) -> pygame.font.Font
def set_data(self: Any, data: List[float], labels: Optional[List[str]] = None, animate: bool = False, duration: float = 0.5) -> None
def update(self: Any, dt: float, inputState: Any) -> None
def _recalc(self: Any) -> None
def _get_color(self: Any, index: int) -> Tuple[int, int, int]
def _get_point_color(self: Any, index: int, t: Optional[float] = None) -> Tuple[int, int, int]
def render(self: Any, renderer: Renderer) -> None
def _render_bar(self: Any, renderer: Any, left: Any, top: Any, width: Any, height: Any, theme: Any) -> Any
def _render_pie(self: Any, renderer: Any, left: Any, top: Any, width: Any, height: Any, theme: Any) -> Any
def _render_line(self: Any, renderer: Any, left: Any, top: Any, width: Any, height: Any, theme: Any) -> Any
def _render_scatter(self: Any, renderer: Any, left: Any, top: Any, width: Any, height: Any, theme: Any) -> Any
def _render_radar(self: Any, renderer: Any, left: Any, top: Any, width: Any, height: Any, theme: Any) -> Any
def _render_legend(self: Any, renderer: Any, x: Any, y: Any, theme: Any) -> Any
Real-time audio visualization element: bars, waveform, circle, particles, spectrum.
Connects to an OpenAL audio source.
_properties: Dict[str, Dict[str, Any]] = {**UIElement._properties, 'style': {'name': 'style', 'key': 'style', 'type': str, 'editable': True, 'description': 'Visualization style: bars, waveform, circle, particles, spectrum', 'options': ['bars', 'waveform', 'circle', 'particles', 'spectrum']}, 'sensitivity': {'name': 'sensitivity', 'key': 'sensitivity', 'type': float, 'editable': True, 'description': 'Audio sensitivity (0.1-5.0).'}, 'smoothing': {'name': 'smoothing', 'key': 'smoothing', 'type': float, 'editable': True, 'description': 'Smoothing factor (0.0-1.0).'}, 'num_bars': {'name': 'number of bars', 'key': 'num_bars', 'type': int, 'editable': True, 'description': 'Number of bars/segments.'}}
def __init__(self: Any, x: int, y: int, width: int, height: int, style: Literal['bars', 'waveform', 'circle', 'particles', 'spectrum'] = 'bars', source: Any = None, color_gradient: Optional[List[Tuple[int, int, int]]] = None, pivot: Tuple[float, float] = (0, 0), theme: Optional[ThemeType] = None, element_id: Optional[str] = None) -> None
def _get_init_args(self: Any) -> Dict[str, Any]
def _initialize_audio_data(self: Any) -> None
def _generate_gradient_surface(self: Any) -> None
def _interpolate_gradient(self: Any, ratio: float) -> Tuple[int, int, int]
def set_style(self: Any, style: str) -> None
def set_source(self: Any, source: Any) -> None
def set_color_gradient(self: Any, gradient: List[Tuple[int, int, int]]) -> None
def set_sensitivity(self: Any, sensitivity: float) -> None
def set_smoothing(self: Any, smoothing: float) -> None
def _get_audio_data(self: Any) -> List[float]
def _process_audio_data(self: Any, raw_data: List[float]) -> None
def update(self: Any, dt: float, inputState: Any) -> None
def render(self: Any, renderer: Renderer) -> None
def _render_bars(self: Any, renderer: Renderer, x: int, y: int) -> None
def _render_waveform(self: Any, renderer: Renderer, x: int, y: int) -> None
def _render_circle(self: Any, renderer: Renderer, x: int, y: int) -> None
def _render_particles(self: Any, renderer: Renderer, x: int, y: int) -> None
def _render_spectrum(self: Any, renderer: Renderer, x: int, y: int) -> None
def _get_bar_color(self: Any, value: float) -> Tuple[int, int, int]
def _get_waveform_color(self: Any, position: float) -> Tuple[int, int, int]
def _get_circle_color(self: Any, position: float) -> Tuple[int, int, int]
def _get_particle_color(self: Any, value: float, index: int) -> Tuple[int, int, int]
def _get_spectrum_color(self: Any, frequency: float) -> Tuple[int, int, int]
A tabular data display element with column headers, row styling, selection.
Fixed size and position; rows exceeding the height are clipped.
_properties: Dict[str, Dict[str, Any]] = {**UIElement._properties, 'header_height': {'name': 'header height', 'key': 'header_height', 'type': int, 'editable': True, 'description': 'Height of the header row in pixels.'}, 'row_height': {'name': 'row height', 'key': 'row_height', 'type': int, 'editable': True, 'description': 'Height of each data row in pixels.'}, 'cell_padding': {'name': 'cell padding', 'key': 'cell_padding', 'type': int, 'editable': True, 'description': 'Padding inside each cell in pixels.'}, 'show_headers': {'name': 'show headers', 'key': 'show_headers', 'type': bool, 'editable': True, 'description': 'Whether to display the header row.'}, 'selection_enabled': {'name': 'selection enabled', 'key': 'selection_enabled', 'type': bool, 'editable': True, 'description': 'Allow row selection via click.'}}
def __init__(self: Any, x: int, y: int, width: int, height: int, columns: Optional[List[str]] = None, rows: Optional[List[List[str]]] = None, header_height: int = 25, row_height: int = 25, cell_padding: int = 5, show_headers: bool = True, selection_enabled: bool = False, on_row_select: Optional[Callable[[int, List[str]], None]] = None, odd_row_color: Optional[Tuple[int, int, int]] = None, even_row_color: Optional[Tuple[int, int, int]] = None, header_color: Optional[Tuple[int, int, int]] = None, header_text_color: Optional[Tuple[int, int, int]] = None, border_color: Optional[Tuple[int, int, int]] = None, pivot: Tuple[float, float] = (0, 0), theme: Optional[ThemeType] = None, element_id: Optional[str] = None) -> None
def _get_init_args(self: Any) -> Dict[str, Any]
def font(self: Any) -> pygame.font.Font
def _recalc(self: Any) -> None
def add_column(self: Any, name: str) -> None
def insert_column(self: Any, index: int, name: str) -> None
def remove_column(self: Any, index: int) -> None
def add_row(self: Any, data: List[str]) -> None
def insert_row(self: Any, index: int, data: List[str]) -> None
def remove_row(self: Any, index: int) -> None
def set_cell(self: Any, row: int, col: int, value: str) -> None
def get_cell(self: Any, row: int, col: int) -> str
def clear(self: Any) -> None
def select_row(self: Any, row_index: int) -> None
def update(self: Any, dt: float, inputState: Any) -> None
def render(self: Any, renderer: Renderer) -> None
def on_click(self: Any) -> Any