diff --git a/modules/ui.py b/modules/ui.py index d70b1953..efb53bdf 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -209,7 +209,7 @@ def apply_interface_values(state, use_persistent=False): return [state[k] if k in state else gr.update() for k in elements] -def save_settings(state, preset, extensions_list, show_controls): +def save_settings(state, preset, extensions_list, show_controls, theme_state): output = copy.deepcopy(shared.settings) exclude = ['name2', 'greeting', 'context', 'turn_template'] for k in state: @@ -223,6 +223,7 @@ def save_settings(state, preset, extensions_list, show_controls): output['default_extensions'] = extensions_list output['seed'] = int(output['seed']) output['show_controls'] = show_controls + output['dark_theme'] = True if theme_state == 'dark' else False # Save extension values in the UI for extension_name in extensions_list: diff --git a/modules/ui_session.py b/modules/ui_session.py index 61e05065..989046ea 100644 --- a/modules/ui_session.py +++ b/modules/ui_session.py @@ -26,6 +26,7 @@ def create_ui(): 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) 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 @@ -33,10 +34,13 @@ def create_ui(): set_interface_arguments, gradio('extensions_menu', 'bool_menu'), None).then( lambda: None, None, None, _js='() => {document.body.innerHTML=\'

Reloading...

\'; setTimeout(function(){location.reload()},2500); return []}') - shared.gradio['toggle_dark_mode'].click(lambda: None, None, None, _js='() => {document.getElementsByTagName("body")[0].classList.toggle("dark")}') + shared.gradio['toggle_dark_mode'].click( + lambda: None, None, None, _js='() => {document.getElementsByTagName("body")[0].classList.toggle("dark")}').then( + lambda x: 'dark' if x == 'light' else 'light', gradio('theme_state'), gradio('theme_state')) + shared.gradio['save_settings'].click( ui.gather_interface_values, gradio(shared.input_elements), gradio('interface_state')).then( - ui.save_settings, gradio('interface_state', 'preset_menu', 'extensions_menu', 'show_controls'), gradio('save_contents')).then( + ui.save_settings, gradio('interface_state', 'preset_menu', 'extensions_menu', 'show_controls', 'theme_state'), gradio('save_contents')).then( lambda: './', None, gradio('save_root')).then( lambda: 'settings.yaml', None, gradio('save_filename')).then( lambda: gr.update(visible=True), None, gradio('file_saver'))