Show spinner only for backup and restore operations
Other OperationLog dialogs (crontab show, remote test, retention) no longer display the spinner since they complete quickly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -83,7 +83,7 @@ class RemotesScreen(Screen):
|
||||
|
||||
@work
|
||||
async def _test_remote(self, name: str) -> None:
|
||||
log_screen = OperationLog(f"Testing Remote: {name}")
|
||||
log_screen = OperationLog(f"Testing Remote: {name}", show_spinner=False)
|
||||
self.app.push_screen(log_screen)
|
||||
rc, stdout, stderr = await run_cli("remotes", "test", f"--name={name}")
|
||||
if stdout:
|
||||
|
||||
@@ -68,7 +68,7 @@ class RetentionScreen(Screen):
|
||||
|
||||
@work
|
||||
async def _do_cleanup(self, target: str) -> None:
|
||||
log_screen = OperationLog(f"Retention: {target}")
|
||||
log_screen = OperationLog(f"Retention: {target}", show_spinner=False)
|
||||
self.app.push_screen(log_screen)
|
||||
rc = await stream_cli(log_screen.write, "retention", f"--target={target}")
|
||||
if rc == 0:
|
||||
@@ -79,7 +79,7 @@ class RetentionScreen(Screen):
|
||||
|
||||
@work
|
||||
async def _do_cleanup_all(self) -> None:
|
||||
log_screen = OperationLog("Retention: All Targets")
|
||||
log_screen = OperationLog("Retention: All Targets", show_spinner=False)
|
||||
self.app.push_screen(log_screen)
|
||||
rc = await stream_cli(log_screen.write, "retention", "--all")
|
||||
if rc == 0:
|
||||
|
||||
@@ -138,7 +138,7 @@ class ScheduleScreen(Screen):
|
||||
|
||||
@work
|
||||
async def _show_crontab(self) -> None:
|
||||
log_screen = OperationLog("Current Crontab")
|
||||
log_screen = OperationLog("Current Crontab", show_spinner=False)
|
||||
self.app.push_screen(log_screen)
|
||||
rc, stdout, stderr = await run_cli("schedule", "show")
|
||||
if stdout:
|
||||
|
||||
@@ -33,9 +33,10 @@ class OperationLog(ModalScreen[None]):
|
||||
|
||||
BINDINGS = [("escape", "close", "Close")]
|
||||
|
||||
def __init__(self, title: str = "Operation Output"):
|
||||
def __init__(self, title: str = "Operation Output", show_spinner: bool = True):
|
||||
super().__init__()
|
||||
self._title = title
|
||||
self._show_spinner = show_spinner
|
||||
self._mounted_event = asyncio.Event()
|
||||
self._buffer: list[str] = []
|
||||
|
||||
@@ -45,6 +46,7 @@ class OperationLog(ModalScreen[None]):
|
||||
yield RichLog(id="ol-log", wrap=True, highlight=True, markup=True)
|
||||
with Horizontal(id="ol-footer"):
|
||||
yield Button("Close", variant="primary", id="ol-close")
|
||||
if self._show_spinner:
|
||||
yield SpinnerWidget("arrow3", id="ol-spinner")
|
||||
|
||||
def on_mount(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user