示例#1
0
 def _add_rule(self, rule):
     key = None
     for pv in enumerate(rule):
         if pv[1] is not None:
             key = pv
     if key is not None:
         ind = self._index.setdefault(key, {})
         ind[rule] = 1
         trellis.on_undo(ind.pop, rule, 1)
示例#2
0
 def _watching(self):
     cells = self._watching or {}
     for k in self.keys.removed:
         if k in cells:
             trellis.on_undo(cells.__setitem__, k, cells[k])
             del cells[k]
             trellis.mark_dirty()
     lookup = self.lookup_func
     for k in self.keys.added:
         trellis.on_undo(cells.pop, k, None)
         cells[k] = trellis.Cell(instancemethod(lookup, k, type(k)))
         trellis.mark_dirty()
     return cells
示例#3
0
 def _del_rule(self, rule):
     index = self._index
     for pv in enumerate(rule):
         if pv in index:
             index[pv].pop(rule, 1)
             trellis.on_undo(index[pv].__setitem__, rule, 1)