Spaces:
Running
Running
File size: 2,757 Bytes
97ba84c d5ea0f1 d00dcd7 97ba84c 5015c53 97ba84c d00dcd7 97ba84c d00dcd7 97ba84c 5015c53 97ba84c d00dcd7 5015c53 97ba84c d00dcd7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import gradio as gr
from jinja2 import Environment, FileSystemLoader
_ENV = Environment(loader=FileSystemLoader("app/assets/jinja-templates"))
_IMAGE_TEMPLATE = _ENV.get_template("image.j2")
from .visualizer_functions import render_image, toggle_navigation_button, activate_left_button, activate_right_button, right_button_click, left_button_click, update_image_caption
with gr.Blocks() as visualizer:
gr.Markdown(
"π The image to the below shows where Dawsonia found text in the image."
)
with gr.Row():
# Annotated image panel
with gr.Column(scale=1):
image = gr.HTML(
label="Annotated image",
padding=False,
elem_classes="svg-image",
container=True,
min_height="40vh",
max_height="50vh",
show_label=True,
)
image_caption = gr.Markdown(elem_classes="button-group-viz")
with gr.Row(elem_classes="button-group-viz"):
left = gr.Button(
"β Previous", visible=False, interactive=False, scale=0
)
right = gr.Button("Next β", visible=False, scale=0)
collection = gr.State()
current_page_index = gr.State(0)
# Wiring of navigation buttons
left.click(left_button_click, current_page_index, current_page_index)
right.click(
right_button_click, [collection, current_page_index], current_page_index
)
# Updates on collection change:
# - update the view
# - reset the page index (always start on page 0)
# - toggle visibility of navigation buttons (don't show them for single pages)
# - update the image caption
collection.change(
render_image, inputs=[collection, current_page_index], outputs=image
)
collection.change(lambda _: 0, current_page_index, current_page_index)
collection.change(toggle_navigation_button, collection, left)
collection.change(toggle_navigation_button, collection, right)
collection.change(
update_image_caption,
inputs=[collection, current_page_index],
outputs=image_caption,
)
# Updates on page change:
# - update the view
# - activate/deactivate buttons
# - update the image caption
current_page_index.change(
render_image, inputs=[collection, current_page_index], outputs=image
)
current_page_index.change(activate_left_button, current_page_index, left)
current_page_index.change(
activate_right_button, [collection, current_page_index], right
)
current_page_index.change(
update_image_caption,
inputs=[collection, current_page_index],
outputs=image_caption,
)
|