diff --git a/src/message/__init__.py b/src/message/__init__.py index 6460837..9960903 100644 --- a/src/message/__init__.py +++ b/src/message/__init__.py @@ -1,4 +1,4 @@ -from message.simple_messages import NoReset, Reset, ModalNotOkClose, ClickMessage, DataChgClickMessage +from message.simple_messages import NoReset, Reset, ModalNotOkClose, ClickMessage, DataChgClickMessage, KeyboardPress from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation from message.show_messages import ShowEntryLabelsEdit, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowExampleEdit, ShowExampleTranslationEdit, ShowVariantsEdit from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditEntryLabels diff --git a/src/message/message.py b/src/message/message.py index 0106608..cb07624 100644 --- a/src/message/message.py +++ b/src/message/message.py @@ -33,6 +33,9 @@ class Message: def reset(self): return True + + def clear_args(self): + self._args = [] def msg(message, params): diff --git a/src/message/simple_messages.py b/src/message/simple_messages.py index d5c18e6..c9ec7ac 100644 --- a/src/message/simple_messages.py +++ b/src/message/simple_messages.py @@ -26,6 +26,18 @@ class Reset(ClickMessage): class NoReset(Reset): def reset(self): return False + + +class KeyboardPress(Message): + def on_event(self, event): + self.add_arg(event.key) + + def reset(self): + key = self.get_arg(0, str) + return key == "Escape" + + def update_model(self, model): + pass # a "hack" message for reseting modals # diff --git a/src/update.py b/src/update.py index 8b389c8..d14cd1e 100644 --- a/src/update.py +++ b/src/update.py @@ -26,6 +26,7 @@ class Update: # do update for msg in self.message_queue: msg.update_model(self.model) + msg.clear_args() if reset: self.model.post_reset() diff --git a/src/view/view.py b/src/view/view.py index 6c234fc..c8ae563 100644 --- a/src/view/view.py +++ b/src/view/view.py @@ -12,6 +12,9 @@ class View: self.vdom = h('div', {}, "Loading...") self.model = None patch(container, self.vdom) + + # this does not work on parent div, so attaching to document here + document.addEventListener("keyup", msg(KeyboardPress())) def view(self, model): self.model = model