Skip to content

Commit b8f39ad

Browse files
committed
Improve the MultiCanvas
1 parent 87362fa commit b8f39ad

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

ipycanvas/canvas.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ class MultiCanvas(DOMWidget):
478478

479479
def __init__(self, n_canvases=3, *args, **kwargs):
480480
"""Constructor."""
481+
self.caching = kwargs.get('caching', False)
481482
size = kwargs.get('size', (700, 500))
482483

483484
super(MultiCanvas, self).__init__(*args, _canvases=[Canvas(size=size) for _ in range(n_canvases)], **kwargs)
@@ -488,10 +489,15 @@ def __getitem__(self, key):
488489
"""Access one of the Canvas instances."""
489490
return self._canvases[key]
490491

491-
@observe('size')
492-
def _on_size_change(self, change):
493-
for canvas in self._canvases:
494-
canvas.size = change.new
492+
def __setattr__(self, name, value):
493+
super(MultiCanvas, self).__setattr__(name, value)
494+
495+
if name == 'caching':
496+
for layer in self._canvases:
497+
layer.caching = value
498+
if name == 'size':
499+
for layer in self._canvases:
500+
layer.size = value
495501

496502
def on_client_ready(self, callback, remove=False):
497503
"""Register a callback that will be called when a new client is ready to receive draw commands.
@@ -503,6 +509,16 @@ def on_client_ready(self, callback, remove=False):
503509
"""
504510
self._canvases[-1]._client_ready_callbacks.register_callback(callback, remove=remove)
505511

512+
def clear(self):
513+
"""Clear the Canvas."""
514+
for layer in self._canvases:
515+
layer.clear()
516+
517+
def flush(self):
518+
"""Flush all the cached commands and clear the cache."""
519+
for layer in self._canvases:
520+
layer.flush()
521+
506522

507523
@contextmanager
508524
def hold_canvas(canvas):

0 commit comments

Comments
 (0)