import gradio as gr from modules import shared, ui, utils, localization from modules.github import clone_or_pull_repository from modules.utils import gradio def create_ui(): mu = shared.args.multi_user with gr.Tab("Session", elem_id="session-tab"): with gr.Row(): with gr.Column(): shared.gradio['reset_interface'] = gr.Button("Apply flags/extensions and restart", interactive=not mu) with gr.Row(): shared.gradio['toggle_dark_mode'] = gr.Button('Toggle 💡') shared.gradio['save_settings'] = gr.Button('Save UI defaults to settings.yaml', interactive=not mu) with gr.Row(): with gr.Column(): shared.gradio['extensions_menu'] = gr.CheckboxGroup(choices=utils.get_available_extensions(), value=shared.args.extensions, label="Available extensions", info='Note that some of these extensions may require manually installing Python requirements through the command: pip install -r extensions/extension_name/requirements.txt', elem_classes='checkboxgroup-table') with gr.Column(): shared.gradio['bool_menu'] = gr.CheckboxGroup(choices=get_boolean_arguments(), value=get_boolean_arguments(active=True), label="Boolean command-line flags", elem_classes='checkboxgroup-table') with gr.Column(): extension_name = gr.Textbox(lines=1, label='Install or update an extension', info='Enter the GitHub URL below and press Enter. For a list of extensions, see: https://github.com/oobabooga/text-generation-webui-extensions ⚠️ WARNING ⚠️ : extensions can execute arbitrary code. Make sure to inspect their source code before activating them.', interactive=not mu) with gr.Row(): shared.gradio['localization_menu'] = gr.Dropdown(choices=utils.get_available_localizations(), value=shared.settings['localization'], label='Localization', elem_classes='slim-dropdown') ui.create_refresh_button(shared.gradio['localization_menu'], lambda: None, lambda: {'choices': utils.get_available_localizations()}, 'refresh-button', interactive=not mu) shared.gradio['download_localization'] = gr.Button(value='Download localization template', elem_id='download_localization') extension_status = gr.Markdown() shared.gradio['theme_state'] = gr.Textbox(visible=False, value='dark' if shared.settings['dark_theme'] else 'light') extension_name.submit(clone_or_pull_repository, extension_name, extension_status, show_progress=False) # Reset interface event shared.gradio['reset_interface'].click( set_interface_arguments, gradio('extensions_menu', 'bool_menu'), None).then( None, None, None, js='() => {document.body.innerHTML=\'