Renaming opacity to text-opacity in code

This commit is contained in:
Darren Burns
2022-08-31 13:39:34 +01:00
parent 786e2ee5fd
commit 210214260d
15 changed files with 126 additions and 123 deletions

View File

@@ -4,18 +4,18 @@
* { * {
transition: color 300ms linear, background 300ms linear; transition: color 300ms linear, background 300ms linear;
} }
*:hover { *:hover {
/* tint: 30% red; /* tint: 30% red;
/* outline: heavy red; */ /* outline: heavy red; */
} }
App > Screen { App > Screen {
background: $surface; background: $surface;
color: $text-surface; color: $text-surface;
layers: base sidebar; layers: base sidebar;
color: $text-background; color: $text-background;
@@ -23,12 +23,12 @@ App > Screen {
layout: vertical; layout: vertical;
overflow: hidden; overflow: hidden;
} }
#tree-container { #tree-container {
overflow-y: auto; overflow-y: auto;
height: 20; height: 20;
margin: 1 3; margin: 1 3;
background: $panel; background: $panel;
padding: 1 2; padding: 1 2;
@@ -37,7 +37,7 @@ App > Screen {
DirectoryTree { DirectoryTree {
padding: 0 1; padding: 0 1;
height: auto; height: auto;
} }
@@ -46,10 +46,10 @@ DirectoryTree {
DataTable { DataTable {
/*border:heavy red;*/ /*border:heavy red;*/
/* tint: 10% green; */ /* tint: 10% green; */
/* opacity: 50%; */ /* text-opacity: 50%; */
padding: 1; padding: 1;
margin: 1 2; margin: 1 2;
height: 24; height: 24;
} }
#sidebar { #sidebar {
@@ -59,7 +59,7 @@ DataTable {
width: 30; width: 30;
margin-bottom: 1; margin-bottom: 1;
offset-x: -100%; offset-x: -100%;
transition: offset 500ms in_out_cubic; transition: offset 500ms in_out_cubic;
layer: sidebar; layer: sidebar;
} }
@@ -97,8 +97,8 @@ DataTable {
Tweet { Tweet {
height:12; height:12;
width: 100%; width: 100%;
margin: 0 2; margin: 0 2;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
layout: vertical; layout: vertical;
@@ -121,9 +121,9 @@ Tweet {
layout: vertical; layout: vertical;
} }
.code { .code {
height: auto; height: auto;
} }
@@ -133,12 +133,12 @@ TweetHeader {
color: $text-accent color: $text-accent
} }
TweetBody { TweetBody {
width: 100%; width: 100%;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
height: auto; height: auto;
padding: 0 1 0 0; padding: 0 1 0 0;
} }
Tweet.scroll-horizontal TweetBody { Tweet.scroll-horizontal TweetBody {
@@ -158,7 +158,7 @@ Tweet.scroll-horizontal TweetBody {
/* padding: 1 0 0 0 ; */ /* padding: 1 0 0 0 ; */
transition: background 400ms in_out_cubic, color 400ms in_out_cubic; transition: background 400ms in_out_cubic, color 400ms in_out_cubic;
} }
.button:hover { .button:hover {
@@ -178,7 +178,7 @@ Tweet.scroll-horizontal TweetBody {
color: $text-accent; color: $text-accent;
background: $accent; background: $accent;
height: 1; height: 1;
content-align: center middle; content-align: center middle;
dock:bottom; dock:bottom;
} }
@@ -213,7 +213,7 @@ Error {
color: $text-error; color: $text-error;
border-top: tall $error-darken-2; border-top: tall $error-darken-2;
border-bottom: tall $error-darken-2; border-bottom: tall $error-darken-2;
padding: 0; padding: 0;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
@@ -226,21 +226,21 @@ Warning {
color: $text-warning-fade-1; color: $text-warning-fade-1;
border-top: tall $warning-darken-2; border-top: tall $warning-darken-2;
border-bottom: tall $warning-darken-2; border-bottom: tall $warning-darken-2;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
} }
Success { Success {
width: 100%; width: 100%;
height:auto; height:auto;
box-sizing: border-box; box-sizing: border-box;
background: $success; background: $success;
color: $text-success-fade-1; color: $text-success-fade-1;
border-top: hkey $success-darken-2; border-top: hkey $success-darken-2;
border-bottom: hkey $success-darken-2; border-bottom: hkey $success-darken-2;
text-style: bold ; text-style: bold ;

View File

@@ -9,12 +9,12 @@ Stopwatch {
TimeDisplay { TimeDisplay {
content-align: center middle; content-align: center middle;
opacity: 60%; text-opacity: 60%;
height: 3; height: 3;
} }
Button { Button {
width: 16; width: 16;
} }
#start { #start {
@@ -30,14 +30,14 @@ Button {
dock: right; dock: right;
} }
.started { .started {
text-style: bold; text-style: bold;
background: $success; background: $success;
color: $text-success; color: $text-success;
} }
.started TimeDisplay { .started TimeDisplay {
opacity: 100%; text-opacity: 100%;
} }
.started #start { .started #start {

View File

@@ -8,12 +8,12 @@ Stopwatch {
TimeDisplay { TimeDisplay {
content-align: center middle; content-align: center middle;
opacity: 60%; text-opacity: 60%;
height: 3; height: 3;
} }
Button { Button {
width: 16; width: 16;
} }
#start { #start {

View File

@@ -9,12 +9,12 @@ Stopwatch {
TimeDisplay { TimeDisplay {
content-align: center middle; content-align: center middle;
opacity: 60%; text-opacity: 60%;
height: 3; height: 3;
} }
Button { Button {
width: 16; width: 16;
} }
#start { #start {
@@ -30,14 +30,14 @@ Button {
dock: right; dock: right;
} }
.started { .started {
text-style: bold; text-style: bold;
background: $success; background: $success;
color: $text-success; color: $text-success;
} }
.started TimeDisplay { .started TimeDisplay {
opacity: 100%; text-opacity: 100%;
} }
.started #start { .started #start {

View File

@@ -4,33 +4,33 @@
* { * {
transition: color 300ms linear, background 300ms linear; transition: color 300ms linear, background 300ms linear;
} }
*:hover { *:hover {
/* tint: 30% red; /* tint: 30% red;
/* outline: heavy red; */ /* outline: heavy red; */
} }
App > Screen { App > Screen {
background: $surface; background: $surface;
color: $text-surface; color: $text-surface;
layers: sidebar; layers: sidebar;
color: $text-background; color: $text-background;
background: $background; background: $background;
layout: vertical; layout: vertical;
} }
DataTable { DataTable {
/*border:heavy red;*/ /*border:heavy red;*/
/* tint: 10% green; */ /* tint: 10% green; */
/* opacity: 50%; */ /* text-opacity: 50%; */
padding: 1; padding: 1;
margin: 1 2; margin: 1 2;
height: 12; height: 12;
} }
#sidebar { #sidebar {
@@ -39,7 +39,7 @@ DataTable {
dock: left; dock: left;
width: 30; width: 30;
offset-x: -100%; offset-x: -100%;
transition: offset 500ms in_out_cubic; transition: offset 500ms in_out_cubic;
layer: sidebar; layer: sidebar;
} }
@@ -76,7 +76,7 @@ DataTable {
background: $secondary-background; background: $secondary-background;
height: 1; height: 1;
content-align: center middle; content-align: center middle;
dock: top; dock: top;
} }
@@ -84,8 +84,8 @@ DataTable {
Tweet { Tweet {
height:12; height:12;
width: 100%; width: 100%;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
layout: vertical; layout: vertical;
@@ -100,7 +100,7 @@ Tweet {
.scrollable { .scrollable {
overflow-y: scroll; overflow-y: scroll;
margin: 1 2; margin: 1 2;
height: 20; height: 20;
@@ -108,9 +108,9 @@ Tweet {
layout: vertical; layout: vertical;
} }
.code { .code {
height: auto; height: auto;
} }
@@ -120,12 +120,12 @@ TweetHeader {
color: $text-accent color: $text-accent
} }
TweetBody { TweetBody {
width: 100%; width: 100%;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
height: auto; height: auto;
padding: 0 1 0 0; padding: 0 1 0 0;
} }
Tweet.scroll-horizontal TweetBody { Tweet.scroll-horizontal TweetBody {
@@ -145,7 +145,7 @@ Tweet.scroll-horizontal TweetBody {
/* padding: 1 0 0 0 ; */ /* padding: 1 0 0 0 ; */
transition: background 400ms in_out_cubic, color 400ms in_out_cubic; transition: background 400ms in_out_cubic, color 400ms in_out_cubic;
} }
.button:hover { .button:hover {
@@ -165,7 +165,7 @@ Tweet.scroll-horizontal TweetBody {
color: $text-accent; color: $text-accent;
background: $accent; background: $accent;
height: 1; height: 1;
content-align: center middle; content-align: center middle;
dock:bottom; dock:bottom;
} }
@@ -200,7 +200,7 @@ Error {
color: $text-error; color: $text-error;
border-top: tall $error-darken-2; border-top: tall $error-darken-2;
border-bottom: tall $error-darken-2; border-bottom: tall $error-darken-2;
padding: 0; padding: 0;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
@@ -213,21 +213,21 @@ Warning {
color: $text-warning-fade-1; color: $text-warning-fade-1;
border-top: tall $warning-darken-2; border-top: tall $warning-darken-2;
border-bottom: tall $warning-darken-2; border-bottom: tall $warning-darken-2;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
} }
Success { Success {
width: 100%; width: 100%;
height:auto; height:auto;
box-sizing: border-box; box-sizing: border-box;
background: $success; background: $success;
color: $text-success-fade-1; color: $text-success-fade-1;
border-top: hkey $success-darken-2; border-top: hkey $success-darken-2;
border-bottom: hkey $success-darken-2; border-bottom: hkey $success-darken-2;
text-style: bold ; text-style: bold ;

View File

@@ -1,4 +1,6 @@
Button { Button {
padding-left: 1; padding-left: 1;
padding-right: 1; padding-right: 1;
margin: 3;
text-opacity: 30%;
} }

View File

@@ -26,15 +26,15 @@ class JustABox(App):
yield Box(classes="box2") yield Box(classes="box2")
def key_a(self): def key_a(self):
self.box.styles.display = "none" # self.box.styles.display = "none"
# self.box.styles.visibility = "hidden" # self.box.styles.visibility = "hidden"
# self.animator.animate( self.animator.animate(
# self.box.styles, self.box.styles,
# "opacity", "text_opacity",
# value=0.0, value=0.0,
# duration=2.0, duration=2.0,
# on_complete=self.box.remove, on_complete=self.box.remove,
# ) )
async def on_key(self, event: events.Key) -> None: async def on_key(self, event: events.Key) -> None:
await self.dispatch_key(event) await self.dispatch_key(event)

View File

@@ -54,7 +54,7 @@ Widget:hover {
} }
#footer { #footer {
opacity: 1; text-opacity: 1;
color: $text; color: $text;
background: $background; background: $background;
height: 3; height: 3;
@@ -62,5 +62,5 @@ Widget:hover {
} }
#footer.dim { #footer.dim {
opacity: 0.5; text-opacity: 0.5;
} }

View File

@@ -4,18 +4,18 @@
* { * {
transition: color 300ms linear, background 300ms linear; transition: color 300ms linear, background 300ms linear;
} }
*:hover { *:hover {
/* tint: 30% red; /* tint: 30% red;
/* outline: heavy red; */ /* outline: heavy red; */
} }
App > Screen { App > Screen {
background: $surface; background: $surface;
color: $text-surface; color: $text-surface;
layers: base sidebar; layers: base sidebar;
color: $text-background; color: $text-background;
@@ -23,12 +23,12 @@ App > Screen {
layout: vertical; layout: vertical;
overflow: hidden; overflow: hidden;
} }
#tree-container { #tree-container {
overflow-y: auto; overflow-y: auto;
height: 20; height: 20;
margin: 1 2; margin: 1 2;
background: $panel; background: $panel;
padding: 1 2; padding: 1 2;
@@ -37,7 +37,7 @@ App > Screen {
DirectoryTree { DirectoryTree {
padding: 0 1; padding: 0 1;
height: auto; height: auto;
} }
@@ -46,10 +46,10 @@ DirectoryTree {
DataTable { DataTable {
/*border:heavy red;*/ /*border:heavy red;*/
/* tint: 10% green; */ /* tint: 10% green; */
/* opacity: 50%; */ /* text-opacity: 50%; */
padding: 1; padding: 1;
margin: 1 2; margin: 1 2;
height: 24; height: 24;
} }
#sidebar { #sidebar {
@@ -59,7 +59,7 @@ DataTable {
width: 30; width: 30;
margin-bottom: 1; margin-bottom: 1;
offset-x: -100%; offset-x: -100%;
transition: offset 500ms in_out_cubic; transition: offset 500ms in_out_cubic;
layer: sidebar; layer: sidebar;
} }
@@ -98,7 +98,7 @@ Tweet {
height:12; height:12;
width: 100%; width: 100%;
margin: 0 2; margin: 0 2;
margin:0 2; margin:0 2;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
@@ -123,9 +123,9 @@ Tweet {
layout: vertical; layout: vertical;
} }
.code { .code {
height: auto; height: auto;
} }
@@ -135,12 +135,12 @@ TweetHeader {
color: $text-accent color: $text-accent
} }
TweetBody { TweetBody {
width: 100%; width: 100%;
background: $panel; background: $panel;
color: $text-panel; color: $text-panel;
height: auto; height: auto;
padding: 0 1 0 0; padding: 0 1 0 0;
} }
Tweet.scroll-horizontal TweetBody { Tweet.scroll-horizontal TweetBody {
@@ -160,7 +160,7 @@ Tweet.scroll-horizontal TweetBody {
/* padding: 1 0 0 0 ; */ /* padding: 1 0 0 0 ; */
transition: background 400ms in_out_cubic, color 400ms in_out_cubic; transition: background 400ms in_out_cubic, color 400ms in_out_cubic;
} }
.button:hover { .button:hover {
@@ -180,7 +180,7 @@ Tweet.scroll-horizontal TweetBody {
color: $text-accent; color: $text-accent;
background: $accent; background: $accent;
height: 1; height: 1;
content-align: center middle; content-align: center middle;
dock:bottom; dock:bottom;
} }
@@ -215,7 +215,7 @@ Error {
color: $text-error; color: $text-error;
border-top: tall $error-darken-2; border-top: tall $error-darken-2;
border-bottom: tall $error-darken-2; border-bottom: tall $error-darken-2;
padding: 0; padding: 0;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
@@ -228,21 +228,21 @@ Warning {
color: $text-warning-fade-1; color: $text-warning-fade-1;
border-top: tall $warning-darken-2; border-top: tall $warning-darken-2;
border-bottom: tall $warning-darken-2; border-bottom: tall $warning-darken-2;
text-style: bold; text-style: bold;
align-horizontal: center; align-horizontal: center;
} }
Success { Success {
width: 100%; width: 100%;
height:auto; height:auto;
box-sizing: border-box; box-sizing: border-box;
background: $success; background: $success;
color: $text-success-fade-1; color: $text-success-fade-1;
border-top: hkey $success-darken-2; border-top: hkey $success-darken-2;
border-bottom: hkey $success-darken-2; border-bottom: hkey $success-darken-2;
text-style: bold ; text-style: bold ;

View File

@@ -237,8 +237,8 @@ class StylesCache:
Returns: Returns:
list[Segment]: New list of segments list[Segment]: New list of segments
""" """
if styles.opacity != 1.0: if styles.text_opacity != 1.0:
segments = Opacity.process_segments(segments, styles.opacity) segments = Opacity.process_segments(segments, styles.text_opacity)
if styles.tint.a: if styles.tint.a:
segments = Tint.process_segments(segments, styles.tint) segments = Tint.process_segments(segments, styles.tint)
return segments if isinstance(segments, list) else list(segments) return segments if isinstance(segments, list) else list(segments)

View File

@@ -332,7 +332,7 @@ class StylesBuilder:
"visibility", valid_values=list(VALID_VISIBILITY), context="css" "visibility", valid_values=list(VALID_VISIBILITY), context="css"
) )
def process_opacity(self, name: str, tokens: list[Token]) -> None: def process_text_opacity(self, name: str, tokens: list[Token]) -> None:
if not tokens: if not tokens:
return return
token = tokens[0] token = tokens[0]
@@ -342,16 +342,17 @@ class StylesBuilder:
else: else:
token_name = token.name token_name = token.name
value = token.value value = token.value
rule_name = name.replace("-", "_")
if token_name == "scalar" and value.endswith("%"): if token_name == "scalar" and value.endswith("%"):
try: try:
opacity = percentage_string_to_float(value) text_opacity = percentage_string_to_float(value)
self.styles.set_rule(name, opacity) self.styles.set_rule(rule_name, text_opacity)
except ValueError: except ValueError:
error = True error = True
elif token_name == "number": elif token_name == "number":
try: try:
opacity = clamp(float(value), 0, 1) text_opacity = clamp(float(value), 0, 1)
self.styles.set_rule(name, opacity) self.styles.set_rule(rule_name, text_opacity)
except ValueError: except ValueError:
error = True error = True
else: else:

View File

@@ -87,7 +87,7 @@ class RulesMap(TypedDict, total=False):
background: Color background: Color
text_style: Style text_style: Style
opacity: float text_opacity: float
padding: Spacing padding: Spacing
margin: Spacing margin: Spacing
@@ -184,7 +184,7 @@ class StylesBase(ABC):
"max_height", "max_height",
"color", "color",
"background", "background",
"opacity", "text_opacity",
"tint", "tint",
"scrollbar_color", "scrollbar_color",
"scrollbar_color_hover", "scrollbar_color_hover",
@@ -204,7 +204,7 @@ class StylesBase(ABC):
background = ColorProperty(Color(0, 0, 0, 0), background=True) background = ColorProperty(Color(0, 0, 0, 0), background=True)
text_style = StyleFlagsProperty() text_style = StyleFlagsProperty()
opacity = FractionalProperty() text_opacity = FractionalProperty()
padding = SpacingProperty() padding = SpacingProperty()
margin = SpacingProperty() margin = SpacingProperty()

View File

@@ -29,14 +29,14 @@ class HeaderClock(Widget):
"""Display a clock on the right of the header.""" """Display a clock on the right of the header."""
CSS = """ CSS = """
HeaderClock { HeaderClock {
dock: right; dock: right;
width: auto; width: auto;
padding: 0 1; padding: 0 1;
background: $secondary-background-lighten-1; background: $secondary-background-lighten-1;
color: $text-secondary-background; color: $text-secondary-background;
opacity: 85%; text-opacity: 85%;
content-align: center middle; content-align: center middle;
} }
""" """
@@ -51,9 +51,9 @@ class HeaderTitle(Widget):
"""Display the title / subtitle in the header.""" """Display the title / subtitle in the header."""
CSS = """ CSS = """
HeaderTitle { HeaderTitle {
content-align: center middle; content-align: center middle;
width: 100%; width: 100%;
} }
""" """
@@ -79,7 +79,7 @@ class Header(Widget):
height: 1; height: 1;
} }
Header.tall { Header.tall {
height: 3; height: 3;
} }
""" """

View File

@@ -1098,15 +1098,15 @@ class TestParseOpacity:
], ],
) )
def test_opacity_to_styles(self, css_value, styles_value): def test_opacity_to_styles(self, css_value, styles_value):
css = f"#some-widget {{ opacity: {css_value} }}" css = f"#some-widget {{ text-opacity: {css_value} }}"
stylesheet = Stylesheet() stylesheet = Stylesheet()
stylesheet.add_source(css) stylesheet.add_source(css)
assert stylesheet.rules[0].styles.opacity == styles_value assert stylesheet.rules[0].styles.text_opacity == styles_value
assert not stylesheet.rules[0].errors assert not stylesheet.rules[0].errors
def test_opacity_invalid_value(self): def test_opacity_invalid_value(self):
css = "#some-widget { opacity: 123x }" css = "#some-widget { text-opacity: 123x }"
stylesheet = Stylesheet() stylesheet = Stylesheet()
with pytest.raises(StylesheetParseError): with pytest.raises(StylesheetParseError):

View File

@@ -120,7 +120,7 @@ def test_render_styles_border():
def test_get_opacity_default(): def test_get_opacity_default():
styles = RenderStyles(DOMNode(), Styles(), Styles()) styles = RenderStyles(DOMNode(), Styles(), Styles())
assert styles.opacity == 1.0 assert styles.text_opacity == 1.0
@pytest.mark.parametrize( @pytest.mark.parametrize(
@@ -136,14 +136,14 @@ def test_get_opacity_default():
) )
def test_opacity_set_then_get(set_value, expected): def test_opacity_set_then_get(set_value, expected):
styles = RenderStyles(DOMNode(), Styles(), Styles()) styles = RenderStyles(DOMNode(), Styles(), Styles())
styles.opacity = set_value styles.text_opacity = set_value
assert styles.opacity == expected assert styles.text_opacity == expected
def test_opacity_set_invalid_type_error(): def test_opacity_set_invalid_type_error():
styles = RenderStyles(DOMNode(), Styles(), Styles()) styles = RenderStyles(DOMNode(), Styles(), Styles())
with pytest.raises(StyleValueError): with pytest.raises(StyleValueError):
styles.opacity = "invalid value" styles.text_opacity = "invalid value"
@pytest.mark.parametrize( @pytest.mark.parametrize(