Spaces:
Running
Running
""" | |
File: components.py | |
Author: Elena Ryumina and Dmitry Ryumin | |
Description: Utility functions for creating Gradio components. | |
License: MIT License | |
""" | |
import gradio as gr | |
from typing import Union, List, Callable, Optional, Literal | |
# Importing necessary components for the Gradio app | |
from app.config import config_data | |
def html_message( | |
message: str = "", error: bool = True, visible: bool = True | |
) -> gr.HTML: | |
css_class = "noti_err" if not error else "noti_true" | |
return gr.HTML(value=f"<h3 class='{css_class}'>{message}</h3>", visible=visible) | |
def files_create_ui( | |
value: Union[str, List[str], Callable, None] = None, | |
file_count: str = "multiple", | |
file_types: List = ["video"], | |
label: str = config_data.OtherMessages_VIDEO_FILES[ | |
config_data.AppSettings_DEFAULT_LANG_ID | |
], | |
show_label: bool = True, | |
interactive: bool = True, | |
visible: bool = True, | |
elem_classes: Optional[str] = "files-container", | |
) -> gr.File: | |
return gr.File( | |
value=value, | |
file_count=file_count, | |
file_types=file_types, | |
label=label, | |
show_label=show_label, | |
interactive=interactive, | |
visible=visible, | |
elem_classes=elem_classes, | |
) | |
def video_create_ui( | |
value: Optional[str] = None, | |
label: str = config_data.OtherMessages_VIDEO_PLAYER[ | |
config_data.AppSettings_DEFAULT_LANG_ID | |
], | |
file_name: Optional[str] = None, | |
show_label: bool = True, | |
interactive: bool = False, | |
visible: bool = True, | |
elem_classes: Optional[str] = "video-container", | |
) -> gr.Video: | |
if file_name is not None: | |
label += f" ({file_name})" | |
return gr.Video( | |
value=value, | |
label=label, | |
show_label=show_label, | |
interactive=interactive, | |
visible=visible, | |
elem_classes=elem_classes, | |
) | |
def dataframe( | |
headers: Optional[List] = None, | |
values: Optional[List] = None, | |
height: int = 500, | |
wrap: bool = True, | |
visible: bool = True, | |
interactive: bool = False, | |
elem_classes: Optional[str] = "dataframe", | |
) -> gr.Dataframe: | |
if headers is None or values is None: | |
datatype = "str" | |
else: | |
datatype = ["markdown"] * len(headers) | |
return gr.Dataframe( | |
value=values, | |
headers=headers, | |
datatype=datatype, | |
max_height=height, | |
wrap=wrap, | |
visible=visible, | |
interactive=interactive, | |
elem_classes=elem_classes, | |
) | |
def button( | |
value: str = "", | |
interactive: bool = True, | |
scale: int = 3, | |
icon: Optional[str] = None, | |
visible: bool = True, | |
elem_classes: Optional[str] = None, | |
) -> gr.Button: | |
return gr.Button( | |
value=value, | |
interactive=interactive, | |
scale=scale, | |
icon=icon, | |
visible=visible, | |
elem_classes=elem_classes, | |
) | |
def radio_create_ui( | |
value: Union[str, int, float, Callable, None], | |
label: str, | |
choices: Union[List, None], | |
info: str, | |
interactive: bool, | |
visible: bool, | |
): | |
return gr.Radio( | |
value=value, | |
label=label, | |
choices=choices, | |
info=info, | |
show_label=True, | |
container=True, | |
interactive=interactive, | |
visible=visible, | |
) | |
def number_create_ui( | |
value: float = 0.5, | |
minimum: float = 0.0, | |
maximum: float = 1.0, | |
step: float = 0.01, | |
label: Optional[str] = None, | |
info: Optional[str] = None, | |
show_label: bool = True, | |
interactive: bool = True, | |
visible: bool = False, | |
render: bool = True, | |
elem_classes: Optional[str] = "number-container", | |
): | |
return gr.Number( | |
value=value, | |
minimum=minimum, | |
maximum=maximum, | |
step=step, | |
label=label, | |
info=info, | |
show_label=show_label, | |
interactive=interactive, | |
visible=visible, | |
render=render, | |
elem_classes=elem_classes, | |
) | |
def dropdown_create_ui( | |
label: Optional[str] = None, | |
info: Optional[str] = None, | |
choices: Optional[List[str]] = None, | |
value: Optional[List[str]] = None, | |
multiselect: bool = False, | |
show_label: bool = True, | |
interactive: bool = True, | |
visible: bool = True, | |
render: bool = True, | |
elem_classes: Optional[str] = None, | |
) -> gr.Dropdown: | |
return gr.Dropdown( | |
choices=choices, | |
value=value, | |
multiselect=multiselect, | |
label=label, | |
info=info, | |
show_label=show_label, | |
interactive=interactive, | |
visible=visible, | |
render=render, | |
elem_classes=elem_classes, | |
) | |
def textbox_create_ui( | |
value: Optional[str] = None, | |
type: Literal["text", "password", "email"] = "text", | |
label: Optional[str] = None, | |
placeholder: Optional[str] = None, | |
info: Optional[str] = None, | |
max_lines: int = 1, | |
show_label: bool = True, | |
interactive: bool = True, | |
visible: bool = True, | |
show_copy_button: bool = True, | |
scale: int = 1, | |
container: bool = False, | |
): | |
return gr.Textbox( | |
value=value, | |
type=type, | |
label=label, | |
placeholder=placeholder, | |
info=info, | |
max_lines=max_lines, | |
show_label=show_label, | |
interactive=interactive, | |
visible=visible, | |
show_copy_button=show_copy_button, | |
scale=scale, | |
container=container, | |
) | |