Code source de code_beatrix.ipythonhelper.nbcanvas

"""
Drawing from a canvas


:githublink:`%|py|5`
"""

import IPython
from IPython.core.display import display_html, display_javascript, Javascript

from .path_helper import local_d3js


[docs]def display_canvas_point(html_id, width=800, heigth=400, var_name="points"): """ Adds a canvas to draw from a notebook, the code use javascript. :param height: height :param width: width :param html_id: the function adds a div section, it should be different for every canevas :param var_name: the function adds this variable to the kernel workspace :return: the list of points :githublink:`%|py|22` """ js_libs = local_d3js() # http://jsfiddle.net/yonester/9tr7w/2/ html_src = """ <div id="{0}"></div> """.format(html_id) points = [] test_d3_js = """ var r; var command0 ="__VARNAME__=[]"; var kernel = IPython.notebook.kernel; kernel.execute(command0); var vis = d3.select("#__ID__").append("svg") .attr("width", __WIDTH__) .attr("height", __HEIGHT__) .style('border', '1px solid black') .on("mousedown", mousedown) ; function mousedown() { var m = d3.mouse(this); r = vis.append("rect") .attr("class", "myrect") .attr("style", "fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,255);") .attr("x", m[0]) .attr("y", m[1]) .attr("width", 5) .attr("height", 5); var command = "__VARNAME__.append( (" + m[0] + ", -" + m[1] + ") )"; kernel.execute(command); } """ .replace("__WIDTH__", str(width)) \ .replace("__HEIGHT__", str(heigth)) \ .replace("__ID__", html_id)\ .replace("__VARNAME__", var_name) js_libs = [js_libs] display_html(IPython.core.display.HTML(data=html_src)) display_javascript(Javascript(data=test_d3_js, lib=js_libs)) return points