1234567891011121314151617181920212223242526272829303132333435363738 |
- import gradio as gr
- from typing import List
- class ModalInterface(gr.Interface):
- modal_id_counter = 0
- def __init__(
- self,
- html_content: str,
- open_button_text: str,
- open_button_classes: List[str] = [],
- open_button_extra_attrs: str = ''
- ):
- self.html_content = html_content
- self.open_button_text = open_button_text
- self.open_button_classes = open_button_classes
- self.open_button_extra_attrs = open_button_extra_attrs
- self.modal_id = ModalInterface.modal_id_counter
- ModalInterface.modal_id_counter += 1
- def __call__(self):
- return self.create_modal()
- def create_modal(self, visible=True):
- html_code = f"""
- <div id="cnet-modal-{self.modal_id}" class="cnet-modal">
- <span class="cnet-modal-close">×</span>
- <div class="cnet-modal-content">
- {self.html_content}
- </div>
- </div>
- <button id="cnet-modal-open-{self.modal_id}"
- class="cnet-modal-open {' '.join(self.open_button_classes)}"
- {self.open_button_extra_attrs}
- >{self.open_button_text}</button>
- """
- return gr.HTML(value=html_code, visible=visible)
|