mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
@@ -540,7 +540,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
severity,
|
||||
)
|
||||
except Exception as error:
|
||||
self.on_exception(error)
|
||||
self._handle_exception(error)
|
||||
|
||||
def action_screenshot(self, path: str | None = None) -> None:
|
||||
"""Action to save a screenshot."""
|
||||
@@ -964,9 +964,9 @@ class App(Generic[ReturnType], DOMNode):
|
||||
if self.mouse_over != widget:
|
||||
try:
|
||||
if self.mouse_over is not None:
|
||||
await self.mouse_over.forward_event(events.Leave(self))
|
||||
await self.mouse_over._forward_event(events.Leave(self))
|
||||
if widget is not None:
|
||||
await widget.forward_event(events.Enter(self))
|
||||
await widget._forward_event(events.Enter(self))
|
||||
finally:
|
||||
self.mouse_over = widget
|
||||
|
||||
@@ -1005,7 +1005,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
self._exit_renderables.extend(pre_rendered)
|
||||
self._close_messages_no_wait()
|
||||
|
||||
def on_exception(self, error: Exception) -> None:
|
||||
def _handle_exception(self, error: Exception) -> None:
|
||||
"""Called with an unhandled exception.
|
||||
|
||||
Args:
|
||||
@@ -1071,7 +1071,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
self.CSS, path=app_css_path, is_default_css=False
|
||||
)
|
||||
except Exception as error:
|
||||
self.on_exception(error)
|
||||
self._handle_exception(error)
|
||||
self._print_error_renderables()
|
||||
return
|
||||
|
||||
@@ -1094,7 +1094,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
await ready_callback()
|
||||
await process_messages()
|
||||
await self.animator.stop()
|
||||
await self.close_all()
|
||||
await self._close_all()
|
||||
|
||||
self._running = True
|
||||
try:
|
||||
@@ -1120,7 +1120,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
finally:
|
||||
driver.stop_application_mode()
|
||||
except Exception as error:
|
||||
self.on_exception(error)
|
||||
self._handle_exception(error)
|
||||
finally:
|
||||
self._running = False
|
||||
self._print_error_renderables()
|
||||
@@ -1221,7 +1221,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
async def _disconnect_devtools(self):
|
||||
await self.devtools.disconnect()
|
||||
|
||||
def start_widget(self, parent: Widget, widget: Widget) -> None:
|
||||
def _start_widget(self, parent: Widget, widget: Widget) -> None:
|
||||
"""Start a widget (run it's task) so that it can receive messages.
|
||||
|
||||
Args:
|
||||
@@ -1235,7 +1235,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
def is_mounted(self, widget: Widget) -> bool:
|
||||
return widget in self._registry
|
||||
|
||||
async def close_all(self) -> None:
|
||||
async def _close_all(self) -> None:
|
||||
while self._registry:
|
||||
child = self._registry.pop()
|
||||
await child._close_messages()
|
||||
@@ -1279,7 +1279,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
try:
|
||||
console.print(renderable)
|
||||
except Exception as error:
|
||||
self.on_exception(error)
|
||||
self._handle_exception(error)
|
||||
finally:
|
||||
self._end_update()
|
||||
console.file.flush()
|
||||
@@ -1348,16 +1348,16 @@ class App(Generic[ReturnType], DOMNode):
|
||||
if isinstance(event, events.Key) and self.focused is not None:
|
||||
# Key events are sent direct to focused widget
|
||||
if self.bindings.allow_forward(event.key):
|
||||
await self.focused.forward_event(event)
|
||||
await self.focused._forward_event(event)
|
||||
else:
|
||||
# Key has allow_forward=False which disallows forward to focused widget
|
||||
await super().on_event(event)
|
||||
else:
|
||||
# Forward the event to the view
|
||||
await self.screen.forward_event(event)
|
||||
await self.screen._forward_event(event)
|
||||
elif isinstance(event, events.Paste):
|
||||
if self.focused is not None:
|
||||
await self.focused.forward_event(event)
|
||||
await self.focused._forward_event(event)
|
||||
else:
|
||||
await super().on_event(event)
|
||||
|
||||
@@ -1514,7 +1514,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
async def action_toggle_class(self, selector: str, class_name: str) -> None:
|
||||
self.screen.query(selector).toggle_class(class_name)
|
||||
|
||||
def on_terminal_supports_synchronized_output(
|
||||
def _on_terminal_supports_synchronized_output(
|
||||
self, message: messages.TerminalSupportsSynchronizedOutput
|
||||
) -> None:
|
||||
log("[b green]SynchronizedOutput mode is supported")
|
||||
|
||||
@@ -327,7 +327,7 @@ class MessagePump(metaclass=MessagePumpMeta):
|
||||
except CancelledError:
|
||||
raise
|
||||
except Exception as error:
|
||||
self.app.on_exception(error)
|
||||
self.app._handle_exception(error)
|
||||
break
|
||||
finally:
|
||||
self._message_queue.task_done()
|
||||
@@ -340,7 +340,7 @@ class MessagePump(metaclass=MessagePumpMeta):
|
||||
try:
|
||||
await invoke(method, event)
|
||||
except Exception as error:
|
||||
self.app.on_exception(error)
|
||||
self.app._handle_exception(error)
|
||||
break
|
||||
|
||||
log("CLOSED", self)
|
||||
|
||||
@@ -218,7 +218,7 @@ class Screen(Widget):
|
||||
)
|
||||
)
|
||||
except Exception as error:
|
||||
self.app.on_exception(error)
|
||||
self.app._handle_exception(error)
|
||||
return
|
||||
display_update = self._compositor.render(full=full)
|
||||
if display_update is not None:
|
||||
@@ -277,9 +277,9 @@ class Screen(Widget):
|
||||
style=event.style,
|
||||
)
|
||||
mouse_event.set_forwarded()
|
||||
await widget.forward_event(mouse_event)
|
||||
await widget._forward_event(mouse_event)
|
||||
|
||||
async def forward_event(self, event: events.Event) -> None:
|
||||
async def _forward_event(self, event: events.Event) -> None:
|
||||
if event.is_forwarded:
|
||||
return
|
||||
event.set_forwarded()
|
||||
@@ -307,7 +307,7 @@ class Screen(Widget):
|
||||
event.set_forwarded()
|
||||
await self.post_message(event)
|
||||
else:
|
||||
await widget.forward_event(event.offset(-region.x, -region.y))
|
||||
await widget._forward_event(event.offset(-region.x, -region.y))
|
||||
|
||||
elif isinstance(event, (events.MouseScrollDown, events.MouseScrollUp)):
|
||||
try:
|
||||
@@ -319,6 +319,6 @@ class Screen(Widget):
|
||||
if scroll_widget is self:
|
||||
await self.post_message(event)
|
||||
else:
|
||||
await scroll_widget.forward_event(event)
|
||||
await scroll_widget._forward_event(event)
|
||||
else:
|
||||
await self.post_message(event)
|
||||
|
||||
@@ -158,7 +158,7 @@ class Timer:
|
||||
await invoke(self._callback)
|
||||
except Exception as error:
|
||||
app = active_app.get()
|
||||
app.on_exception(error)
|
||||
app._handle_exception(error)
|
||||
else:
|
||||
event = events.Timer(
|
||||
self.sender,
|
||||
|
||||
@@ -430,7 +430,7 @@ class Widget(DOMNode):
|
||||
if self._scrollbar_corner is not None:
|
||||
return self._scrollbar_corner
|
||||
self._scrollbar_corner = ScrollBarCorner()
|
||||
self.app.start_widget(self, self._scrollbar_corner)
|
||||
self.app._start_widget(self, self._scrollbar_corner)
|
||||
return self._scrollbar_corner
|
||||
|
||||
@property
|
||||
@@ -447,7 +447,7 @@ class Widget(DOMNode):
|
||||
self._vertical_scrollbar = scroll_bar = ScrollBar(
|
||||
vertical=True, name="vertical", thickness=self.scrollbar_size_vertical
|
||||
)
|
||||
self.app.start_widget(self, scroll_bar)
|
||||
self.app._start_widget(self, scroll_bar)
|
||||
return scroll_bar
|
||||
|
||||
@property
|
||||
@@ -465,7 +465,7 @@ class Widget(DOMNode):
|
||||
vertical=False, name="horizontal", thickness=self.scrollbar_size_horizontal
|
||||
)
|
||||
|
||||
self.app.start_widget(self, scroll_bar)
|
||||
self.app._start_widget(self, scroll_bar)
|
||||
return scroll_bar
|
||||
|
||||
def _refresh_scrollbars(self) -> None:
|
||||
@@ -1338,7 +1338,7 @@ class Widget(DOMNode):
|
||||
offset_x, offset_y = self.screen.get_offset(self)
|
||||
return self.screen.get_style_at(x + offset_x, y + offset_y)
|
||||
|
||||
async def forward_event(self, event: events.Event) -> None:
|
||||
async def _forward_event(self, event: events.Event) -> None:
|
||||
event.set_forwarded()
|
||||
await self.post_message(event)
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ class AppTest(App):
|
||||
|
||||
await let_asyncio_process_some_events()
|
||||
|
||||
def on_exception(self, error: Exception) -> None:
|
||||
def _handle_exception(self, error: Exception) -> None:
|
||||
# In tests we want the errors to be raised, rather than printed to a Console
|
||||
raise error
|
||||
|
||||
|
||||
Reference in New Issue
Block a user