| | |
| |
|
| | import os |
| | import gradio as gr |
| | import args_manager |
| |
|
| | from modules.localization import localization_js |
| |
|
| |
|
| | GradioTemplateResponseOriginal = gr.routes.templates.TemplateResponse |
| |
|
| | modules_path = os.path.dirname(os.path.realpath(__file__)) |
| | script_path = os.path.dirname(modules_path) |
| |
|
| |
|
| | 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_path = webpath('javascript/script.js') |
| | context_menus_js_path = webpath('javascript/contextMenus.js') |
| | localization_js_path = webpath('javascript/localization.js') |
| | zoom_js_path = webpath('javascript/zoom.js') |
| | edit_attention_js_path = webpath('javascript/edit-attention.js') |
| | viewer_js_path = webpath('javascript/viewer.js') |
| | image_viewer_js_path = webpath('javascript/imageviewer.js') |
| | head = f'<script type="text/javascript">{localization_js(args_manager.args.language)}</script>\n' |
| | head += f'<script type="text/javascript" src="{script_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{context_menus_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{localization_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{zoom_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{edit_attention_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{viewer_js_path}"></script>\n' |
| | head += f'<script type="text/javascript" src="{image_viewer_js_path}"></script>\n' |
| |
|
| | if args_manager.args.theme: |
| | head += f'<script type="text/javascript">set_theme(\"{args_manager.args.theme}\");</script>\n' |
| |
|
| | return head |
| |
|
| |
|
| | def css_html(): |
| | style_css_path = webpath('css/style.css') |
| | head = f'<link rel="stylesheet" property="stylesheet" href="{style_css_path}">' |
| | return head |
| |
|
| |
|
| | def reload_javascript(): |
| | js = javascript_html() |
| | css = css_html() |
| |
|
| | def template_response(*args, **kwargs): |
| | res = GradioTemplateResponseOriginal(*args, **kwargs) |
| | 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() |
| | return res |
| |
|
| | gr.routes.templates.TemplateResponse = template_response |
| |
|