#!/usr/bin/env python
#
# overlay.py - Functions for painting things on top of wx widgets.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module contains convenience functions for drawing arbitrary things
on top of ``wx`` widgets.
.. autosummary::
:nosignatures:
textOverlay
"""
import wx
[docs]
def textOverlay(target,
text,
box=True,
bgColour=None,
fgColour=None):
"""Shows the given ``text`` on the given ``target``.
:arg target: ``wx.Window`` object
:arg text: Text to display
:arg box: If ``True`` (the default), the text is displayed in a
box.
:arg bgColour: If ``box is True``, the box is filled with this colour.
:arg fgColour: Colour to draw the text in
"""
if bgColour is None:
bgColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK)
if fgColour is None:
fgColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOTEXT)
dc = wx.ClientDC(target)
w, h = dc.GetSize().Get()
w = dc.DeviceToLogicalX(w)
h = dc.DeviceToLogicalY(h)
tw, th = dc.GetTextExtent(text).Get()
x = int((w - tw) / 2)
y = int((h - th) / 2)
if box:
dc.SetBrush(wx.Brush(wx.Colour(bgColour)))
dc.DrawRoundedRectangle(x - 5, y - 5, tw + 10, th + 10, 2)
dc.SetTextForeground(wx.Colour(fgColour))
dc.DrawText(text, x, y)