mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
CSS correctly applies
This commit is contained in:
@@ -9,32 +9,33 @@ class BasicApp(App):
|
||||
|
||||
App > DockView {
|
||||
layout: dock;
|
||||
docks: sidebar=left | widgets=top;
|
||||
docks: sidebar=left widgets=top;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
dock-group: sidebar;
|
||||
width: 40;
|
||||
}
|
||||
|
||||
#widget1 {
|
||||
text-background: blue;
|
||||
text: on blue;
|
||||
dock-group: widgets;
|
||||
height: 1fr;
|
||||
}
|
||||
|
||||
#widget2 {
|
||||
text: on red;
|
||||
dock-group: widgets;
|
||||
height: 1fr;
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
async def on_mount(self) -> None:
|
||||
"""Build layout here."""
|
||||
self.log("MOUNT")
|
||||
await self.view.mount(
|
||||
sidebar=Placeholder(), widget1=Placeholder(), widget2=Placeholder()
|
||||
)
|
||||
self.log("MOUNTED CHILDREN", self.view.children)
|
||||
|
||||
|
||||
BasicApp.run(log="textual.log")
|
||||
|
||||
@@ -380,6 +380,7 @@ class App(DOMNode):
|
||||
if widget not in self.registry:
|
||||
if widget_id is not None:
|
||||
widget.id = widget_id
|
||||
self._register(parent, widget)
|
||||
apply_stylesheet(widget)
|
||||
widget.post_message_no_wait(events.Mount(sender=parent))
|
||||
|
||||
|
||||
@@ -24,7 +24,9 @@ class ScalarProperty:
|
||||
def __set_name__(self, owner: Styles, name: str) -> None:
|
||||
self.internal_name = f"_rule_{name}"
|
||||
|
||||
def __get__(self, obj: Styles, objtype: type[Styles] | None = None) -> Scalar:
|
||||
def __get__(
|
||||
self, obj: Styles, objtype: type[Styles] | None = None
|
||||
) -> Scalar | None:
|
||||
value = getattr(obj, self.internal_name)
|
||||
return value
|
||||
|
||||
|
||||
@@ -48,18 +48,14 @@ class DockLayout(Layout):
|
||||
self._docks: list[Dock] | None = None
|
||||
|
||||
def get_docks(self, view: View) -> list[Dock]:
|
||||
log("CHILDREN", view.children)
|
||||
groups: dict[str, list[Widget]] = defaultdict(list)
|
||||
for child in view.children:
|
||||
assert isinstance(child, Widget)
|
||||
groups[child.styles.dock_group].append(child)
|
||||
log("GROUPS", groups)
|
||||
docks: list[Dock] = []
|
||||
append_dock = docks.append
|
||||
log("STYLES.DOCKS", view.styles)
|
||||
for name, edge in view.styles.docks:
|
||||
append_dock(Dock(edge, groups[name], 0))
|
||||
log("DOCKS", docks)
|
||||
return docks
|
||||
|
||||
def get_widgets(self, view: View) -> Iterable[DOMNode]:
|
||||
@@ -77,24 +73,26 @@ class DockLayout(Layout):
|
||||
|
||||
docks = self.get_docks(view)
|
||||
|
||||
def make_dock_options(widget) -> DockOptions:
|
||||
styles = widget.styles
|
||||
|
||||
return (
|
||||
DockOptions(
|
||||
styles.width.cells if styles.width is not None else None,
|
||||
styles.width.fraction if styles.width is not None else 1,
|
||||
styles.min_width.cells if styles.min_width is not None else 1,
|
||||
)
|
||||
if dock.edge in ("left", "right")
|
||||
else DockOptions(
|
||||
styles.height.cells if styles.height is not None else None,
|
||||
styles.height.fraction if styles.height is not None else 1,
|
||||
styles.min_height.cells if styles.min_height is not None else 1,
|
||||
)
|
||||
)
|
||||
|
||||
for index, dock in enumerate(docks):
|
||||
|
||||
dock_options = [
|
||||
(
|
||||
DockOptions(
|
||||
widget.styles.width.cells,
|
||||
widget.styles.width.fraction or 1,
|
||||
widget.styles.min_width.cells or 1,
|
||||
)
|
||||
if dock.edge in ("left", "right")
|
||||
else DockOptions(
|
||||
widget.styles.height.cells,
|
||||
widget.styles.height.fraction or 1,
|
||||
widget.styles.min_height.cells or 1,
|
||||
)
|
||||
)
|
||||
for widget in dock.widgets
|
||||
]
|
||||
dock_options = [make_dock_options(widget) for widget in dock.widgets]
|
||||
region = layers[dock.z]
|
||||
if not region:
|
||||
# No space left
|
||||
|
||||
@@ -135,7 +135,7 @@ class Widget(DOMNode):
|
||||
Returns:
|
||||
RenderableType: A new renderable.
|
||||
"""
|
||||
renderable = self.render()
|
||||
renderable = Styled(self.render(), self.styles.text)
|
||||
if self.padding is not None:
|
||||
renderable = Padding(renderable, self.padding)
|
||||
if self.border not in ("", "none"):
|
||||
|
||||
Reference in New Issue
Block a user