""" File: languages.py Author: Elena Ryumina and Dmitry Ryumin Description: Selected language event handlers for Gradio app. License: MIT License """ import gradio as gr from pathlib import Path # Importing necessary components for the Gradio app from app.description import DESCRIPTIONS from app.description_steps import STEP_1, STEP_2 from app.config import config_data from app.components import ( files_create_ui, video_create_ui, dropdown_create_ui, button, html_message, dataframe, radio_create_ui, ) from app.utils import get_language_settings from app.practical_tasks import supported_practical_tasks def event_handler_languages( languages, files, video, type_modes, pt_scores, csv_pt_scores, practical_tasks, practical_subtasks, ): lang_id, choices = get_language_settings(languages) lang_id_inverse = {0: 1, 1: 0}.get(lang_id, None) if type_modes == config_data.Settings_TYPE_MODES[0]: files_ui = files_create_ui( label="{} ({})".format( config_data.OtherMessages_VIDEO_FILES[ config_data.AppSettings_DEFAULT_LANG_ID ], ", ".join(config_data.Settings_SUPPORTED_VIDEO_EXT), ), file_types=[f".{ext}" for ext in config_data.Settings_SUPPORTED_VIDEO_EXT], ) webcam = gr.Video(interactive=False, visible=False) switching_modes = button( config_data.OtherMessages_SWITCHEHG_MODES_ONLINE[lang_id], True, 1, "./images/webcam.ico", True, "switching_modes", ) examples = button( config_data.OtherMessages_EXAMPLES_APP[lang_id], True, 1, "./images/examples.ico", True, "examples_oceanai", ) elif type_modes == config_data.Settings_TYPE_MODES[1]: files_ui = files_create_ui( label="{} ({})".format( config_data.OtherMessages_VIDEO_FILES[lang_id], ", ".join(config_data.Settings_SUPPORTED_VIDEO_EXT), ), file_types=[f".{ext}" for ext in config_data.Settings_SUPPORTED_VIDEO_EXT], interactive=False, visible=False, ) webcam = gr.Video(interactive=True, visible=True) switching_modes = button( config_data.OtherMessages_SWITCHEHG_MODES_OFFLINE[lang_id], True, 1, "./images/videos.ico", True, "switching_modes", ) examples = button( config_data.OtherMessages_EXAMPLE_APP[lang_id], True, 1, "./images/examples.ico", True, "examples_oceanai", ) if not video: video = video_create_ui(label=config_data.OtherMessages_VIDEO_PLAYER[lang_id]) noti_videos = html_message( ( config_data.InformationMessages_NOTI_VIDEOS[lang_id].split("(")[0] if lang_id == 0 else config_data.InformationMessages_NOTI_VIDEOS[lang_id] ), False, True, "notifications", ) else: video = video_create_ui( value=video, label=config_data.OtherMessages_VIDEO_PLAYER[lang_id], file_name=Path(video).name, ) noti_videos = html_message( config_data.OtherMessages_NOTI_CALCULATE[lang_id], True, False if pt_scores.shape[1] >= 7 else True, "notifications", ) csv_pt_scores = files_create_ui( csv_pt_scores if pt_scores.shape[1] >= 7 else None, "single", [".csv"], config_data.OtherMessages_EXPORT_PT_SCORES[lang_id], True, False, True if pt_scores.shape[1] >= 7 else False, "csv-container", ) step_2 = gr.HTML( value=STEP_2[lang_id], visible=True if pt_scores.shape[1] >= 7 else False ) practical_tasks_column = gr.Column( visible=True if pt_scores.shape[1] >= 7 else False ) if pt_scores.shape[1] >= 7: pt_scores = dataframe( headers=(config_data.Dataframes_PT_SCORES[lang_id]), values=pt_scores.values.tolist(), visible=True, ) else: pt_scores = dataframe(visible=False) current_lang_tasks = list(map(str, supported_practical_tasks[lang_id].keys())) inverse_lang_tasks = list( map(str, supported_practical_tasks[lang_id_inverse].keys()) ) if practical_tasks in inverse_lang_tasks: practical_task = current_lang_tasks[inverse_lang_tasks.index(practical_tasks)] else: practical_task = next(iter(supported_practical_tasks[lang_id])) # print(current_lang_tasks, "\n") # print(inverse_lang_tasks, "\n") # print(practical_tasks, "\n") # print(supported_practical_tasks, "\n") # print(practical_subtasks, "\n") return ( gr.Markdown(value=DESCRIPTIONS[lang_id]), gr.HTML(value=STEP_1[lang_id]), gr.Image( value=config_data.StaticPaths_IMAGES + config_data.Images_LANGUAGES[lang_id] ), dropdown_create_ui( label=None, info=None, choices=choices, value=choices[lang_id], visible=True, show_label=False, elem_classes="dropdown-language-container", ), gr.Tab(config_data.Labels_APP_LABEL[lang_id]), gr.Tab(config_data.Labels_ABOUT_APP_LABEL[lang_id]), gr.Tab(config_data.Labels_ABOUT_AUTHORS_LABEL[lang_id]), gr.Tab(config_data.Labels_REQUIREMENTS_LABEL[lang_id]), files_ui, webcam, switching_modes, video, examples, button( config_data.OtherMessages_CALCULATE_PT_SCORES[lang_id], True if files else False, 3, "./images/calculate_pt_scores.ico", True, "calculate_oceanai", ), button( config_data.OtherMessages_CLEAR_APP[lang_id], True if files else False, 1, "./images/clear.ico", True, "clear_oceanai", ), noti_videos, pt_scores, csv_pt_scores, step_2, practical_tasks_column, radio_create_ui( practical_task, config_data.Labels_PRACTICAL_TASKS_LABEL[lang_id], current_lang_tasks, config_data.InformationMessages_PRACTICAL_TASKS_INFO[lang_id], True, True, ), radio_create_ui( supported_practical_tasks[lang_id][practical_task][0], config_data.Labels_PRACTICAL_SUBTASKS_LABEL[lang_id], supported_practical_tasks[lang_id][practical_task], config_data.InformationMessages_PRACTICAL_SUBTASKS_INFO[lang_id], True, True, ), )