from message.message import Message from message.simple_messages import NoReset from browser import document from model import Sense, Example class SimpleEditMessage(Message): def __init__(self, event, prop): input_element = document.getElementById("modal-input") self.new_text = input_element.value self.prop = prop class EditSenseLabel(Message): def __init__(self, _, prop): assert(type(prop) is Sense) self.sense = prop def update_model(self, model): self.sense.labels = [] for input_el in document.getElementsByClassName("sense-edit-input"): new_sense_label = input_el.value if new_sense_label != "": self.sense.labels.append(new_sense_label) class AddSenseLabel(NoReset): def __init__(self, _, prop): assert(type(prop) is Sense) self.sense = prop def update_model(self, model): # just adding to the copy to show in the modal self.sense.copy().labels.append("") class AddExampleTranslation(NoReset): def __init__(self, _, prop): assert(type(prop) is Example) self.example = prop def update_model(self, model): # just adding to the copy to show in the modal self.example.copy().translations.append("") class EditExampleTranslation(Message): def __init__(self, _, prop): assert(type(prop) is Example) self.example = prop def update_model(self, model): self.example.translations = [] for input_el in document.getElementsByClassName("list-adder-input"): new_example_translation = input_el.value if new_example_translation != "": self.example.translations.append(new_example_translation) class AddSense(SimpleEditMessage): def update_model(self, model): sense = self.prop sense.labels = [self.new_text] model.entry.senses.append(sense) class EditSenseDefinition(SimpleEditMessage): def update_model(self, model): sense = self.prop assert(type(sense) is Sense) sense.definition = self.new_text class EditComment(SimpleEditMessage): def update_model(self, model): model.entry.comment = self.new_text class EditExample(SimpleEditMessage): def update_model(self, model): example = self.prop assert(type(example) is Example) example.example = self.new_text