diff --git a/src/pilgrim/ui/screens/modals/delete_all_entries_from_diary_modal.py b/src/pilgrim/ui/screens/modals/delete_all_entries_from_diary_modal.py new file mode 100644 index 0000000..ec5d5ad --- /dev/null +++ b/src/pilgrim/ui/screens/modals/delete_all_entries_from_diary_modal.py @@ -0,0 +1,20 @@ + +from textual.widgets import Button + +from textual import on + +from pilgrim.ui.screens.modals.delete_yes_confirmation_modal import DeleteYesConfirmationModal + + +class DeleteAllEntriesModal(DeleteYesConfirmationModal): + def __init__(self,diary_id:int): + super().__init__(diary_id) + self.head_text.update("Are you sure you want to delete all entries from this diary?") + + + + @on(Button.Pressed, "#DeleteDiaryModal-DeleteButton") + def on_delete_button_pressed(self, event): + self.result = True + self.dismiss() + diff --git a/src/pilgrim/ui/screens/modals/delete_all_photos_from_diary_modal.py b/src/pilgrim/ui/screens/modals/delete_all_photos_from_diary_modal.py new file mode 100644 index 0000000..d34b8bb --- /dev/null +++ b/src/pilgrim/ui/screens/modals/delete_all_photos_from_diary_modal.py @@ -0,0 +1,20 @@ + +from textual.widgets import Button + +from textual import on + +from pilgrim.ui.screens.modals.delete_yes_confirmation_modal import DeleteYesConfirmationModal + + +class DeleteAllPhotosModal(DeleteYesConfirmationModal): + def __init__(self,diary_id:int): + super().__init__(diary_id) + self.head_text.update("Are you sure you want to delete all photos from this diary?") + + + + @on(Button.Pressed, "#DeleteDiaryModal-DeleteButton") + def on_delete_button_pressed(self, event): + self.result = True + self.dismiss() + diff --git a/src/pilgrim/ui/screens/modals/delete_diary_modal.py b/src/pilgrim/ui/screens/modals/delete_diary_modal.py new file mode 100644 index 0000000..61e6597 --- /dev/null +++ b/src/pilgrim/ui/screens/modals/delete_diary_modal.py @@ -0,0 +1,59 @@ +from textual.containers import Container +from textual.widgets import Header, Footer, Label, Button,Input +from textual.screen import Screen +from textual.binding import Binding +from textual import on + + +class DeleteDiaryModal(Screen): + + BINDINGS = [ + Binding("escape","cancel","Cancel"), + ] + def __init__(self, diary_id: int,diary_name:str): + super().__init__() + self.diary_id = diary_id + self.diary_name = diary_name + self.user_input = Input(placeholder=f"Type diary name to confirm: ({self.diary_name})",id="DeleteDiaryModal-UserInput") + self.delete_button = Button("Delete Diary",id="DeleteDiaryModal-DeleteButton",disabled=True) + self.cancel_button = Button("Cancel",id="DeleteDiaryModal-CancelButton") + self.result = None + + def compose(self): + yield Header() + yield Container( + Label("Are you sure you want to delete this diary?"), + self.user_input, + Container( + self.delete_button, + self.cancel_button, + id="DeleteDiaryModal-ButtonContainer", + classes="DeleteDiaryModal-ButtonContainer" + ), + id="DeleteDiaryModal-MainContainer", + classes="DeleteDiaryModal-MainContainer" + ) + yield Footer() + + @on(Input.Changed,"#DeleteDiaryModal-UserInput") + def on_user_input_changed(self, event): + input_text = event.value.strip() + + if input_text == self.diary_name: + self.delete_button.disabled = False + else: + self.delete_button.disabled = True + + @on(Button.Pressed,"#DeleteDiaryModal-DeleteButton") + def on_delete_button_pressed(self, event): + self.result = True + self.dismiss() + + + @on(Button.Pressed,"#DeleteDiaryModal-CancelButton") + def on_cancel_button_pressed(self, event): + self.action_cancel() + + + def action_cancel(self): + self.dismiss() diff --git a/src/pilgrim/ui/screens/modals/delete_yes_confirmation_modal.py b/src/pilgrim/ui/screens/modals/delete_yes_confirmation_modal.py new file mode 100644 index 0000000..8c6c9bf --- /dev/null +++ b/src/pilgrim/ui/screens/modals/delete_yes_confirmation_modal.py @@ -0,0 +1,54 @@ +from textual.containers import Container +from textual.widgets import Header, Footer, Label, Button,Input +from textual.screen import Screen +from textual.binding import Binding +from textual import on + + +class DeleteYesConfirmationModal(Screen): + BINDINGS = [ + Binding("escape", "cancel", "Cancel"), + ] + def __init__(self,diary_id:int): + super().__init__() + self.diary_id = diary_id + self.user_input = Input(placeholder="Type 'Yes, I do ' to confirm",id="DeleteYesConfirmationModal-UserInput") + self.delete_button = Button("Delete",id="DeleteYesConfirmationModal-DeleteButton",disabled=True) + self.cancel_button = Button("Cancel",id="DeleteYesConfirmationModal-CancelButton") + self.head_text = Label("Are you sure you want to delete this diary?",id="DeleteYesConfirmationModal-HeadText") + self.second_head_text = Label("This action cannot be undone.",id="DeleteYesConfirmationModal-SecondHeadText") + self.delete_modal_container = Container( + self.head_text, + self.second_head_text, + self.user_input, + Container( + self.delete_button, + self.cancel_button, + id="DeleteYesConfirmationModal-DeleteButtonContainer", + classes="DeleteYesConfirmationModal-DeleteButtonContainer" + ), + id="DeleteYesConfirmationModal-DeleteModalContainer", + classes="DeleteYesConfirmationModal-DeleteModalContainer" + ) + self.result = None + + @on(Input.Changed,"#DeleteYesConfirmationModal-UserInput") + def on_user_input_changed(self, event): + input_text = event.value.strip() + if input_text == "Yes, I do": + self.delete_button.disabled = False + else: + self.delete_button.disabled = True + + @on(Button.Pressed,"#DeleteYesConfirmationModal-CancelButton") + def on_cancel_button_pressed(self, event): + self.action_cancel() + + def action_cancel(self): + self.dismiss() + self.app.push_screen(SettingsScreen(diary=travel_diary[0])) + + def compose(self): + yield Header() + yield Footer() + yield self.delete_modal_container \ No newline at end of file