message_ to handle_

This commit is contained in:
Will McGugan
2021-08-27 16:50:28 +01:00
parent 5ba536ff03
commit 5590829eef
11 changed files with 38 additions and 31 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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:

View File

@@ -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)

View File

@@ -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))

View File

@@ -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))

View File

@@ -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)

View File

@@ -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))

View File

@@ -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()

View File

@@ -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")