commit - 67e37ea4e902fd4b618e5df04e97d18df742d5ab
commit + 50855c87a04309240229d68af9ce3ce5bab7faf2
blob - b4b48a7a0b888e290e222d1283530539c707bacf
blob + ae59af4e6103687ef48ca526edfb47d2feaee04e
--- nezzontli_ctl/screens/confirm_delete.py
+++ nezzontli_ctl/screens/confirm_delete.py
class ConfirmDeleteScreen(ModalScreen[bool]):
- """Pide confirmar la eliminación DOS VECES (dos preguntas seguidas en el
- mismo modal) antes de devolver True. False si se cancela en cualquiera
- de las dos."""
+ """Diálogo centrado que pide confirmar la eliminación una vez. True si
+ se confirma, False si se cancela."""
BINDINGS = [("escape", "cancel", "Cancelar")]
- _MESSAGES = [
- "¿Seguro que querés eliminar esto?",
- "¿Estás completamente seguro? Esta acción no se puede deshacer.",
- ]
-
def __init__(self, what: str):
super().__init__()
self._what = what
- self._step = 0
def compose(self):
- with Vertical(classes="form-container"):
+ with Vertical(id="delete-dialog"):
yield Label("Eliminar", classes="form-label")
yield Static(f"Se va a eliminar: {self._what}", id="delete-target")
- yield Static(self._MESSAGES[0], id="delete-message")
- with Horizontal():
+ yield Static("¿Seguro? Esta acción no se puede deshacer.", id="delete-message")
+ with Horizontal(id="delete-buttons"):
yield Button("Sí, eliminar", id="delete-yes", variant="error")
yield Button("Cancelar", id="delete-no")
def on_button_pressed(self, event: Button.Pressed) -> None:
- if event.button.id != "delete-yes":
- self.dismiss(False)
- return
- if self._step == 0:
- self._step = 1
- self.query_one("#delete-message", Static).update(self._MESSAGES[1])
- self.query_one("#delete-yes", Button).label = "Sí, eliminar definitivamente"
- return
- self.dismiss(True)
+ self.dismiss(event.button.id == "delete-yes")
def action_cancel(self) -> None:
self.dismiss(False)
blob - 9abd3deac120cea1b394aee79702fdaebd2566e0
blob + 4348b54a8bb25f3795ccc8976ba3402ad68706ee
--- nezzontli_ctl/styles.tcss
+++ nezzontli_ctl/styles.tcss
#success-container {
align: center middle;
height: 100%;
+ width: 100%;
}
#cowsay-output {
color: $success;
+ width: 100%;
+ content-align: center middle;
}
+
+ConfirmDeleteScreen {
+ align: center middle;
+}
+
+#delete-dialog {
+ width: 64;
+ height: auto;
+ padding: 1 2;
+ border: solid $error;
+ background: $surface;
+}
+
+#delete-target {
+ margin-bottom: 1;
+}
+
+#delete-message {
+ color: $warning;
+ margin-bottom: 1;
+}
+
+#delete-buttons {
+ height: auto;
+}