2023-05-31 19:40:09 +00:00
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 :
2023-06-02 11:58:10 +00:00
with gr . Accordion ( " Options " , open = False ) if shared . opts . extra_options_accordion and shared . opts . extra_options else gr . Group ( ) , gr . Row ( ) :
2023-05-31 19:40:09 +00:00
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 " )
} ) )