Source code for pygame_menu.widgets.widget.none
"""
pygame-menu
https://github.com/ppizarror/pygame-menu
NONE WIDGET
None widget definition.
"""
from __future__ import annotations
__all__ = ["NoneWidget", "NoneWidgetManager"]
from abc import ABC
from typing import TYPE_CHECKING
import pygame
from pygame_menu.utils import make_surface
from pygame_menu.widgets.core.widget import (
AbstractWidgetManager,
Widget,
WidgetTransformationNotImplemented,
)
if TYPE_CHECKING:
import pygame_menu
from pygame_menu._types import EventVectorType, NumberType
[docs]
class NoneWidget(Widget):
"""
None widget. Useful if used for filling column/row layout. None widget don't
accept values, padding, margin, cursors, position, sound, controls, and
cannot be selected. Also, none widget cannot accept callbacks, except draw
and update callbacks.
.. note::
NoneWidget does not accept transformations.
:param widget_id: ID of the widget
"""
def __init__(self, widget_id: str = "", *, visible: bool = True) -> None:
super().__init__(widget_id=widget_id, selectable=False, visible=visible)
self._surface = make_surface(0, 0, alpha=True)
def _apply_font(self) -> None:
pass
def set_padding(self, *args, **kwargs) -> NoneWidget:
return self
def get_selected_time(self) -> NumberType:
return 0
def set_title(self, *args, **kwargs) -> NoneWidget:
return self
def get_rect(self, *args, **kwargs) -> pygame.Rect:
return pygame.Rect(0, 0, 0, 0)
def set_background_color(self, *args, **kwargs) -> NoneWidget:
return self
def _draw_background_color(self, *args, **kwargs) -> None:
pass
def _draw_border(self, *args, **kwargs) -> None:
pass
def set_selection_effect(self, *args, **kwargs) -> NoneWidget:
return self
def apply(self, *args) -> None:
pass
def change(self, *args) -> None:
pass
def _draw(self, *args, **kwargs) -> None:
pass
def _render(self, *args, **kwargs) -> bool | None:
pass
def set_margin(self, *args, **kwargs) -> NoneWidget:
return self
def _apply_transforms(self, *args, **kwargs) -> None:
pass
def set_font(self, *args, **kwargs) -> NoneWidget:
return self
def update_font(self, *args, **kwargs) -> NoneWidget:
return self
def set_position(self, *args, **kwargs) -> NoneWidget:
return self
def scale(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def resize(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def set_max_width(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def set_max_height(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def rotate(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def flip(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def translate(self, *args, **kwargs) -> NoneWidget:
raise WidgetTransformationNotImplemented()
def select(self, *args, **kwargs) -> NoneWidget:
return self
def set_font_shadow(self, *args, **kwargs) -> NoneWidget:
return self
def set_sound(self, *args, **kwargs) -> NoneWidget:
return self
def set_cursor(self, *args, **kwargs) -> NoneWidget:
return self
def set_controls(self, *args, **kwargs) -> NoneWidget:
return self
def set_border(self, *args, **kwargs) -> NoneWidget:
return self
def _check_mouseover(self, *args, **kwargs) -> bool:
self._mouseover = False
return False
def mouseleave(self, *args, **kwargs) -> NoneWidget:
return self
def mouseover(self, *args, **kwargs) -> NoneWidget:
return self
def set_onchange(self, *args, **kwargs) -> NoneWidget:
self._onchange = None
return self
def set_onreturn(self, *args, **kwargs) -> NoneWidget:
self._onreturn = None
return self
def set_onmouseleave(self, *args, **kwargs) -> NoneWidget:
self._onmouseleave = None
return self
def set_onmouseover(self, *args, **kwargs) -> NoneWidget:
self._onmouseover = None
return self
def set_onselect(self, *args, **kwargs) -> NoneWidget:
self._onselect = None
return self
def set_tab_size(self, *args, **kwargs) -> NoneWidget:
return self
def shadow(self, *args, **kwargs) -> NoneWidget:
return self
def update(self, events: EventVectorType) -> bool:
self.apply_update_callbacks(events)
return False
class NoneWidgetManager(AbstractWidgetManager, ABC):
"""
NoneWidget manager.
"""
def none_widget(self, widget_id: str = "") -> pygame_menu.widgets.NoneWidget:
"""
Add a none widget to the Menu.
.. note::
This widget is useful to fill column/rows layout without compromising
any visuals. Also, it can be used to store information or even to add
a ``draw_callback`` function to it for being called on each Menu draw.
.. note::
This is applied only to the base Menu (not the currently displayed,
stored in ``_current`` pointer); for such behavior apply to
:py:meth:`pygame_menu.menu.Menu.get_current` object.
:param widget_id: Widget ID
:return: Widget object
:rtype: :py:class:`pygame_menu.widgets.NoneWidget`
"""
attributes = self._filter_widget_attributes({})
widget = NoneWidget(widget_id=widget_id)
self._configure_widget(widget=widget, **attributes)
self._append_widget(widget)
return widget