mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Merge pull request #843 from Textualize/toggle-header-clock
Flag to enable header clock
This commit is contained in:
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from textual.app import App, ComposeResult
|
from textual.app import App, ComposeResult
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
from textual.widgets import Static, Footer
|
from textual.widgets import Static, Footer, Header
|
||||||
|
|
||||||
|
|
||||||
class JustABox(App):
|
class JustABox(App):
|
||||||
@@ -12,6 +12,7 @@ class JustABox(App):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def compose(self) -> ComposeResult:
|
def compose(self) -> ComposeResult:
|
||||||
|
yield Header()
|
||||||
yield Static("Hello, world!", id="box1")
|
yield Static("Hello, world!", id="box1")
|
||||||
yield Footer()
|
yield Footer()
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class HeaderTitle(Widget):
|
|||||||
HeaderTitle {
|
HeaderTitle {
|
||||||
content-align: center middle;
|
content-align: center middle;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin-right: 10;
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -69,7 +70,11 @@ class HeaderTitle(Widget):
|
|||||||
|
|
||||||
|
|
||||||
class Header(Widget):
|
class Header(Widget):
|
||||||
"""A header widget with icon and clock."""
|
"""A header widget with icon and clock.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
show_clock (bool, optional): True if the clock should be shown on the right of the header.
|
||||||
|
"""
|
||||||
|
|
||||||
DEFAULT_CSS = """
|
DEFAULT_CSS = """
|
||||||
Header {
|
Header {
|
||||||
@@ -88,10 +93,27 @@ class Header(Widget):
|
|||||||
|
|
||||||
DEFAULT_CLASSES = "-tall"
|
DEFAULT_CLASSES = "-tall"
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
show_clock: bool = False,
|
||||||
|
*,
|
||||||
|
name: str | None = None,
|
||||||
|
id: str | None = None,
|
||||||
|
classes: str | None = None,
|
||||||
|
):
|
||||||
|
super().__init__(name=name, id=id, classes=classes)
|
||||||
|
self.show_clock = show_clock
|
||||||
|
|
||||||
|
def compose(self):
|
||||||
|
yield HeaderIcon()
|
||||||
|
yield HeaderTitle()
|
||||||
|
if self.show_clock:
|
||||||
|
yield HeaderClock()
|
||||||
|
|
||||||
def watch_tall(self, tall: bool) -> None:
|
def watch_tall(self, tall: bool) -> None:
|
||||||
self.set_class(tall, "-tall")
|
self.set_class(tall, "-tall")
|
||||||
|
|
||||||
async def on_click(self, event):
|
def on_click(self):
|
||||||
self.toggle_class("-tall")
|
self.toggle_class("-tall")
|
||||||
|
|
||||||
def on_mount(self) -> None:
|
def on_mount(self) -> None:
|
||||||
@@ -103,8 +125,3 @@ class Header(Widget):
|
|||||||
|
|
||||||
watch(self.app, "title", set_title)
|
watch(self.app, "title", set_title)
|
||||||
watch(self.app, "sub_title", set_sub_title)
|
watch(self.app, "sub_title", set_sub_title)
|
||||||
|
|
||||||
def compose(self):
|
|
||||||
yield HeaderIcon()
|
|
||||||
yield HeaderTitle()
|
|
||||||
yield HeaderClock()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user