-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
new: Add multi-version support and support for widgets up to textual …
…0.38.
- Loading branch information
Showing
6 changed files
with
459 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
"""Collection of new, and extended, Textual widgets. | ||
This interface file must be kept in sync with the __init__.py's `__all__` list. | ||
This file is used by text editors and type checkers to see the lazily loaded classes. | ||
""" | ||
|
||
from textual import __version__ as textual_version | ||
|
||
_major, _minor, _maintenance = textual_version.split(".") | ||
_major, _minor, _maintenance = int(_major), int(_minor), int(_maintenance) | ||
|
||
from ._button import Button as Button | ||
from ._extensions import Clickable as Clickable | ||
from ._extensions import WidgetExtension as WidgetExtension | ||
from ._extensions import WidgetInitExtension as WidgetInitExtension | ||
from ._horizontal_menus import HorizontalMenus as HorizontalMenus | ||
from ._list_item import ListItem as ListItem | ||
from ._list_item_header import ListItemHeader as ListItemHeader | ||
from ._list_item_meta import ListItemMeta as ListItemMeta | ||
from ._list_view import ListView as ListView | ||
from ._location import Location as Location | ||
from ._modal_dialog import ModalDialog as ModalDialog | ||
from ._popup_text import PopupText as PopupText | ||
from ._store import Store as Store | ||
from ._textual._checkbox import Checkbox as Checkbox | ||
from ._textual._containers import Center as Center | ||
from ._textual._containers import Container as Container | ||
from ._textual._containers import Grid as Grid | ||
from ._textual._containers import Horizontal as Horizontal | ||
from ._textual._containers import HorizontalScroll as HorizontalScroll | ||
from ._textual._containers import Middle as Middle | ||
from ._textual._containers import PageContainer as PageContainer | ||
from ._textual._containers import ScrollableContainer as ScrollableContainer | ||
from ._textual._containers import Vertical as Vertical | ||
from ._textual._containers import VerticalScroll as VerticalScroll | ||
from ._textual._content_switcher import ContentSwitcher as ContentSwitcher | ||
from ._textual._data_table import DataTable as DataTable | ||
from ._textual._directory_tree import DirectoryTree as DirectoryTree | ||
from ._textual._footer import Footer as Footer | ||
from ._textual._header import Header as Header | ||
from ._textual._label import Label as Label | ||
from ._textual._loading_indicator import LoadingIndicator as LoadingIndicator | ||
from ._textual._log import Log as Log | ||
from ._textual._markdown import Markdown as Markdown | ||
from ._textual._markdown import MarkdownViewer as MarkdownViewer | ||
from ._textual._option_list import OptionList as OptionList | ||
from ._textual._pretty import Pretty as Pretty | ||
from ._textual._progress_bar import ProgressBar as ProgressBar | ||
from ._textual._radio_button import RadioButton as RadioButton | ||
from ._textual._radio_set import RadioSet as RadioSet | ||
from ._textual._rich_log import RichLog as RichLog | ||
from ._textual._select import Select as Select | ||
from ._textual._selection_list import SelectionList as SelectionList | ||
from ._textual._sparkline import Sparkline as Sparkline | ||
from ._textual._static import Static as Static | ||
from ._textual._switch import Switch as Switch | ||
from ._textual._tabbed_content import TabbedContent as TabbedContent | ||
from ._textual._tabbed_content import TabPane as TabPane | ||
from ._textual._tabs import Tab as Tab | ||
from ._textual._tabs import Tabs as Tabs | ||
from ._textual._text_input import TextInput as TextInput | ||
from ._textual._tooltip import Tooltip as Tooltip | ||
from ._textual._tree import Tree as Tree | ||
|
||
if _major >= 0: | ||
if _minor >= 32: | ||
from ._textual._digits import Digits as Digits | ||
if _minor >= 36: | ||
from ._textual._rule import Rule as Rule | ||
if _minor >= 37: | ||
from ._textual._collapsible import Collapsible as Collapsible | ||
if _minor >= 38: | ||
from ._textual._text_area import TextArea as TextArea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
"""Extended Textual Collapsible widget.""" | ||
|
||
from typing import Any | ||
from typing import Callable | ||
|
||
from textual import events | ||
from textual import widgets | ||
from textual.widget import Widget | ||
|
||
from .._extensions import WidgetExtension | ||
|
||
|
||
class Collapsible(WidgetExtension, widgets.Collapsible): | ||
"""An extended collapsible container.""" | ||
|
||
def __init__( | ||
self, | ||
*children: Widget, | ||
title: str = "Toggle", | ||
collapsed: bool = True, | ||
collapsed_symbol: str = "▶", | ||
expanded_symbol: str = "▼", | ||
name: str | None = None, | ||
id: str | None = None, | ||
classes: str | None = None, | ||
disabled: bool = False, | ||
styles: dict[str, Any] | None = None, | ||
disabled_messages: list[type[events.Message]] | None = None, | ||
callbacks: dict[str, Callable] | None = None, | ||
) -> None: | ||
"""Initialize the collapsible widget. | ||
Args: | ||
*children: Contents that will be collapsed/expanded. | ||
title: Title of the collapsed/expanded contents. | ||
collapsed: Default status of the contents. | ||
collapsed_symbol: Collapsed symbol before the title. | ||
expanded_symbol: Expanded symbol before the title. | ||
name: The name of the collapsible. | ||
id: The ID of the widget in the DOM. | ||
classes: The CSS classes of the widget. | ||
disabled: Whether the widget is disabled or not. | ||
styles: Local inline styles to apply on top of the class' styles for only this instance. | ||
disabled_messages: List of messages to disable on this widget instance only. | ||
callbacks: Mapping of callbacks to send messages to instead of sending to default handler. | ||
""" | ||
super().__init__( | ||
*children, | ||
title=title, | ||
collapsed=collapsed, | ||
collapsed_symbol=collapsed_symbol, | ||
expanded_symbol=expanded_symbol, | ||
name=name, | ||
id=id, | ||
classes=classes, | ||
disabled=disabled, | ||
) | ||
self.__extend_widget__( | ||
styles=styles, | ||
disabled_messages=disabled_messages, | ||
callbacks=callbacks, | ||
) |
Oops, something went wrong.