Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
automatic1111
GitHub Repository: automatic1111/stable-diffusion-webui
Path: blob/master/modules/gradio_extensons.py
3055 views
1
import gradio as gr
2
3
from modules import scripts, ui_tempdir, patches
4
5
6
def add_classes_to_gradio_component(comp):
7
"""
8
this adds gradio-* to the component for css styling (ie gradio-button to gr.Button), as well as some others
9
"""
10
11
comp.elem_classes = [f"gradio-{comp.get_block_name()}", *(comp.elem_classes or [])]
12
13
if getattr(comp, 'multiselect', False):
14
comp.elem_classes.append('multiselect')
15
16
17
def IOComponent_init(self, *args, **kwargs):
18
self.webui_tooltip = kwargs.pop('tooltip', None)
19
20
if scripts.scripts_current is not None:
21
scripts.scripts_current.before_component(self, **kwargs)
22
23
scripts.script_callbacks.before_component_callback(self, **kwargs)
24
25
res = original_IOComponent_init(self, *args, **kwargs)
26
27
add_classes_to_gradio_component(self)
28
29
scripts.script_callbacks.after_component_callback(self, **kwargs)
30
31
if scripts.scripts_current is not None:
32
scripts.scripts_current.after_component(self, **kwargs)
33
34
return res
35
36
37
def Block_get_config(self):
38
config = original_Block_get_config(self)
39
40
webui_tooltip = getattr(self, 'webui_tooltip', None)
41
if webui_tooltip:
42
config["webui_tooltip"] = webui_tooltip
43
44
config.pop('example_inputs', None)
45
46
return config
47
48
49
def BlockContext_init(self, *args, **kwargs):
50
if scripts.scripts_current is not None:
51
scripts.scripts_current.before_component(self, **kwargs)
52
53
scripts.script_callbacks.before_component_callback(self, **kwargs)
54
55
res = original_BlockContext_init(self, *args, **kwargs)
56
57
add_classes_to_gradio_component(self)
58
59
scripts.script_callbacks.after_component_callback(self, **kwargs)
60
61
if scripts.scripts_current is not None:
62
scripts.scripts_current.after_component(self, **kwargs)
63
64
return res
65
66
67
def Blocks_get_config_file(self, *args, **kwargs):
68
config = original_Blocks_get_config_file(self, *args, **kwargs)
69
70
for comp_config in config["components"]:
71
if "example_inputs" in comp_config:
72
comp_config["example_inputs"] = {"serialized": []}
73
74
return config
75
76
77
original_IOComponent_init = patches.patch(__name__, obj=gr.components.IOComponent, field="__init__", replacement=IOComponent_init)
78
original_Block_get_config = patches.patch(__name__, obj=gr.blocks.Block, field="get_config", replacement=Block_get_config)
79
original_BlockContext_init = patches.patch(__name__, obj=gr.blocks.BlockContext, field="__init__", replacement=BlockContext_init)
80
original_Blocks_get_config_file = patches.patch(__name__, obj=gr.blocks.Blocks, field="get_config_file", replacement=Blocks_get_config_file)
81
82
83
ui_tempdir.install_ui_tempdir_override()
84
85