You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lexonomy_custom_editor/src/message/sense_edit.py

59 lines
1.7 KiB

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)