from __future__ import print_function

from bokeh.browserlib import view
from bokeh.document import Document
from bokeh.session import Session

from bokeh.models import (
    Plot, ColumnDataSource, DataRange1d, FactorRange,
    LinearAxis, CategoricalAxis, Grid, Legend,
    SingleIntervalTicker
)
from bokeh.models.widgets import (
    VBox, HBox,
    Paragraph, Icon,
    Button, Toggle, Dropdown,
    CheckboxGroup, RadioGroup,
    CheckboxButtonGroup, RadioButtonGroup,
)
from bokeh.plotting import *

document = Document()
session = Session()
session.use_doc('buttons_server')
session.load_document(document)


source = ColumnDataSource(data=dict(x=[], y=[]))

def checkbox_group_handler(active):

    sources = [source1,source2,source3]

    for x in active:
        
        print (sources[x].data)
        plot.line("x", "y", source=sources[x],line_color="blue")

    session.store_document(document)
    
checkbox_group = CheckboxGroup(labels=["Line 1", "Line 2", "Line 3"], active=[])
checkbox_group.on_click(checkbox_group_handler)


x = [0, 1, 2, 3, 4, 5,  6,  7, 8,   9, 10]
y = [0, 8, 2, 4, 6, 9, 15, 18, 19, 25, 28]
z = [c+1 for c in y]
a = [c+2 for c in y]
source1 = ColumnDataSource(data=dict(x=x, y=y))
source2 = ColumnDataSource(data=dict(x=x, y=z))
source3 = ColumnDataSource(data=dict(x=x, y=a))

x_min = 0
x_max = 10
y_min = 0
y_max = 35


plot = figure(x_range=[x_min, x_max],y_range=[y_min, y_max],outline_line_color="green",title="Check-Box Chart")
session.load_document(document)

hbox = HBox(children=[plot,  checkbox_group])

document.add(hbox)
session.store_document(document)

if __name__ == "__main__":
    link = session.object_link(document.context)
    print("Please visit %s to see the plots" % link)
    view(link)
    print("\npress ctrl-C to exit")
    session.poll_document(document)