class Preset: def __init__(self, data): # Set default values for all preset attributes self.p = "off" self.d = 100 self.b = 127 self.c = [(255, 255, 255)] self.a = True self.n1 = 0 self.n2 = 0 self.n3 = 0 self.n4 = 0 self.n5 = 0 self.n6 = 0 # Override defaults with provided data self.edit(data) def edit(self, data=None): if not data: return False for key, value in data.items(): setattr(self, key, value) return True @property def pattern(self): return self.p @pattern.setter def pattern(self, value): self.p = value @property def delay(self): return self.d @delay.setter def delay(self, value): self.d = value @property def brightness(self): return self.b @brightness.setter def brightness(self, value): self.b = value @property def colors(self): return self.c @colors.setter def colors(self, value): self.c = value @property def auto(self): return self.a @auto.setter def auto(self, value): self.a = value def to_dict(self): return { "p": self.p, "d": self.d, "b": self.b, "c": self.c, "a": self.a, "n1": self.n1, "n2": self.n2, "n3": self.n3, "n4": self.n4, "n5": self.n5, "n6": self.n6, }