from jp_doodle import dual_canvas
from IPython.display import display
from jp_proxy_widget import notebook_test_helpers
from canvas_test_helpers import ColorTester
validators = notebook_test_helpers.ValidationSuite()
c = dual_canvas.DualCanvasWidget(width=220, height=220)
display(c)
def two_rects(c):
r1 = c.rect(x=0, y=0, w=100, h=100, color="rgb(123,34,222)", events=False, name=True)
r2 = c.rect(x=0, y=0, w=100, h=100, color="rgb(234,222,111)", events=True)
return (r1, r2)
(cr1, cr2) = two_rects(c)
cr2.change(color="rgb(111,222,222)")
c.fit()
c_tester = ColorTester(c, "change", height=220)
c_tester.add_check(100, 100, [111,222,222, 255])
validators.add_validation(c, c_tester.validate)
#c_tester.validate()
f = dual_canvas.DualCanvasWidget(width=220, height=220)
display(f)
(fr1, fr2) = two_rects(f)
fr2.forget()
f.fit()
f_tester = ColorTester(f, "forget", height=220)
f_tester.add_check(100, 100, [123,34,222, 255])
validators.add_validation(f, f_tester.validate)
#f_tester.validate()
v = dual_canvas.DualCanvasWidget(width=220, height=220)
display(v)
(vr1, vr2) = two_rects(v)
vr2.visible(False)
v.fit()
v_tester = ColorTester(v, "visible", height=220)
v_tester.add_check(100, 100, [123,34,222, 255])
validators.add_validation(v, v_tester.validate)
#v_tester.validate()
t = dual_canvas.DualCanvasWidget(width=220, height=220)
display(t)
(tr1, tr2) = two_rects(t)
tr2.transition(color="rgb(111,222,222)", seconds_duration=0.01)
t.fit()
t_tester = ColorTester(t, "transition", height=220)
t_tester.add_check(100, 100, [111,222,222, 255])
validators.add_validation(t, t_tester.validate)
#t_tester.position_to_color_found = {}
#t_tester.validate()
#t.js_debug()
#t.element.request_redraw()
n = dual_canvas.DualCanvasWidget(width=220, height=220)
display(n.debugging_display())
(nr1, nr2) = two_rects(n)
n_info = []
def n_callback(event):
print("called back " + repr(event.get("canvas_name")))
assert event["canvas_name"] == nr2.name, (event["canvas_name"], nr2.name)
n_info.append(event)
nr2.change(color="rgb(111,222,222)")
nr2.on("click", n_callback)
n.fit()
n_tester = ColorTester(n, "on event", height=220)
n_tester.spoof_event("click", 100, 100)
n_tester.add_check(100, 100, [111,222,222, 255])
validators.add_validation(n, n_tester.validate)
#n_tester.validate()
ff = dual_canvas.DualCanvasWidget(width=220, height=220)
display(ff.debugging_display())
(ffr1, ffr2) = two_rects(ff)
ff_info = []
def ff_callback(event):
print("called back " + repr(event.get("canvas_name")))
assert event["canvas_name"] == ffr2.name
ff_info.append(event)
ffr2.change(color="rgb(111,222,222)")
ffr2.on("click", n_callback)
ffr2.off("click")
ff.fit()
ff_tester = ColorTester(ff, "off event", height=220)
ff_tester.spoof_event("click", 100, 100)
ff_tester.add_check(100, 100, [234,222,111, 255])
validators.add_validation(ff, ff_tester.validate)
#ff_tester.validate()
do_validations = True
if do_validations:
delay_ms = 5000
display(validators.run_all_in_widget(delay_ms=delay_ms))