from message.simple_messages import DataChgClickMessage from message.message import delayed_msg from message.show_messages import ShowExampleEdit from model import Sense from model import Example def _get_sense_idx(sense, model): for idx, s in enumerate(model.entry.senses): if s == sense: return idx class SenseMoveUp(DataChgClickMessage): def update_model(self, model): sense = self.get_arg(0, Sense) sidx = _get_sense_idx(sense, model) assert(sidx >= 0) if sidx == 0: return model.entry.senses[sidx], model.entry.senses[sidx - 1] = model.entry.senses[sidx - 1], model.entry.senses[sidx] class SenseMoveDown(DataChgClickMessage): def update_model(self, model): sense = self.get_arg(0, Sense) sidx = _get_sense_idx(sense, model) assert(sidx >= 0) if sidx == len(model.senses) - 1: return model.entry.senses[sidx], model.entry.senses[sidx + 1] = model.entry.senses[sidx + 1], model.entry.senses[sidx] class SenseBin(DataChgClickMessage): def update_model(self, model): sense = self.get_arg(0, Sense) sidx = _get_sense_idx(sense, model) assert(sidx >= 0) model.entry.senses.splice(sidx, 1) class AddMultiwordExample(DataChgClickMessage): def on_event(self, event): super().on_event(event) self.event_copy = event def update_model(self, model): sense = self.get_arg(0, Sense) new_example = Example.new_multiword() # open up an edit example dialog delayed_msg(ShowExampleEdit, self.event_copy, 0, new_example, sense)