diff --git a/tools/dumbPaintTool/app/canvaslayer.py b/tools/dumbPaintTool/app/canvaslayer.py index 9a786561..f0670be0 100644 --- a/tools/dumbPaintTool/app/canvaslayer.py +++ b/tools/dumbPaintTool/app/canvaslayer.py @@ -79,6 +79,16 @@ class CanvasLayer(): self._colors = [row.copy() for row in cl._colors] self.changed.emit() + def __eq__(self, value: object) -> bool: + return ( + issubclass(type(value),CanvasLayer) and + self._pos == value._pos and + self._size == value._size and + self._offset == value._offset and + self._visible == value._visible and + all(a==b for a,b in zip(self._data, value._data)) and + all(a==b for a,b in zip(self._colors,value._colors)) ) + def update(self): self.changed.emit() diff --git a/tools/dumbPaintTool/app/glbls.py b/tools/dumbPaintTool/app/glbls.py index fad48f2b..da015496 100644 --- a/tools/dumbPaintTool/app/glbls.py +++ b/tools/dumbPaintTool/app/glbls.py @@ -55,14 +55,9 @@ class Snapshot(): cl.restore(clone) def __eq__(self, value: object) -> bool: - if self._layer != value._layer: - return False - for (a,_),(b,_) in zip(self._canvasLayers,value._canvasLayers): - if a!=b: - return False - return True - - + return ( + self._layer == value._layer and + all(a==b for a,b in self._canvasLayers)) @dataclass() class Glbls: diff --git a/tools/dumbPaintTool/app/state/layers.py b/tools/dumbPaintTool/app/state/layers.py index 53f56cf0..0a384ed1 100644 --- a/tools/dumbPaintTool/app/state/layers.py +++ b/tools/dumbPaintTool/app/state/layers.py @@ -55,6 +55,9 @@ class Layers(): self.layersOrderChanged.emit(self._layers) self.layerSelected.emit(self._selected) + def __eq__(self, value: object) -> bool: + return self._layers == value._layers + def __len__(self): return len(self._layers)