from textual.app import ComposeResult from textual.containers import Horizontal, Vertical from textual.screen import ModalScreen from textual.widgets import Button, Label class OverwriteConfirmScreen(ModalScreen[bool]): """Screen with a dialog to confirm overwriting data.""" def __init__(self, directory: str): super().__init__() self.directory = directory def compose(self) -> ComposeResult: with Vertical(id="dialog"): yield Label("[bold red]WARNING[/bold red]") yield Label( f"The output directory is not empty:\n[dim]{self.directory}[/dim]\n\nProceeding will likely overwrite existing experiment data.", id="warning_label", ) with Horizontal(id="dialog_buttons"): yield Button("Cancel", variant="primary", id="btn_cancel") yield Button("Overwrite", variant="error", id="btn_proceed") def on_button_pressed(self, event: Button.Pressed) -> None: if event.button.id == "btn_proceed": self.dismiss(True) else: self.dismiss(False)