OCEANAI / app /event_handlers /languages.py
DmitryRyumin's picture
Summary
fe19555
raw
history blame
7.06 kB
"""
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,
),
)