| 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 |
| |
| ] |
|
|