Loading poolpay/admin/ModalForm.py +4 −10 Changes for poolpay/admin/ModalForm.py: 4 added lines, 10 removed lines. Original line number Diff line number Diff line from collections.abc import Sequence from textual.screen import ModalScreen from textual.widgets import Input class ModalForm(ModalScreen): class ModalForm[T](ModalScreen[T]): BINDINGS = [ ("escape", "app.pop_screen", "Abbrechen"), ] @property def _form_inputs(self) -> Sequence[Input]: # TODO Make this abstract def _result(self) -> T: raise NotImplementedError() def _close(self) -> None: form_values = tuple(i.value for i in self._form_inputs) self.dismiss(form_values) def on_input_submitted(self, event: Input.Submitted) -> None: self._close_if_complete() def _close_if_complete(self) -> None: invalid_field_found = self._focus_next_invalid_field() if not invalid_field_found: self._close() self.dismiss(self._result) def _focus_next_invalid_field(self) -> bool: for field in self._form_inputs: for field in self.query(Input): if not field.is_valid or field.value == "": field.focus() return True Loading Loading
poolpay/admin/ModalForm.py +4 −10 Changes for poolpay/admin/ModalForm.py: 4 added lines, 10 removed lines. Original line number Diff line number Diff line from collections.abc import Sequence from textual.screen import ModalScreen from textual.widgets import Input class ModalForm(ModalScreen): class ModalForm[T](ModalScreen[T]): BINDINGS = [ ("escape", "app.pop_screen", "Abbrechen"), ] @property def _form_inputs(self) -> Sequence[Input]: # TODO Make this abstract def _result(self) -> T: raise NotImplementedError() def _close(self) -> None: form_values = tuple(i.value for i in self._form_inputs) self.dismiss(form_values) def on_input_submitted(self, event: Input.Submitted) -> None: self._close_if_complete() def _close_if_complete(self) -> None: invalid_field_found = self._focus_next_invalid_field() if not invalid_field_found: self._close() self.dismiss(self._result) def _focus_next_invalid_field(self) -> bool: for field in self._form_inputs: for field in self.query(Input): if not field.is_valid or field.value == "": field.focus() return True Loading