|
import gradio as gr |
|
from modules import scripts, shared, ui_components, ui_settings |
|
from modules.ui_components import FormColumn |
|
|
|
|
|
class ExtraOptionsSection(scripts.Script): |
|
section = "extra_options" |
|
|
|
def __init__(self): |
|
self.comps = None |
|
self.setting_names = None |
|
|
|
def title(self): |
|
return "Extra options" |
|
|
|
def show(self, is_img2img): |
|
return scripts.AlwaysVisible |
|
|
|
def ui(self, is_img2img): |
|
self.comps = [] |
|
self.setting_names = [] |
|
|
|
with gr.Blocks() as interface: |
|
with gr.Accordion("Options", open=False) if shared.opts.extra_options_accordion and shared.opts.extra_options else gr.Group(), gr.Row(): |
|
for setting_name in shared.opts.extra_options: |
|
with FormColumn(): |
|
comp = ui_settings.create_setting_component(setting_name) |
|
|
|
self.comps.append(comp) |
|
self.setting_names.append(setting_name) |
|
|
|
def get_settings_values(): |
|
return [ui_settings.get_value_for_setting(key) for key in self.setting_names] |
|
|
|
interface.load(fn=get_settings_values, inputs=[], outputs=self.comps, queue=False, show_progress=False) |
|
|
|
return self.comps |
|
|
|
def before_process(self, p, *args): |
|
for name, value in zip(self.setting_names, args): |
|
if name not in p.override_settings: |
|
p.override_settings[name] = value |
|
|
|
|
|
shared.options_templates.update(shared.options_section(('ui', "User interface"), { |
|
"extra_options": shared.OptionInfo([], "Options in main UI", ui_components.DropdownMulti, lambda: {"choices": list(shared.opts.data_labels.keys())}).js("info", "settingsHintsShowQuicksettings").info("setting entries that also appear in txt2img/img2img interfaces").needs_restart(), |
|
"extra_options_accordion": shared.OptionInfo(False, "Place options in main UI into an accordion") |
|
})) |
|
|