ui_components.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import gradio as gr
  2. class FormComponent:
  3. def get_expected_parent(self):
  4. return gr.components.Form
  5. gr.Dropdown.get_expected_parent = FormComponent.get_expected_parent
  6. class ToolButton(FormComponent, gr.Button):
  7. """Small button with single emoji as text, fits inside gradio forms"""
  8. def __init__(self, *args, **kwargs):
  9. classes = kwargs.pop("elem_classes", [])
  10. super().__init__(*args, elem_classes=["tool", *classes], **kwargs)
  11. def get_block_name(self):
  12. return "button"
  13. class FormRow(FormComponent, gr.Row):
  14. """Same as gr.Row but fits inside gradio forms"""
  15. def get_block_name(self):
  16. return "row"
  17. class FormColumn(FormComponent, gr.Column):
  18. """Same as gr.Column but fits inside gradio forms"""
  19. def get_block_name(self):
  20. return "column"
  21. class FormGroup(FormComponent, gr.Group):
  22. """Same as gr.Row but fits inside gradio forms"""
  23. def get_block_name(self):
  24. return "group"
  25. class FormHTML(FormComponent, gr.HTML):
  26. """Same as gr.HTML but fits inside gradio forms"""
  27. def get_block_name(self):
  28. return "html"
  29. class FormColorPicker(FormComponent, gr.ColorPicker):
  30. """Same as gr.ColorPicker but fits inside gradio forms"""
  31. def get_block_name(self):
  32. return "colorpicker"
  33. class DropdownMulti(FormComponent, gr.Dropdown):
  34. """Same as gr.Dropdown but always multiselect"""
  35. def __init__(self, **kwargs):
  36. super().__init__(multiselect=True, **kwargs)
  37. def get_block_name(self):
  38. return "dropdown"