File size: 3,810 Bytes
9df1fd8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
"""
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,
)
from app.utils import get_language_settings


def event_handler_languages(languages, files, video, pt_scores, csv_pt_scores):
    lang_id, choices = get_language_settings(languages)

    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], False
        )
    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,
        )

    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
    )

    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)

    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_create_ui(
            value=files,
            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],
        ),
        video,
        button(
            config_data.OtherMessages_EXAMPLES_APP[lang_id],
            True,
            1,
            "./images/examples.ico",
            True,
            "examples_oceanai",
        ),
        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,
    )