Source code for pygame_menu.widgets.widget.none
"""
pygame-menu
https://github.com/ppizarror/pygame-menu
NONE WIDGET
None widget definition.
"""
__all__ = [
'NoneWidget',
'NoneWidgetManager'
]
import pygame
import pygame_menu
from abc import ABC
from pygame_menu.utils import make_surface
from pygame_menu.widgets.core.widget import Widget, WidgetTransformationNotImplemented, \
AbstractWidgetManager
from pygame_menu._types import Optional, NumberType, EventVectorType
# noinspection PyMissingOrEmptyDocstring
[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 any transformation.
:param widget_id: ID of the widget
"""
def __init__(
self,
widget_id: str = ''
) -> None:
super(NoneWidget, self).__init__(widget_id=widget_id)
self.is_selectable = False
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) -> Optional[bool]:
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 behaviour 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