import plot
#from matmod6 import volume_frac
import volume_frac
import grain_size
import matplotlib.pyplot as plt
import ipywidgets as wid
from IPython import display


def main(case_1 = True, case_2 = True, case_3 = True, r = 0.1):
    fig, subs = plt.subplots(1,2, figsize=[25,10])

    ############################
    #plotter s-kurver i subfig 0
    plt.sca(subs[0])
    if case_1 == True:
        plot.plot_S_curve(func = volume_frac.Johnson_Mehl, r = 0, label = "Johnson Mehl case")

        grain_size.grain_size_Johnson_Mehl()

    if case_2 == True:
        plot.plot_S_curve(func=volume_frac.site_saturation, r = 0, label='Site saturation')

        grain_size.grain_size_site_saturation()

    if case_3 == True:
        plot.plot_S_curve(func=volume_frac.variable_growth_rate, r = r, label='Variable growth rate')

        grain_size.grain_size_variable_growth_rate()

    plt.legend()

    ###########################
    #plotter avrami-plots i subfig 1
    plt.sca(subs[1])
    if case_1 == True:
        plot.plot_avrami(func = volume_frac.Johnson_Mehl, label = "Johnson Mehl case", r = 0)

    if case_2 == True:
        plot.plot_avrami(func = volume_frac.site_saturation, label = 'Site saturation', r = 0)

    if case_3 == True:
        plot.plot_avrami(func = volume_frac.variable_growth_rate, label = 'Variable growth rate', r = r)

    plt.legend()
    plt.show()

def run():
    case_1 = wid.Checkbox(description="Johnson Mehl case", value=False)
    case_2 = wid.Checkbox(description="Site Saturation", value=False)
    case_3 = wid.Checkbox(description="Variable Growth rate", value=False)
    r = wid.FloatSlider(min=0.001, max=0.6, step=0.001, continuous_update=False)

    controls = wid.HBox([case_1, case_2, case_3, r])
    output = wid.interactive(main, case_1 = case_1, case_2 = case_2, case_3 = case_3, r = r)
    plots = output.children[-1]

    display.display(wid.VBox([controls,plots]))

