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.
41 lines
1.2 KiB
41 lines
1.2 KiB
from message.simple_messages import DataChgClickMessage
|
|
from model import Sense
|
|
|
|
|
|
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)
|