padding and margin

This commit is contained in:
Will McGugan
2021-11-25 16:43:59 +00:00
parent 172eeb787b
commit a73c921198
4 changed files with 29 additions and 10 deletions

View File

@@ -37,9 +37,13 @@ class BasicApp(App):
#footer {
dock-group: header;
height: 3;
border-top: hkey #0f2b41;
/* border-top: hkey #0f2b41; */
text: #3a3009 on #f6d55c;
/*padding: 2;*/
border: heavy red;
margin: 2;
}
#content {

View File

@@ -112,8 +112,8 @@ class StylesBuilder:
space: list[int] = []
append = space.append
for token in tokens:
_, _, location, token_name, value = token
if token_name == "number":
(token_name, value, _, _, location) = token
if token_name == "scalar":
append(int(value))
else:
self.error(name, token, f"unexpected token {value!r} in declaration")
@@ -123,7 +123,7 @@ class StylesBuilder:
)
setattr(
self.styles,
f"_{name}",
f"_rule_{name}",
Spacing.unpack(cast(SpacingDimensions, tuple(space))),
)

View File

@@ -131,6 +131,14 @@ class Styles:
"""Check in a border is present."""
return any(edge for edge, _style in self.border)
@property
def has_padding(self) -> bool:
return self._rule_padding is not None
@property
def has_margin(self) -> bool:
return self._rule_margin is not None
@property
def has_outline(self) -> bool:
"""Check if an outline is present."""

View File

@@ -138,15 +138,22 @@ class Widget(DOMNode):
renderable = self.render()
styles = self.styles
if self.padding is not None:
renderable = Padding(renderable, self.padding)
if styles.has_padding:
renderable = Padding(renderable, styles.padding)
if styles.has_border:
renderable = Border(renderable, styles.border)
if self.margin is not None:
renderable = Padding(renderable, self.margin)
if styles.has_outline:
renderable = Border(renderable, styles.outline, outline=True)
if styles.has_margin:
renderable = Padding(renderable, styles.margin)
if styles.text:
renderable = Styled(renderable, styles.text)
return renderable
@property