Spaces:
Sleeping
Sleeping
| # DEV reloads require a refresh on the browser. | |
| # https://gist.github.com/brandon8863/3ee552870a066eba463d37f0b39a547a | |
| import gradio as gr | |
| import webpages.blip_image_captioning as blip_image_captioning | |
| import webpages.text_generation as text_generation | |
| import home as home | |
| def routs(): | |
| with gr.Column(): | |
| # anchor = gr.HTML("<h1>π </h1>") | |
| anchor = gr.HTML("<br/><br/><br/><br/>") | |
| # | |
| # BUTTONS FOR PAGE NAVIGATION | |
| # | |
| with gr.Column() as result: | |
| gr.Button("π Home", link="/?page=home") | |
| gr.Button("π Find out what in the photo", link="/?page=blip_image_captioning") | |
| gr.Button("π Text Generation", link="/?page=text_generation") | |
| def handePages(local_state): | |
| with gr.Column(scale=30): | |
| # | |
| # SIMPLE PAGE ROUTING HERE | |
| # | |
| if ( | |
| local_state == None | |
| ): | |
| return home.get_landing_page(local_state), local_state | |
| elif local_state == "home": | |
| return home.get(), local_state | |
| elif local_state == "blip_image_captioning": | |
| return blip_image_captioning.get(local_state), local_state | |
| elif local_state == "text_generation": | |
| return text_generation.get(local_state), local_state | |
| else: | |
| return ( | |
| home.get_not_found_page(local_state), | |
| local_state, | |
| ) | |
| # ======================================================================================================= | |
| # APP_SHELL - for multiple pages | |
| # | |
| with gr.Blocks(fill_height=True , css=".contain { display: flex !important; flex-direction: column !important; }" | |
| "#component-0, #component-3, #component-10, #component-8 { height: 100% !important; }" | |
| "#chatbot { flex-grow: 1 !important; overflow: auto !important;}" | |
| "#col { height: calc(100vh - 112px - 16px) !important; }") as demo: | |
| def init_state(request: gr.Request): | |
| # | |
| # PULL URL PARAMS HERE | |
| # | |
| page = request.query_params.get("page") | |
| print(f"** page: {page}") | |
| if ( | |
| page == None | |
| ): | |
| page = "home" | |
| # result["page"] = request.query_params.get("page") | |
| return page # this result populates "state" | |
| state = gr.State() | |
| # | |
| # POPULATE user "state" with request data | |
| # | |
| demo.load( | |
| fn=init_state, | |
| inputs=None, | |
| outputs=state, | |
| queue=True, | |
| show_progress=False, | |
| ) | |
| content = gr.HTML("...") | |
| def page_content(local_state): | |
| print(f"** local_state: {local_state}") | |
| with gr.Row(variant="panel") as result: | |
| routs() | |
| handePages(local_state) | |
| # | |
| # HACK: Would be nice to delay rendering until state is populated | |
| # | |
| def page_content_update(local_state): | |
| return gr.HTML("...",visible=False ) | |
| state.change(fn=page_content_update, inputs=state, outputs=content) | |
| demo.launch() |