Skip to content

Commit 3d8db4f

Browse files
authored
Merge pull request #5 from vlaci/extend-textual-colors
Extend textual colors
2 parents e1c32fa + f63d869 commit 3d8db4f

File tree

8 files changed

+48
-25
lines changed

8 files changed

+48
-25
lines changed

poetry.lock

Lines changed: 5 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/textual_dev/previews/colors.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ Label {
22
width: 100%;
33
}
44

5-
ColorButtons {
5+
ThemeColorButtons {
66
dock: left;
77
overflow-y: auto;
88
width: 30;
99
}
1010

11-
ColorButtons > Button {
11+
ThemeColorButtons > Button {
1212
width: 100%;
1313
}
1414

@@ -61,6 +61,10 @@ ColorGroup.-active {
6161
color: $text;
6262
}
6363

64+
.text-left {
65+
content-align: left middle;
66+
}
67+
6468
.muted {
6569
color: $text-muted;
6670
}

src/textual_dev/previews/colors.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from textual.app import App, ComposeResult
2+
from textual.color import COLOR_NAME_TO_RGB, Color
23
from textual.containers import Horizontal, Vertical, VerticalScroll
34
from textual.design import ColorSystem
4-
from textual.widgets import Button, Footer, Label, Static
5+
from textual.widgets import Button, Footer, Label, Static, TabbedContent
56

67

7-
class ColorButtons(VerticalScroll):
8+
class ThemeColorButtons(VerticalScroll):
89
def compose(self) -> ComposeResult:
9-
for border in ColorSystem.COLOR_NAMES:
10-
if border:
11-
yield Button(border, id=border)
10+
for color_name in ColorSystem.COLOR_NAMES:
11+
yield Button(color_name, id=color_name)
1212

1313

1414
class ColorBar(Static):
@@ -28,6 +28,26 @@ class Content(Vertical):
2828

2929

3030
class ColorsView(VerticalScroll):
31+
pass
32+
33+
34+
class ColorTabs(TabbedContent, inherit_css=False):
35+
pass
36+
37+
38+
class NamedColorsView(ColorsView):
39+
def compose(self) -> ComposeResult:
40+
with ColorGroup(id=f"group-named"):
41+
for name, rgb in COLOR_NAME_TO_RGB.items():
42+
color = Color(*rgb)
43+
with ColorItem() as ci:
44+
ci.styles.background = name
45+
yield ColorBar(name, classes="text")
46+
yield ColorBar(f"{color.hex6}", classes="text")
47+
yield ColorBar(f"{color.rgb}", classes="text text-left")
48+
49+
50+
class ThemeColorsView(ColorsView):
3151
def compose(self) -> ComposeResult:
3252
LEVELS = [
3353
"darken-3",
@@ -56,15 +76,17 @@ class ColorsApp(App[None]):
5676
BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
5777

5878
def compose(self) -> ComposeResult:
59-
yield Content(ColorButtons())
6079
yield Footer()
80+
with ColorTabs("Theme Colors", "Named Colors"):
81+
yield Content(ThemeColorButtons())
82+
yield Vertical(NamedColorsView())
6183

6284
def on_mount(self) -> None:
6385
self.call_after_refresh(self.update_view)
6486

6587
def update_view(self) -> None:
6688
content = self.query_one("Content", Content)
67-
content.mount(ColorsView())
89+
content.mount(ThemeColorsView())
6890

6991
def on_button_pressed(self, event: Button.Pressed) -> None:
7092
self.query(ColorGroup).remove_class("-active")

tests/devtools/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import pytest
22

3-
from textual.devtools.client import DevtoolsClient
4-
from textual.devtools.server import _make_devtools_aiohttp_app
5-
from textual.devtools.service import DevtoolsService
3+
from textual_dev.client import DevtoolsClient
4+
from textual_dev.server import _make_devtools_aiohttp_app
5+
from textual_dev.service import DevtoolsService
66

77

88
@pytest.fixture

tests/devtools/test_devtools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from rich.console import Console
88
from rich.segment import Segment
99

10-
from textual.devtools.renderables import DevConsoleLog, DevConsoleNotice
10+
from textual_dev.renderables import DevConsoleLog, DevConsoleNotice
1111

1212
from utilities.wait_for_predicate import wait_for_predicate
1313

tests/devtools/test_devtools_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from rich.panel import Panel
1111

1212
from textual.constants import DEVTOOLS_PORT
13-
from textual.devtools.client import DevtoolsClient
14-
from textual.devtools.redirect_output import DevtoolsLog
13+
from textual_dev.client import DevtoolsClient
14+
from textual_dev.redirect_output import DevtoolsLog
1515

1616
from utilities.wait_for_predicate import wait_for_predicate
1717

tests/devtools/test_redirect_output.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import msgpack
55
import time_machine
66

7-
from textual.devtools.redirect_output import StdoutRedirector
7+
from textual_dev.redirect_output import StdoutRedirector
88

99
TIMESTAMP = 1649166819
1010

tests/test_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from click.testing import CliRunner
22
from importlib_metadata import version
33

4-
from textual.cli.cli import run
4+
from textual_dev.cli import run
55

66

77
def test_cli_version():

0 commit comments

Comments
 (0)