Add a confirmation dialogue when deleting activites..
..which have >0 facts. Re #2
This commit is contained in:
parent
2a1d13236b
commit
fea15472e3
@ -18,7 +18,7 @@ DataTable:focus .datatable--cursor {
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
ActivityEditScreen, ActivityMappingScreen {
|
ActivityEditScreen, ActivityMappingScreen, ActivityDeleteConfirmScreen {
|
||||||
align: center middle;
|
align: center middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,3 +62,25 @@ ActivityMappingScreen AutoComplete {
|
|||||||
ActivityEditScreen Input {
|
ActivityEditScreen Input {
|
||||||
width: 60;
|
width: 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#dialog {
|
||||||
|
grid-size: 2;
|
||||||
|
grid-gutter: 1 2;
|
||||||
|
grid-rows: 1fr 3;
|
||||||
|
padding: 0 1;
|
||||||
|
width: 60;
|
||||||
|
height: 11;
|
||||||
|
border: thick $background 80%;
|
||||||
|
background: $surface;
|
||||||
|
}
|
||||||
|
|
||||||
|
#question {
|
||||||
|
column-span: 2;
|
||||||
|
height: 1fr;
|
||||||
|
width: 1fr;
|
||||||
|
content-align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
@ -4,7 +4,7 @@ from textual import on
|
|||||||
from textual.app import ComposeResult
|
from textual.app import ComposeResult
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
from textual.coordinate import Coordinate
|
from textual.coordinate import Coordinate
|
||||||
from textual.containers import Horizontal, Vertical
|
from textual.containers import Horizontal, Vertical, Grid
|
||||||
from textual.events import DescendantBlur
|
from textual.events import DescendantBlur
|
||||||
from textual.screen import Screen, ModalScreen
|
from textual.screen import Screen, ModalScreen
|
||||||
from textual.widgets import (
|
from textual.widgets import (
|
||||||
@ -16,6 +16,7 @@ from textual.widgets import (
|
|||||||
Checkbox,
|
Checkbox,
|
||||||
TabbedContent,
|
TabbedContent,
|
||||||
TabPane,
|
TabPane,
|
||||||
|
Button
|
||||||
)
|
)
|
||||||
|
|
||||||
from peewee import fn, JOIN
|
from peewee import fn, JOIN
|
||||||
@ -273,6 +274,29 @@ class ActivityMappingScreen(ModalScreen):
|
|||||||
self.dismiss(None)
|
self.dismiss(None)
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityDeleteConfirmScreen(ModalScreen):
|
||||||
|
BINDINGS = [
|
||||||
|
("escape", "cancel", "Cancel"),
|
||||||
|
]
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
yield Grid(
|
||||||
|
Label("Are you sure you want to delete this activity?", id="question"),
|
||||||
|
Button("Confirm", variant="error", id="confirm"),
|
||||||
|
Button("Cancel", variant="primary", id="cancel"),
|
||||||
|
id="dialog",
|
||||||
|
)
|
||||||
|
|
||||||
|
def on_button_pressed(self, event: Button.Pressed) -> None:
|
||||||
|
if event.button.id == "quit":
|
||||||
|
self.dismiss(True)
|
||||||
|
else:
|
||||||
|
self.dismiss(False)
|
||||||
|
|
||||||
|
def action_cancel(self):
|
||||||
|
self.dismiss(False)
|
||||||
|
|
||||||
|
|
||||||
class ActivityList(ListPane):
|
class ActivityList(ListPane):
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
("s", "sort", "Sort"),
|
("s", "sort", "Sort"),
|
||||||
@ -384,11 +408,20 @@ class ActivityList(ListPane):
|
|||||||
)
|
)
|
||||||
|
|
||||||
activity = HamsterActivity.get(id=activity_id)
|
activity = HamsterActivity.get(id=activity_id)
|
||||||
|
|
||||||
|
def check_delete(delete: bool) -> None:
|
||||||
|
"""Called when QuitScreen is dismissed."""
|
||||||
|
if delete:
|
||||||
activity.delete_instance()
|
activity.delete_instance()
|
||||||
|
|
||||||
# supply the row key to `remove_row` to delete the row.
|
# supply the row key to `remove_row` to delete the row.
|
||||||
self.table.remove_row(row_key)
|
self.table.remove_row(row_key)
|
||||||
|
|
||||||
|
if activity.facts.count() > 0:
|
||||||
|
self.app.push_screen(ActivityDeleteConfirmScreen(), check_delete)
|
||||||
|
else:
|
||||||
|
check_delete(True)
|
||||||
|
|
||||||
def action_move_facts(self) -> None:
|
def action_move_facts(self) -> None:
|
||||||
row_idx: int = self.table.cursor_row
|
row_idx: int = self.table.cursor_row
|
||||||
row_cells = self.table.get_row_at(row_idx)
|
row_cells = self.table.get_row_at(row_idx)
|
||||||
|
Loading…
Reference in New Issue
Block a user