# $Id: TooltipWindow.py,v 1.1.2.2 2006/09/12 19:59:55 marcusva Exp $
#
# Copyright (c) 2006, Marcus von Appen
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
"""Tooltip Window class."""
from BaseWidget import BaseWidget
from Constants import *
from StyleInformation import StyleInformation
import base
class TooltipWindow (BaseWidget):
"""TooltipWindow (text) -> TooltipWindow
A widget class that displays a line of text using a certain color.
The TooltipWindow widgets is able to display a short amount of text.
It is a completely non-interactive widget suitable for tooltip support
and notification messages.
The text to display on the TooltipWindow can be set through the 'text'
attribute or set_text() method.
window.text = 'A text to display'
window.set_text ('A text to display')
The 'padding' attribute and set_padding() method are used to place a
certain amount of pixels between the text and the outer edges of the
TooltipWindow.
window.padding = 10
window.set_padding (10)
Default action (invoked by activate()):
None
Mnemonic action (invoked by activate_mnemonic()):
None
Attributes:
text - The text to display on the TooltipWindow.
padding - Additional padding between text and borders. Default is 2.
"""
def __init__ (self, text):
BaseWidget.__init__ (self)
self._padding = 2
self._text = None
self.set_text (text)
def set_focus (self, focus=True):
"""T.set_focus (...) -> bool
Overrides the default widget input focus.
The TooltipWindow cannot be focused by default, thus this method
always returns False and does not do anything.
"""
return False
def set_padding (self, padding):
"""T.set_padding (...) -> None
Sets the padding between the edges and text of the TooltipWindow.
The padding value is the amount of pixels to place between the
edges of the TooltipWindow and the displayed text.
Raises a TypeError, if the passed argument is not a positive
integer.
Note: If the 'size' attribute is set, it can influence the
visible space between the text and the edges. That does not
mean, that any padding is set.
"""
if (type (padding) != int) or (padding < 0):
raise TypeError ("padding must be a positive integer")
self._padding = padding
self.dirty = True
def set_text (self, text):
"""T.set_text (...) -> None
Sets the text of the TooltipWindow to the passed argument.
Raises a TypeError, if the passed argument is not a string or
unicode.
"""
if type (text) not in (str, unicode):
raise TypeError ("text must be a string or unicode")
self._text = text
self.dirty = True
def draw_bg (self):
"""T.draw_bg () -> Surface
Draws the background surface of the TooltipWindow and returns it.
"""
return base.GlobalStyle.engine.draw_tooltipwindow (self)
text = property (lambda self: self._text,
lambda self, var: self.set_text (var),
doc = "The text to display on the TooltipWindow.")
padding = property (lambda self: self._padding,
lambda self, var: self.set_padding (var),
doc = "Additional padding between text and borders.")
syntax highlighted by Code2HTML, v. 0.9.1