added callback for creating new settings in extensions
This commit is contained in:
parent
7fd90128eb
commit
d37cfffd53
3 changed files with 33 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
callbacks_model_loaded = []
|
callbacks_model_loaded = []
|
||||||
callbacks_ui_tabs = []
|
callbacks_ui_tabs = []
|
||||||
|
callbacks_ui_settings = []
|
||||||
|
|
||||||
|
|
||||||
def clear_callbacks():
|
def clear_callbacks():
|
||||||
|
@ -22,6 +23,11 @@ def ui_tabs_callback():
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
def ui_settings_callback():
|
||||||
|
for callback in callbacks_ui_settings:
|
||||||
|
callback()
|
||||||
|
|
||||||
|
|
||||||
def on_model_loaded(callback):
|
def on_model_loaded(callback):
|
||||||
"""register a function to be called when the stable diffusion model is created; the model is
|
"""register a function to be called when the stable diffusion model is created; the model is
|
||||||
passed as an argument"""
|
passed as an argument"""
|
||||||
|
@ -40,3 +46,8 @@ def on_ui_tabs(callback):
|
||||||
"""
|
"""
|
||||||
callbacks_ui_tabs.append(callback)
|
callbacks_ui_tabs.append(callback)
|
||||||
|
|
||||||
|
|
||||||
|
def on_ui_settings(callback):
|
||||||
|
"""register a function to be called before UI settingsare populated; add your settings
|
||||||
|
by using shared.opts.add_option(shared.OptionInfo(...)) """
|
||||||
|
callbacks_ui_settings.append(callback)
|
||||||
|
|
|
@ -165,13 +165,13 @@ def realesrgan_models_names():
|
||||||
|
|
||||||
|
|
||||||
class OptionInfo:
|
class OptionInfo:
|
||||||
def __init__(self, default=None, label="", component=None, component_args=None, onchange=None, show_on_main_page=False, refresh=None):
|
def __init__(self, default=None, label="", component=None, component_args=None, onchange=None, section=None, refresh=None):
|
||||||
self.default = default
|
self.default = default
|
||||||
self.label = label
|
self.label = label
|
||||||
self.component = component
|
self.component = component
|
||||||
self.component_args = component_args
|
self.component_args = component_args
|
||||||
self.onchange = onchange
|
self.onchange = onchange
|
||||||
self.section = None
|
self.section = section
|
||||||
self.refresh = refresh
|
self.refresh = refresh
|
||||||
|
|
||||||
|
|
||||||
|
@ -327,6 +327,7 @@ options_templates.update(options_section(('images-history', "Images Browser"), {
|
||||||
|
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
||||||
class Options:
|
class Options:
|
||||||
data = None
|
data = None
|
||||||
data_labels = options_templates
|
data_labels = options_templates
|
||||||
|
@ -389,6 +390,20 @@ class Options:
|
||||||
d = {k: self.data.get(k, self.data_labels.get(k).default) for k in self.data_labels.keys()}
|
d = {k: self.data.get(k, self.data_labels.get(k).default) for k in self.data_labels.keys()}
|
||||||
return json.dumps(d)
|
return json.dumps(d)
|
||||||
|
|
||||||
|
def add_option(self, key, info):
|
||||||
|
self.data_labels[key] = info
|
||||||
|
|
||||||
|
def reorder(self):
|
||||||
|
"""reorder settings so that all items related to section always go together"""
|
||||||
|
|
||||||
|
section_ids = {}
|
||||||
|
settings_items = self.data_labels.items()
|
||||||
|
for k, item in settings_items:
|
||||||
|
if item.section not in section_ids:
|
||||||
|
section_ids[item.section] = len(section_ids)
|
||||||
|
|
||||||
|
self.data_labels = {k: v for k, v in sorted(settings_items, key=lambda x: section_ids[x[1].section])}
|
||||||
|
|
||||||
|
|
||||||
opts = Options()
|
opts = Options()
|
||||||
if os.path.exists(config_filename):
|
if os.path.exists(config_filename):
|
||||||
|
|
|
@ -1461,6 +1461,9 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
components = []
|
components = []
|
||||||
component_dict = {}
|
component_dict = {}
|
||||||
|
|
||||||
|
script_callbacks.ui_settings_callback()
|
||||||
|
opts.reorder()
|
||||||
|
|
||||||
def open_folder(f):
|
def open_folder(f):
|
||||||
if not os.path.exists(f):
|
if not os.path.exists(f):
|
||||||
print(f'Folder "{f}" does not exist. After you create an image, the folder will be created.')
|
print(f'Folder "{f}" does not exist. After you create an image, the folder will be created.')
|
||||||
|
@ -1564,7 +1567,8 @@ Requested path was: {f}
|
||||||
|
|
||||||
previous_section = item.section
|
previous_section = item.section
|
||||||
|
|
||||||
gr.HTML(elem_id="settings_header_text_{}".format(item.section[0]), value='<h1 class="gr-button-lg">{}</h1>'.format(item.section[1]))
|
elem_id, text = item.section
|
||||||
|
gr.HTML(elem_id="settings_header_text_{}".format(elem_id), value='<h1 class="gr-button-lg">{}</h1>'.format(text))
|
||||||
|
|
||||||
if k in quicksettings_names:
|
if k in quicksettings_names:
|
||||||
quicksettings_list.append((i, k, item))
|
quicksettings_list.append((i, k, item))
|
||||||
|
|
Loading…
Reference in a new issue