Source code for pygvisuals.widgets.text_widget

# --- imports
# pygame imports
import pygame
import pygame.font as fnt

# local imports
from .widget import Widget
from ..designs import getDefaultDesign, getFallbackDesign
from ..util import inherit_docstrings_from_superclass

fnt.init()

# set defaults
getFallbackDesign().font = fnt.Font(None, 18)
"""Font to be used by default by widgets displaying text."""


[docs]class TextWidget(Widget): """ Underlying class for widgets using text/strings. """ def __init__(self, x, y, width, height, text="", font=getDefaultDesign().font): """ Initialisation of a TextWidget. Args: inherit_doc:: arguments text: A string specifing the content of the widget. The default value is an empty string. font: A font-like object that can be interpreted by pygame.font as a Font; this is used as the font for rendering text. The default value is the global default for fonts. """ super(TextWidget, self).__init__(x, y, width, height) self._antialiased = True self.font = font self.text = text
[docs] def setText(self, text): """ Set the widget' string-representation of its content. Args: text: A string with the content to set. Returns: Itsself (the widget) for convenience. """ self._text = text self.markDirty() return self
[docs] def getText(self): """ Return the widget' string-representation of its content. Returns: A string representing the content of the widget. """ return self._text
[docs] def setFont(self, font): """ Set the widget's font used when rendering text. Args: font: A font-like object that can be interpreted by pygame.font as a Font. Returns: Itsself (the widget) for convenience. """ self._font = font self.markDirty() return self
[docs] def getFont(self): """ Return the widget's font used when rendering text. Returns: A font-like object that can be interpreted by pygame.font as a Font. """ return self._font
[docs] def setAntialiasing(self, antialiased): """ Set whether the widget's text will be antialiased when rendered or not. Args: antialiased: A boolean indicating whether the text should be rendered with antialiasing. Returns: Itsself (the widget) for convenience. """ antialiased = antialiased antialiased = bool(antialiased) if self.antialiased != antialiased: self._antialiased = antialiased self.markDirty() self.update() return self
[docs] def isAntialiasing(self): """ Return whether the widget's text will be antialiased when rendered or not. Returns: A boolean indicating whether the text is rendered with antialiasing. """ return self._antialiased
def _render(self, text, color=None, background=None): """ Create a new surface with the text drawn on it. This is a wrapper-function for pygame.Font.render with appropiate values according to this widget's properties. The font and antialias will be the widget's font and antialiased properties. Args: text: A string with the text to be rendered. color: A color to draw to text with. If this is a falsy value (e.g. None), the widget's foreground-color will be used. The default value is None, meaning that the foreground will be used. background: A color to be used as background behind the text (same as with pygame.Font.render). If this is a falsy value (e.g. None), the background will be transparent. The default value is None, meaning that no color is used for the background. Returns: A pygame.Surface with the text drawn on it. """ if not color: color = self.foreground return self.font.render(text, self.antialiased, color, background) text = property(lambda obj: obj.getText(), lambda obj, arg: obj.setText(arg), doc="""The widget' string-representation of its content.""") font = property(lambda obj: obj.getFont(), lambda obj, arg: obj.setFont(arg), doc="""The widget's font used when rendering text.""") antialiased = property(lambda obj: obj.isAntialiasing(), lambda obj, arg: obj.setAntialiasing(arg), doc="The widget' status as a boolean " "regarding whether antialiasing is used when rendering text.")
# inherit docs from superclass TextWidget = inherit_docstrings_from_superclass(TextWidget)