Skip to content

Commit

Permalink
call script_callbacks.ui_settings_callback earlier; fix extra-options…
Browse files Browse the repository at this point in the history
…-section built-in extension killing the ui if using a setting that doesn't exist
  • Loading branch information
AUTOMATIC1111 committed Mar 4, 2024
1 parent 92d77e3 commit 0dc1286
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import math

import gradio as gr
from modules import scripts, shared, ui_components, ui_settings, infotext_utils
from modules import scripts, shared, ui_components, ui_settings, infotext_utils, errors
from modules.ui_components import FormColumn


Expand Down Expand Up @@ -42,7 +42,11 @@ def ui(self, is_img2img):
setting_name = extra_options[index]

with FormColumn():
comp = ui_settings.create_setting_component(setting_name)
try:
comp = ui_settings.create_setting_component(setting_name)
except KeyError:
errors.report(f"Can't add extra options for {setting_name} in ui")
continue

self.comps.append(comp)
self.setting_names.append(setting_name)
Expand Down
4 changes: 3 additions & 1 deletion modules/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ def create_ui():

parameters_copypaste.reset()

settings = ui_settings.UiSettings()

This comment has been minimized.

Copy link
@noisefloordev

noisefloordev May 22, 2024

This is a breaking change, breaking extensions that register their settings callbacks from within their extension class. It's not hard to work around, but this doesn't seem intentional.

settings.register_settings()

scripts.scripts_current = scripts.scripts_txt2img
scripts.scripts_txt2img.initialize_scripts(is_img2img=False)

Expand Down Expand Up @@ -1116,7 +1119,6 @@ def get_textual_inversion_template_names():
loadsave = ui_loadsave.UiLoadsave(cmd_opts.ui_config_file)
ui_settings_from_file = loadsave.ui_settings.copy()

settings = ui_settings.UiSettings()
settings.create_ui(loadsave, dummy_component)

interfaces = [
Expand Down
4 changes: 3 additions & 1 deletion modules/ui_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,16 @@ def run_settings_single(self, value, key):

return get_value_for_setting(key), opts.dumpjson()

def register_settings(self):
script_callbacks.ui_settings_callback()

def create_ui(self, loadsave, dummy_component):
self.components = []
self.component_dict = {}
self.dummy_component = dummy_component

shared.settings_components = self.component_dict

script_callbacks.ui_settings_callback()
opts.reorder()

with gr.Blocks(analytics_enabled=False) as settings_interface:
Expand Down

0 comments on commit 0dc1286

Please sign in to comment.