def undo_set_expr(self, state):
     self.do_set_expr(None, state['old'], setstate=False)
     if 'olddata' in state:
         MkArray.__setitem__(self, slice(None), state['olddata'])
 def __setitem__(self, key, value):
     prev = self[key]
     MkArray.__setitem__(self, key, value)
     self.worksheet.emit('data-changed')
     self.emit('data-changed')
     return [key, value, prev]
 def undo_set_expr(self, state):
     self.do_set_expr(None, state["old"], setstate=False)
     if "olddata" in state:
         MkArray.__setitem__(self, slice(None), state["olddata"])