import gradio as gr

def create_demo(process):
    with gr.Blocks() as demo:
        with gr.Column():
            prompt = gr.Textbox(label='Prompt')
            n_prompt = gr.Textbox(
                label='Negative Prompt',
                value=
                'low quality, ugly, disfigured, deformed'
            )

            run_button = gr.Button('Run')
        result = gr.Gallery(label='Output',
                            show_label=False,
                            elem_id='gallery').style(columns=1, rows=1, preview=True)        

        inputs = [
            prompt,
            n_prompt
        ]
        prompt.submit(
            fn=process,
            inputs=inputs,
            outputs=result
        )
        n_prompt.submit(
            fn=process,
            inputs=inputs,
            outputs=result
        )

        run_button.click(
            fn=process,
            inputs=inputs,
            outputs=result
        )
    return demo


if __name__ == '__main__':
    from model import Model
    model = Model()    
    demo = create_demo(model.process)
    demo.queue().launch()