| | import os |
| | import gradio as gr |
| | import pandas as pd |
| | from config import OUTPUT_DIR |
| | from .annotation_logic import ( |
| | save_and_next, previous_image, delete_and_next, save_and_exit, |
| | get_current_image_path, get_annotation_for_image, |
| | refresh_image_list, switch_tile_csv |
| | ) |
| |
|
| |
|
| | def enable_buttons(): |
| | return [gr.Button(interactive=True)]*4 |
| |
|
| | def get_annotation_widgets(selected_tile_state): |
| | message = gr.Markdown("", visible=False) |
| | image_path_display = gr.Markdown( |
| | value=get_current_image_path() or "No image loaded", |
| | elem_id="image_path" |
| | ) |
| | progress_display = gr.Markdown(value="No images loaded", elem_id="progress_display") |
| | img = gr.Image(type="filepath", value=get_current_image_path(), label="Blob") |
| | txt = gr.Textbox(label="Transcription", elem_id="transcription_box",autofocus=True) |
| | hint = gr.Markdown("*If there are multiple street names in the image, please separate them with commas.*") |
| |
|
| | with gr.Row(): |
| | refresh_btn = gr.Button("Retrieve Images") |
| | prev_btn = gr.Button("Previous", interactive=False) |
| | next_btn = gr.Button("Save & Next", variant="primary", interactive=False) |
| | del_btn = gr.Button("Delete & Next", variant="stop", interactive=False) |
| | |
| | download_btn = gr.Button("Download Annotations", interactive=False) |
| |
|
| | with gr.Row(): |
| | download_file = gr.File(label="Download CSV", interactive=False) |
| |
|
| | |
| | refresh_btn.click( |
| | fn=refresh_image_list, |
| | inputs=[selected_tile_state], |
| | outputs=[img, txt, message, image_path_display, progress_display] |
| | ).then( |
| | fn=enable_buttons, |
| | outputs=[prev_btn,next_btn,del_btn,download_btn] |
| | ) |
| |
|
| | next_btn.click( |
| | save_and_next, |
| | inputs=txt, |
| | outputs=[img, txt, message, image_path_display, progress_display] |
| | ) |
| |
|
| | prev_btn.click( |
| | previous_image, |
| | outputs=[img, txt, message, image_path_display, progress_display] |
| | ) |
| |
|
| | del_btn.click( |
| | delete_and_next, |
| | outputs=[img, txt, message, image_path_display, progress_display] |
| | ) |
| |
|
| | |
| |
|
| | download_btn.click( |
| | |
| | fn=lambda selected_tile: switch_tile_csv(selected_tile), |
| | inputs=[selected_tile_state], |
| | outputs=[download_file] |
| | ) |
| |
|
| | return [ |
| | message, image_path_display, progress_display, img, txt, hint, |
| | refresh_btn, prev_btn, next_btn, del_btn |
| | |
| | ] |
| |
|