diff --git a/modules/ui_session.py b/modules/ui_session.py index 4ed740cd..db9ce3b0 100644 --- a/modules/ui_session.py +++ b/modules/ui_session.py @@ -12,6 +12,7 @@ def create_ui(): with gr.Column(): with gr.Row(): shared.gradio['toggle_dark_mode'] = gr.Button('Toggle 💡') + shared.gradio['save_settings'] = gr.Button('Save UI defaults to user_data/settings.yaml', interactive=not mu) shared.gradio['reset_interface'] = gr.Button("Apply flags/extensions and restart", interactive=not mu) with gr.Row(): @@ -32,14 +33,28 @@ def create_ui(): if not shared.args.portable: extension_name.submit(clone_or_pull_repository, extension_name, extension_status, show_progress=False) + shared.gradio['save_settings'].click( + ui.gather_interface_values, gradio(shared.input_elements), gradio('interface_state')).then( + handle_save_settings, gradio('interface_state', 'preset_menu', 'extensions_menu', 'show_controls', 'theme_state'), gradio('save_contents', 'save_filename', 'save_root', 'file_saver'), show_progress=False) + + shared.gradio['toggle_dark_mode'].click( + lambda x: 'dark' if x == 'light' else 'light', gradio('theme_state'), gradio('theme_state')).then( + None, None, None, js=f'() => {{{ui.dark_theme_js}; toggleDarkMode()}}') + # 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=\'

Reloading...

\'; setTimeout(function(){location.reload()},2500); return []}') - shared.gradio['toggle_dark_mode'].click( - lambda x: 'dark' if x == 'light' else 'light', gradio('theme_state'), gradio('theme_state')).then( - None, None, None, js=f'() => {{{ui.dark_theme_js}; toggleDarkMode()}}') + +def handle_save_settings(state, preset, extensions, show_controls, theme): + contents = ui.save_settings(state, preset, extensions, show_controls, theme) + return [ + contents, + "settings.yaml", + "user_data/", + gr.update(visible=True) + ] def set_interface_arguments(extensions, bool_active):