Merge pull request #9031 from AUTOMATIC1111/serve-css-as-files
serve css as independent files
This commit is contained in:
commit
e49c479819
1 changed files with 41 additions and 33 deletions
|
@ -70,17 +70,6 @@ def gr_show(visible=True):
|
||||||
sample_img2img = "assets/stable-samples/img2img/sketch-mountains-input.jpg"
|
sample_img2img = "assets/stable-samples/img2img/sketch-mountains-input.jpg"
|
||||||
sample_img2img = sample_img2img if os.path.exists(sample_img2img) else None
|
sample_img2img = sample_img2img if os.path.exists(sample_img2img) else None
|
||||||
|
|
||||||
css_hide_progressbar = """
|
|
||||||
.wrap .m-12 svg { display:none!important; }
|
|
||||||
.wrap .m-12::before { content:"Loading..." }
|
|
||||||
.wrap .z-20 svg { display:none!important; }
|
|
||||||
.wrap .z-20::before { content:"Loading..." }
|
|
||||||
.wrap.cover-bg .z-20::before { content:"" }
|
|
||||||
.progress-bar { display:none!important; }
|
|
||||||
.meta-text { display:none!important; }
|
|
||||||
.meta-text-center { display:none!important; }
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Using constants for these since the variation selector isn't visible.
|
# Using constants for these since the variation selector isn't visible.
|
||||||
# Important that they exactly match script.js for tooltip to work.
|
# Important that they exactly match script.js for tooltip to work.
|
||||||
random_symbol = '\U0001f3b2\ufe0f' # 🎲️
|
random_symbol = '\U0001f3b2\ufe0f' # 🎲️
|
||||||
|
@ -1566,22 +1555,6 @@ def create_ui():
|
||||||
(train_interface, "Train", "ti"),
|
(train_interface, "Train", "ti"),
|
||||||
]
|
]
|
||||||
|
|
||||||
css = ""
|
|
||||||
|
|
||||||
for cssfile in modules.scripts.list_files_with_name("style.css"):
|
|
||||||
if not os.path.isfile(cssfile):
|
|
||||||
continue
|
|
||||||
|
|
||||||
with open(cssfile, "r", encoding="utf8") as file:
|
|
||||||
css += file.read() + "\n"
|
|
||||||
|
|
||||||
if os.path.exists(os.path.join(data_path, "user.css")):
|
|
||||||
with open(os.path.join(data_path, "user.css"), "r", encoding="utf8") as file:
|
|
||||||
css += file.read() + "\n"
|
|
||||||
|
|
||||||
if not cmd_opts.no_progressbar_hiding:
|
|
||||||
css += css_hide_progressbar
|
|
||||||
|
|
||||||
interfaces += script_callbacks.ui_tabs_callback()
|
interfaces += script_callbacks.ui_tabs_callback()
|
||||||
interfaces += [(settings_interface, "Settings", "settings")]
|
interfaces += [(settings_interface, "Settings", "settings")]
|
||||||
|
|
||||||
|
@ -1592,7 +1565,7 @@ def create_ui():
|
||||||
for _interface, label, _ifid in interfaces:
|
for _interface, label, _ifid in interfaces:
|
||||||
shared.tab_names.append(label)
|
shared.tab_names.append(label)
|
||||||
|
|
||||||
with gr.Blocks(css=css, analytics_enabled=False, title="Stable Diffusion") as demo:
|
with gr.Blocks(analytics_enabled=False, title="Stable Diffusion") as demo:
|
||||||
with gr.Row(elem_id="quicksettings", variant="compact"):
|
with gr.Row(elem_id="quicksettings", variant="compact"):
|
||||||
for i, k, item in sorted(quicksettings_list, key=lambda x: quicksettings_names.get(x[1], x[0])):
|
for i, k, item in sorted(quicksettings_list, key=lambda x: quicksettings_names.get(x[1], x[0])):
|
||||||
component = create_setting_component(k, is_quicksettings=True)
|
component = create_setting_component(k, is_quicksettings=True)
|
||||||
|
@ -1777,25 +1750,60 @@ def create_ui():
|
||||||
return demo
|
return demo
|
||||||
|
|
||||||
|
|
||||||
def reload_javascript():
|
def webpath(fn):
|
||||||
|
if fn.startswith(script_path):
|
||||||
|
web_path = os.path.relpath(fn, script_path).replace('\\', '/')
|
||||||
|
else:
|
||||||
|
web_path = os.path.abspath(fn)
|
||||||
|
|
||||||
|
return f'file={web_path}?{os.path.getmtime(fn)}'
|
||||||
|
|
||||||
|
|
||||||
|
def javascript_html():
|
||||||
script_js = os.path.join(script_path, "script.js")
|
script_js = os.path.join(script_path, "script.js")
|
||||||
head = f'<script type="text/javascript" src="file={os.path.abspath(script_js)}?{os.path.getmtime(script_js)}"></script>\n'
|
head = f'<script type="text/javascript" src="{webpath(script_js)}"></script>\n'
|
||||||
|
|
||||||
inline = f"{localization.localization_js(shared.opts.localization)};"
|
inline = f"{localization.localization_js(shared.opts.localization)};"
|
||||||
if cmd_opts.theme is not None:
|
if cmd_opts.theme is not None:
|
||||||
inline += f"set_theme('{cmd_opts.theme}');"
|
inline += f"set_theme('{cmd_opts.theme}');"
|
||||||
|
|
||||||
for script in modules.scripts.list_scripts("javascript", ".js"):
|
for script in modules.scripts.list_scripts("javascript", ".js"):
|
||||||
head += f'<script type="text/javascript" src="file={script.path}?{os.path.getmtime(script.path)}"></script>\n'
|
head += f'<script type="text/javascript" src="{webpath(script.path)}"></script>\n'
|
||||||
|
|
||||||
for script in modules.scripts.list_scripts("javascript", ".mjs"):
|
for script in modules.scripts.list_scripts("javascript", ".mjs"):
|
||||||
head += f'<script type="module" src="file={script.path}?{os.path.getmtime(script.path)}"></script>\n'
|
head += f'<script type="module" src="{webpath(script.path)}"></script>\n'
|
||||||
|
|
||||||
head += f'<script type="text/javascript">{inline}</script>\n'
|
head += f'<script type="text/javascript">{inline}</script>\n'
|
||||||
|
|
||||||
|
return head
|
||||||
|
|
||||||
|
|
||||||
|
def css_html():
|
||||||
|
head = ""
|
||||||
|
|
||||||
|
def stylesheet(fn):
|
||||||
|
return f'<link rel="stylesheet" property="stylesheet" href="{webpath(fn)}">'
|
||||||
|
|
||||||
|
for cssfile in modules.scripts.list_files_with_name("style.css"):
|
||||||
|
if not os.path.isfile(cssfile):
|
||||||
|
continue
|
||||||
|
|
||||||
|
head += stylesheet(cssfile)
|
||||||
|
|
||||||
|
if os.path.exists(os.path.join(data_path, "user.css")):
|
||||||
|
head += stylesheet(os.path.join(data_path, "user.css"))
|
||||||
|
|
||||||
|
return head
|
||||||
|
|
||||||
|
|
||||||
|
def reload_javascript():
|
||||||
|
js = javascript_html()
|
||||||
|
css = css_html()
|
||||||
|
|
||||||
def template_response(*args, **kwargs):
|
def template_response(*args, **kwargs):
|
||||||
res = shared.GradioTemplateResponseOriginal(*args, **kwargs)
|
res = shared.GradioTemplateResponseOriginal(*args, **kwargs)
|
||||||
res.body = res.body.replace(b'</head>', f'{head}</head>'.encode("utf8"))
|
res.body = res.body.replace(b'</head>', f'{js}</head>'.encode("utf8"))
|
||||||
|
res.body = res.body.replace(b'</body>', f'{css}</body>'.encode("utf8"))
|
||||||
res.init_headers()
|
res.init_headers()
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue