Merge pull request #1578 from davep/prop-chop-doc

Add some extra docstrings to widgets
This commit is contained in:
Dave Pearson
2023-01-16 16:34:26 +00:00
committed by GitHub
4 changed files with 31 additions and 12 deletions

View File

@@ -28,17 +28,17 @@ class Binding:
"""The configuration of a key binding.""" """The configuration of a key binding."""
key: str key: str
"""str: Key to bind. This can also be a comma-separated list of keys to map multiple keys to a single action.""" """Key to bind. This can also be a comma-separated list of keys to map multiple keys to a single action."""
action: str action: str
"""str: Action to bind to.""" """Action to bind to."""
description: str description: str
"""str: Description of action.""" """Description of action."""
show: bool = True show: bool = True
"""bool: Show the action in Footer, or False to hide.""" """Show the action in Footer, or False to hide."""
key_display: str | None = None key_display: str | None = None
"""str | None: How the key should be shown in footer.""" """How the key should be shown in footer."""
priority: bool = False priority: bool = False
"""bool: Enable priority binding for this key.""" """Enable priority binding for this key."""
@rich.repr.auto @rich.repr.auto

View File

@@ -195,8 +195,13 @@ class Button(Static, can_focus=True):
self.variant = self.validate_variant(variant) self.variant = self.validate_variant(variant)
label: Reactive[RenderableType] = Reactive("") label: Reactive[RenderableType] = Reactive("")
"""The text label that appears within the button."""
variant = Reactive.init("default") variant = Reactive.init("default")
"""The variant name for the button."""
disabled = Reactive(False) disabled = Reactive(False)
"""The disabled state of the button; `True` if disabled, `False` if not."""
def __rich_repr__(self) -> rich.repr.Result: def __rich_repr__(self) -> rich.repr.Result:
yield from super().__rich_repr__() yield from super().__rich_repr__()

View File

@@ -57,9 +57,6 @@ class Checkbox(Widget, can_focus=True):
"checkbox--switch", "checkbox--switch",
} }
value = reactive(False, init=False)
slider_pos = reactive(0.0)
def __init__( def __init__(
self, self,
value: bool = False, value: bool = False,
@@ -84,6 +81,12 @@ class Checkbox(Widget, can_focus=True):
self._reactive_value = value self._reactive_value = value
self._should_animate = animate self._should_animate = animate
value = reactive(False, init=False)
"""The value of the checkbox; `True` for on and `False` for off."""
slider_pos = reactive(0.0)
"""The position of the slider."""
def watch_value(self, value: bool) -> None: def watch_value(self, value: bool) -> None:
target_slider_pos = 1.0 if value else 0.0 target_slider_pos = 1.0 if value else 0.0
if self._should_animate: if self._should_animate:

View File

@@ -113,6 +113,17 @@ class Input(Widget, can_focus=True):
id: str | None = None, id: str | None = None,
classes: str | None = None, classes: str | None = None,
) -> None: ) -> None:
"""Initialise the `Input` widget.
Args:
value (str | None, optional): An optional default value for the input.
placeholder (str, optional): Optional placeholder text for the input.
highlighter (Highlighter | None, optional): An optional highlighter for the input.
password (bool, optional): Flag to say if the field should obfuscate its content. Default is `False`.
name (str | None, optional): Optional name for the input widget.
id (str | None): Optional ID for the widget.
classes (str | None): Optional initial classes for the widget.
"""
super().__init__(name=name, id=id, classes=classes) super().__init__(name=name, id=id, classes=classes)
if value is not None: if value is not None:
self.value = value self.value = value
@@ -127,7 +138,7 @@ class Input(Widget, can_focus=True):
@property @property
def _cursor_offset(self) -> int: def _cursor_offset(self) -> int:
"""Get the cell offset of the cursor.""" """The cell offset of the cursor."""
offset = self._position_to_cell(self.cursor_position) offset = self._position_to_cell(self.cursor_position)
if self._cursor_at_end: if self._cursor_at_end:
offset += 1 offset += 1
@@ -135,7 +146,7 @@ class Input(Widget, can_focus=True):
@property @property
def _cursor_at_end(self) -> bool: def _cursor_at_end(self) -> bool:
"""Check if the cursor is at the end""" """Flag to indicate if the cursor is at the end"""
return self.cursor_position >= len(self.value) return self.cursor_position >= len(self.value)
def validate_cursor_position(self, cursor_position: int) -> int: def validate_cursor_position(self, cursor_position: int) -> int:
@@ -170,7 +181,7 @@ class Input(Widget, can_focus=True):
@property @property
def cursor_width(self) -> int: def cursor_width(self) -> int:
"""Get the width of the input (with extra space for cursor at the end).""" """The width of the input (with extra space for cursor at the end)."""
if self.placeholder and not self.value: if self.placeholder and not self.value:
return cell_len(self.placeholder) return cell_len(self.placeholder)
return self._position_to_cell(len(self.value)) + 1 return self._position_to_cell(len(self.value)) + 1