Provide Color class mapping

Dynamically generate the AttrMap's based on our palette keys.

Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
This commit is contained in:
Adam Stokes 2015-06-16 19:15:45 -04:00
parent bbc0e317f5
commit 6702ae87cc
1 changed files with 24 additions and 4 deletions

View File

@ -16,7 +16,9 @@
""" UI utilities """
from urwid import Padding as _Padding
from urwid import AttrMap
from functools import partialmethod
from subiquity.palette import STYLES
def apply_padders(cls):
@ -45,14 +47,32 @@ def apply_padders(cls):
partialmethod(_Padding, align='center',
width=('relative', i)))
setattr(cls, 'left_{}'.format(i),
partialmethod(_Padding, align='left',
width=('relative', i)))
partialmethod(_Padding, left=i))
setattr(cls, 'right_{}'.format(i),
partialmethod(_Padding, align='right',
width=('relative', i)))
partialmethod(_Padding, right=i))
return cls
@apply_padders
class Padding:
""" Partial methods for :class:`urwid.Padding` """
pass
def apply_style_map(cls):
""" Applies AttrMap attributes to Color class
Eg:
Color.frame_header(Text("I'm text in the Orange frame header"))
Color.body(Text("Im text in wrapped with the body color"))
"""
for k in STYLES:
setattr(cls, k[0], partialmethod(AttrMap, attr_map=k[0]))
return cls
@apply_style_map
class Color:
""" Partial methods for :class:`urwid.AttrMap` """
pass