def test_atomic_plot_event_callbacks(): plot = Plot() for event_cls in [events.LODStart, events.LODEnd]: test_callback = EventCallback() plot.on_event(event_cls, test_callback) assert test_callback.event_name == None plot._trigger_event(event_cls(plot)) assert test_callback.event_name == event_cls.event_name
def test_pinch_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, scale=42) test_callback = EventCallback(['sx', 'sy', 'x', 'y', 'scale']) plot.on_event(events.Pinch, test_callback) assert test_callback.event_name == None plot._trigger_event(events.Pinch(plot, **payload)) assert test_callback.event_name == events.Pinch.event_name assert test_callback.payload == payload
def test_pan_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, delta_x=2, delta_y=3.2) test_callback = EventCallback(['sx', 'sy', 'x', 'y', 'delta_x', 'delta_y']) plot.on_event(events.Pan, test_callback) assert test_callback.event_name == None plot._trigger_event(events.Pan(plot, **payload)) assert test_callback.event_name == events.Pan.event_name assert test_callback.payload == payload
def test_mousewheel_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, delta=5) test_callback = EventCallback(['sx', 'sy', 'x', 'y', 'delta']) plot.on_event(events.MouseWheel, test_callback) assert test_callback.event_name == None plot._trigger_event(events.MouseWheel(plot, **payload)) assert test_callback.event_name == events.MouseWheel.event_name assert test_callback.payload == payload
def test_pinch_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, scale=42) test_callback = EventCallback(['sx','sy','x','y', 'scale']) plot.on_event(events.Pinch, test_callback) assert test_callback.event_name == None plot._trigger_event(events.Pinch(plot, **payload)) assert test_callback.event_name == events.Pinch.event_name assert test_callback.payload == payload
def test_pan_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, delta_x=2, delta_y=3.2) test_callback = EventCallback(['sx','sy','x','y', 'delta_x', 'delta_y']) plot.on_event(events.Pan, test_callback) assert test_callback.event_name == None plot._trigger_event(events.Pan(plot, **payload)) assert test_callback.event_name == events.Pan.event_name assert test_callback.payload == payload
def test_mousewheel_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100, delta=5) test_callback = EventCallback(['sx','sy','x','y', 'delta']) plot.on_event(events.MouseWheel, test_callback) assert test_callback.event_name == None plot._trigger_event(events.MouseWheel(plot, **payload)) assert test_callback.event_name == events.MouseWheel.event_name assert test_callback.payload == payload
def test_pointevent_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100) for event_cls in point_events: test_callback = EventCallback(['sx', 'sy', 'x', 'y']) plot.on_event(event_cls, test_callback) assert test_callback.event_name == None plot._trigger_event(event_cls(plot, **payload)) assert test_callback.event_name == event_cls.event_name assert test_callback.payload == payload
def test_pointevent_callbacks(): plot = Plot() payload = dict(sx=3, sy=-2, x=10, y=100) for event_cls in point_events: test_callback = EventCallback(['sx','sy','x','y']) plot.on_event(event_cls, test_callback) assert test_callback.event_name == None plot._trigger_event(event_cls(plot, **payload)) assert test_callback.event_name == event_cls.event_name assert test_callback.payload == payload
end=RADIUS_MAX, step=RADIUS_STEP, sizing_mode="scale_width", height=WIDGET_HEIGHT, show_value=False) radius_slider.on_change('value', lambda attr, old, new: set_radius(new)) power_readout = Div(sizing_mode="scale_width", height=WIDGET_HEIGHT) instructions = Div( text= '<p><strong>Click in the window to add a point to the mesh!</strong> Each point will collect current and send it along with a wire to one of its neighbors.</p><p><strong>Double click in the window to add a "sink" to the mesh.</strong> Sinks cost some power but they serve as targets for the rest of the mesh. To use the power generated by the cell, electricity must get routed to a sink. Sinks appear as triangles in the simulation; one will be placed randomly every time you generate a new mesh.</p><p>Click "Solve Grid" to have the simulation find the best grid pattern it can. The grid tends to form large trunks because thicker, taller wires are more efficient!<p/>' ) # Why callback so slow? <shakes fist at Bokeh> plot.on_event(Tap, add_point) plot.on_event(DoubleTap, lambda event: add_point(event, sink=True)) init_buttons = row(square_button, hex_button, rand_mesh_button) controls = column(power_readout, init_buttons, res_slider, radius_slider, clear_button, rand_button, step_button, solve_button, instructions, width=CONTROL_WIDTH) final_form = row(controls, plot)