File size: 2,659 Bytes
f51c1fd
 
 
 
 
 
 
 
 
 
 
 
 
1bf4da3
f51c1fd
aa6222e
78f883e
f51c1fd
 
 
78f883e
1bf4da3
78f883e
 
 
 
 
 
 
 
 
 
 
aa6222e
 
78f883e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aa6222e
78f883e
1bf4da3
f51c1fd
1bf4da3
f51c1fd
 
 
 
 
 
 
 
 
 
1bf4da3
f51c1fd
 
1bf4da3
f51c1fd
1bf4da3
78f883e
 
 
 
 
1bf4da3
f51c1fd
 
 
 
 
263a882
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
"""
File: app.py
Authors: Elena Ryumina and Dmitry Ryumin
Description: OCEANAI App for gradio.
License: MIT License
"""

import gradio as gr

# Importing necessary components for the Gradio app
from app.config import CONFIG_NAME, config_data, load_tab_creators
from app.event_handlers.event_handlers import setup_app_event_handlers
from app import tabs
from app.components import dropdown_create_ui

gr.set_static_paths(paths=[config_data.StaticPaths_IMAGES])


def create_gradio_app() -> gr.Blocks:
    with gr.Blocks(css=config_data.AppSettings_CSS_PATH) as gradio_app:
        with gr.Column(
            visible=True,
            render=True,
            variant="default",
            elem_classes="languages-container_wrapper",
        ):
            with gr.Row(
                visible=True,
                render=True,
                variant="default",
                elem_classes="languages-container",
            ) as languages_row:
                country_flags = gr.Image(
                    value=config_data.StaticPaths_IMAGES
                    + config_data.Images_LANGUAGES[0],
                    container=False,
                    interactive=False,
                    show_label=False,
                    visible=True,
                    show_download_button=False,
                    elem_classes="country_flags",
                )

                languages = dropdown_create_ui(
                    label=None,
                    info=None,
                    choices=config_data.Settings_LANGUAGES_EN,
                    value=config_data.Settings_LANGUAGES_EN[0],
                    visible=True,
                    show_label=False,
                    elem_classes="dropdown-language-container",
                    interactive=True,
                )

        tab_results = {}
        ts = []

        available_functions = {
            attr: getattr(tabs, attr)
            for attr in dir(tabs)
            if callable(getattr(tabs, attr)) and attr.endswith("_tab")
        }

        tab_creators = load_tab_creators(CONFIG_NAME, available_functions)

        for tab_name, create_tab_function in tab_creators.items():
            with gr.Tab(tab_name) as tab:
                app_instance = create_tab_function()
                tab_results[tab_name] = app_instance
                ts.append(tab)

        setup_app_event_handlers(
            *tab_results[list(tab_results.keys())[0]],
            *ts,
            languages_row,
            country_flags,
            languages
        )

    return gradio_app


if __name__ == "__main__":
    create_gradio_app().queue(api_open=False).launch(share=False)