In [1]:
from pylab import *
from dolo import *

In [2]:
from IPython.html import widgets

In [77]:
def construct_interface():
    
    var_box = widgets.TextWidget(description="variables")
    shock_box = widgets.TextWidget(description="shocks")
    param_box = widgets.TextWidget(description="parameters")

    eq_text = widgets.TextareaWidget()
    calib_text = widgets.TextareaWidget()

    but_solve = widgets.ButtonWidget(description="Solve")

    page1 = widgets.ContainerWidget(children=[var_box, shock_box, param_box, eq_text, calib_text])

    order_combo = widgets.RadioButtonsWidget(values=["1","2","3"], value="1", description='Approximation order')
    horizon_combo = widgets.IntTextWidget(min=20, max=100, value=50)

    page2 = widgets.ContainerWidget(children=[order_combo, horizon_combo, but_solve])

    tabs = widgets.TabWidget(children=[page1,page2])

    ui = widgets.PopupWidget(children=[tabs])

    # what to do when button is clicked

    def solve(caller):
        model = yaml_import("rbc_dynare.yaml")
        from dolo.algos.dynare.perturbations import solve_decision_rule
        from dolo.algos.dynare.simulations import stoch_simul
        dr = solve_decision_rule(model, order=1)
        sim = stoch_simul(dr, plot=False)
        sim = stoch_simul(dr, plot=True)
        htmlwidget = widgets.HTMLWidget( value=sim._repr_html_() )
        page = widgets.ContainerWidget(children=[htmlwidget])
        tabs.children = tabs.children + (page,)
        tabs.set_title(2,"Simulations")

    but_solve.on_click(solve)

    return ui

In [78]:
ui = construct_interface()
display(ui)
ui.children[0].set_title(0,'Model')
ui.children[0].set_title(1,'Options')

In [ ]: