Shofel2_T124_python/venv/lib/python3.10/site-packages/urwid/graphics.py

98 lines
2.4 KiB
Python
Raw Normal View History

2024-05-25 16:45:07 +00:00
#!/usr/bin/python
#
# Urwid graphics widgets
# Copyright (C) 2004-2011 Ian Ward
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Urwid web site: https://urwid.org/
from __future__ import annotations
from urwid.display_common import AttrSpec
from urwid.widget import (
BarGraph,
BarGraphError,
BarGraphMeta,
BigText,
GraphVScale,
LineBox,
ProgressBar,
Sizing,
Text,
Widget,
fixed_size,
scale_bar_values,
)
__all__ = (
"BigText",
"LineBox",
"BarGraph",
"BarGraphError",
"BarGraphMeta",
"GraphVScale",
"scale_bar_values",
"ProgressBar",
)
class PythonLogo(Widget):
_sizing = frozenset([Sizing.FIXED])
def __init__(self) -> None:
"""
Create canvas containing an ASCII version of the Python
Logo and store it.
"""
blu = AttrSpec("light blue", "default")
yel = AttrSpec("yellow", "default")
width = 17
# fmt: off
self._canvas = Text(
[
(blu, " ______\n"),
(blu, " _|_o__ |"), (yel, "__\n"),
(blu, " | _____|"), (yel, " |\n"),
(blu, " |__| "), (yel, "______|\n"),
(yel, " |____o_|"),
]
).render((width,))
# fmt: on
def pack(self, size=None, focus: bool = False):
"""
Return the size from our pre-rendered canvas.
"""
return self._canvas.cols(), self._canvas.rows()
def render(self, size, focus: bool = False):
"""
Return the pre-rendered canvas.
"""
fixed_size(size)
return self._canvas
def _test():
import doctest
doctest.testmod()
if __name__ == "__main__":
_test()