mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
message_ to handle_
This commit is contained in:
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [0.1.11] - Unreleased
|
||||
|
||||
### Changed
|
||||
|
||||
- Changed message handlers to use prefix handle\_
|
||||
- Renamed messages to drop the Message suffix
|
||||
|
||||
## [0.1.10] - 2021-08-25
|
||||
|
||||
### Added
|
||||
|
||||
@@ -154,7 +154,7 @@ class Calculator(GridView):
|
||||
*self.buttons.values(), clear=self.ac, numbers=self.numbers, zero=self.zero
|
||||
)
|
||||
|
||||
def message_button_pressed(self, message: ButtonPressed) -> None:
|
||||
def handle_button_pressed(self, message: ButtonPressed) -> None:
|
||||
"""A message sent by the button widget"""
|
||||
|
||||
assert isinstance(message.sender, Button)
|
||||
|
||||
@@ -45,7 +45,7 @@ class MyApp(App):
|
||||
)
|
||||
await self.view.dock(self.body, edge="top")
|
||||
|
||||
async def message_file_click(self, message: FileClick) -> None:
|
||||
async def handle_file_click(self, message: FileClick) -> None:
|
||||
"""A message sent by the directory tree when a file is clicked."""
|
||||
|
||||
syntax: RenderableType
|
||||
|
||||
@@ -252,7 +252,7 @@ class MessagePump:
|
||||
|
||||
async def on_message(self, message: Message) -> None:
|
||||
_rich_traceback_guard = True
|
||||
method_name = f"message_{message.name}"
|
||||
method_name = f"handle_{message.name}"
|
||||
|
||||
method = getattr(self, method_name, None)
|
||||
if method is not None:
|
||||
|
||||
@@ -12,7 +12,7 @@ if TYPE_CHECKING:
|
||||
|
||||
|
||||
@rich.repr.auto
|
||||
class UpdateMessage(Message, verbosity=3):
|
||||
class Update(Message, verbosity=3):
|
||||
def __init__(self, sender: MessagePump, widget: Widget):
|
||||
super().__init__(sender)
|
||||
self.widget = widget
|
||||
@@ -22,22 +22,22 @@ class UpdateMessage(Message, verbosity=3):
|
||||
yield self.widget
|
||||
|
||||
def __eq__(self, other: object) -> bool:
|
||||
if isinstance(other, UpdateMessage):
|
||||
if isinstance(other, Update):
|
||||
return self.widget == other.widget
|
||||
return NotImplemented
|
||||
|
||||
def can_replace(self, message: Message) -> bool:
|
||||
return isinstance(message, UpdateMessage) and self == message
|
||||
return isinstance(message, Update) and self == message
|
||||
|
||||
|
||||
@rich.repr.auto
|
||||
class LayoutMessage(Message, verbosity=3):
|
||||
class Layout(Message, verbosity=3):
|
||||
def can_replace(self, message: Message) -> bool:
|
||||
return isinstance(message, (LayoutMessage, UpdateMessage))
|
||||
return isinstance(message, (Layout, Update))
|
||||
|
||||
|
||||
@rich.repr.auto
|
||||
class CursorMoveMessage(Message):
|
||||
class CursorMove(Message):
|
||||
def __init__(self, sender: MessagePump, line: int) -> None:
|
||||
self.line = line
|
||||
super().__init__(sender)
|
||||
|
||||
@@ -11,7 +11,7 @@ from . import events
|
||||
from . import log
|
||||
from .layout import Layout, NoWidget
|
||||
from .geometry import Size, Offset, Region
|
||||
from .messages import UpdateMessage, LayoutMessage
|
||||
from .messages import Update, Layout
|
||||
from .reactive import Reactive, watch
|
||||
|
||||
from .widget import Widget, Widget
|
||||
@@ -89,7 +89,7 @@ class View(Widget):
|
||||
# def check_layout(self) -> bool:
|
||||
# return super().check_layout() or self.layout.check_update()
|
||||
|
||||
async def message_update(self, message: UpdateMessage) -> None:
|
||||
async def handle_update(self, message: Update) -> None:
|
||||
if self.is_root_view:
|
||||
message.stop()
|
||||
widget = message.widget
|
||||
@@ -99,7 +99,7 @@ class View(Widget):
|
||||
if display_update is not None:
|
||||
self.app.display(display_update)
|
||||
|
||||
async def message_layout(self, message: LayoutMessage) -> None:
|
||||
async def handle_layout(self, message: Layout) -> None:
|
||||
if self.is_root_view:
|
||||
message.stop()
|
||||
await self.refresh_layout()
|
||||
@@ -245,4 +245,4 @@ class View(Widget):
|
||||
async def action_toggle(self, name: str) -> None:
|
||||
widget = self.named_widgets[name]
|
||||
widget.visible = not widget.visible
|
||||
await self.post_message(LayoutMessage(self))
|
||||
await self.post_message(Layout(self))
|
||||
|
||||
@@ -7,7 +7,7 @@ from ..geometry import Offset, Size
|
||||
from ..layouts.vertical import VerticalLayout
|
||||
from ..view import View
|
||||
from ..message import Message
|
||||
from ..messages import UpdateMessage, LayoutMessage
|
||||
from ..messages import Update, Layout
|
||||
from ..widget import Widget
|
||||
from ..widgets import Static
|
||||
|
||||
@@ -40,7 +40,7 @@ class WindowView(View, layout=VerticalLayout):
|
||||
self.refresh(layout=True)
|
||||
await self.emit(WindowChange(self))
|
||||
|
||||
async def message_update(self, message: UpdateMessage) -> None:
|
||||
async def handle_update(self, message: Update) -> None:
|
||||
message.prevent_default()
|
||||
await self.emit(WindowChange(self))
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ from ._context import active_app
|
||||
from .geometry import Size
|
||||
from .message import Message
|
||||
from .message_pump import MessagePump
|
||||
from .messages import LayoutMessage, UpdateMessage
|
||||
from .messages import Layout, Update
|
||||
from .reactive import Reactive, watch
|
||||
from ._types import Lines
|
||||
|
||||
@@ -286,11 +286,11 @@ class Widget(MessagePump):
|
||||
self.render_cache = None
|
||||
self.reset_check_repaint()
|
||||
self.reset_check_layout()
|
||||
await self.emit(LayoutMessage(self))
|
||||
await self.emit(Layout(self))
|
||||
elif self.check_repaint():
|
||||
self.render_cache = None
|
||||
self.reset_check_repaint()
|
||||
await self.emit(UpdateMessage(self, self))
|
||||
await self.emit(Update(self, self))
|
||||
|
||||
async def focus(self) -> None:
|
||||
await self.app.set_focus(self)
|
||||
|
||||
@@ -113,7 +113,7 @@ class DirectoryTree(TreeControl[DirEntry]):
|
||||
await node.expand()
|
||||
self.refresh(layout=True)
|
||||
|
||||
async def message_tree_click(self, message: TreeClick[DirEntry]) -> None:
|
||||
async def handle_tree_click(self, message: TreeClick[DirEntry]) -> None:
|
||||
dir_entry = message.node.data
|
||||
if not dir_entry.is_dir:
|
||||
await self.emit(FileClick(self, dir_entry.path))
|
||||
|
||||
@@ -7,7 +7,7 @@ from rich.style import StyleType
|
||||
from .. import events
|
||||
from ..layouts.grid import GridLayout
|
||||
from ..message import Message
|
||||
from ..messages import CursorMoveMessage
|
||||
from ..messages import CursorMove
|
||||
from ..scrollbar import ScrollTo, ScrollBar
|
||||
from ..geometry import clamp
|
||||
from ..view import View
|
||||
@@ -170,19 +170,19 @@ class ScrollView(View):
|
||||
self.animate("x", self.target_x, duration=1, easing="out_cubic")
|
||||
self.animate("y", self.target_y, duration=1, easing="out_cubic")
|
||||
|
||||
async def message_scroll_up(self, message: Message) -> None:
|
||||
async def handle_scroll_up(self, message: Message) -> None:
|
||||
self.page_up()
|
||||
|
||||
async def message_scroll_down(self, message: Message) -> None:
|
||||
async def handle_scroll_down(self, message: Message) -> None:
|
||||
self.page_down()
|
||||
|
||||
async def message_scroll_left(self, message: Message) -> None:
|
||||
async def handle_scroll_left(self, message: Message) -> None:
|
||||
self.page_left()
|
||||
|
||||
async def message_scroll_right(self, message: Message) -> None:
|
||||
async def handle_scroll_right(self, message: Message) -> None:
|
||||
self.page_right()
|
||||
|
||||
async def message_scroll_to(self, message: ScrollTo) -> None:
|
||||
async def handle_scroll_to(self, message: ScrollTo) -> None:
|
||||
if message.x is not None:
|
||||
self.target_x = message.x
|
||||
if message.y is not None:
|
||||
@@ -190,7 +190,7 @@ class ScrollView(View):
|
||||
self.animate("x", self.target_x, speed=150, easing="out_cubic")
|
||||
self.animate("y", self.target_y, speed=150, easing="out_cubic")
|
||||
|
||||
async def message_window_change(self, message: Message) -> None:
|
||||
async def handle_window_change(self, message: Message) -> None:
|
||||
virtual_size = self.window.virtual_size
|
||||
self.x = self.validate_x(self.x)
|
||||
self.y = self.validate_y(self.y)
|
||||
@@ -204,6 +204,6 @@ class ScrollView(View):
|
||||
if self.layout.show_row("hscroll", virtual_size.width > self.size.width):
|
||||
self.refresh()
|
||||
|
||||
def message_cursor_move(self, message: CursorMoveMessage) -> None:
|
||||
def handle_cursor_move(self, message: CursorMove) -> None:
|
||||
self.scroll_to_center(message.line)
|
||||
message.stop()
|
||||
|
||||
@@ -15,7 +15,7 @@ from ..reactive import Reactive
|
||||
from .._types import MessageTarget
|
||||
from ..widget import Widget
|
||||
from ..message import Message
|
||||
from ..messages import CursorMoveMessage
|
||||
from ..messages import CursorMove
|
||||
|
||||
|
||||
NodeID = NewType("NodeID", int)
|
||||
@@ -189,11 +189,11 @@ class TreeControl(Generic[NodeDataType], Widget):
|
||||
show_cursor: Reactive[bool] = Reactive(False, layout=True)
|
||||
|
||||
def watch_show_cursor(self, value: bool) -> None:
|
||||
self.emit_no_wait(CursorMoveMessage(self, self.cursor_line))
|
||||
self.emit_no_wait(CursorMove(self, self.cursor_line))
|
||||
|
||||
def watch_cursor_line(self, value: int) -> None:
|
||||
if self.show_cursor:
|
||||
self.emit_no_wait(CursorMoveMessage(self, value + self.gutter.top))
|
||||
self.emit_no_wait(CursorMove(self, value + self.gutter.top))
|
||||
|
||||
async def add(
|
||||
self,
|
||||
@@ -309,7 +309,7 @@ if __name__ == "__main__":
|
||||
async def on_mount(self, event: events.Mount) -> None:
|
||||
await self.view.dock(TreeControl("Tree Root", data="foo"))
|
||||
|
||||
async def message_tree_click(self, message: TreeClick) -> None:
|
||||
async def handle_tree_click(self, message: TreeClick) -> None:
|
||||
if message.node.empty:
|
||||
await message.node.add("foo")
|
||||
await message.node.add("bar")
|
||||
|
||||
Reference in New Issue
Block a user