class Layout(object): def __init__(self): self.solver = Solver() def update(self, element): self.solver.autosolve = False for constraint in element.constraints[1]: self.solver.remove_constraint(constraint) for constraint in element.constraints[0]: self.solver.add_constraint(constraint) element.constraints = [], element.constraints[0] self.solver.autosolve = True
class Layout(object): def __init__(self): self.solver = Solver() self.introns = WeakValueDictionary() def update(self, element): self.solver.autosolve = False for constraint in element.constraints[1]: self.solver.remove_constraint(constraint) for constraint in element.constraints[0]: self.solver.add_constraint(constraint) element.constraints = [], element.constraints[0] self.solver.autosolve = True def add_intron(self, source, intron): self.introns[source] = intron def pop_intron(self, source): return self.introns.pop(source) def get_intron(self, source, otherwise=None): return self.introns.get(source, otherwise)