screens.py 1.1 KB

1234567891011121314151617181920212223242526272829
  1. from textual.app import ComposeResult
  2. from textual.containers import Horizontal, Vertical
  3. from textual.screen import ModalScreen
  4. from textual.widgets import Button, Label
  5. class OverwriteConfirmScreen(ModalScreen[bool]):
  6. """Screen with a dialog to confirm overwriting data."""
  7. def __init__(self, directory: str):
  8. super().__init__()
  9. self.directory = directory
  10. def compose(self) -> ComposeResult:
  11. with Vertical(id="dialog"):
  12. yield Label("[bold red]WARNING[/bold red]")
  13. yield Label(
  14. f"The output directory is not empty:\n[dim]{self.directory}[/dim]\n\nProceeding will likely overwrite existing experiment data.",
  15. id="warning_label",
  16. )
  17. with Horizontal(id="dialog_buttons"):
  18. yield Button("Cancel", variant="primary", id="btn_cancel")
  19. yield Button("Overwrite", variant="error", id="btn_proceed")
  20. def on_button_pressed(self, event: Button.Pressed) -> None:
  21. if event.button.id == "btn_proceed":
  22. self.dismiss(True)
  23. else:
  24. self.dismiss(False)