@ -21,7 +21,7 @@ def check_access():
assert not shared . cmd_opts . disable_extension_access , " extension access disabled because of command line flags "
assert not shared . cmd_opts . disable_extension_access , " extension access disabled because of command line flags "
def apply_and_restart ( disable_list , update_list ):
def apply_and_restart ( disable_list , update_list , disable_all ):
check_access ( )
check_access ( )
disabled = json . loads ( disable_list )
disabled = json . loads ( disable_list )
@ -43,6 +43,7 @@ def apply_and_restart(disable_list, update_list):
print ( traceback . format_exc ( ) , file = sys . stderr )
print ( traceback . format_exc ( ) , file = sys . stderr )
shared . opts . disabled_extensions = disabled
shared . opts . disabled_extensions = disabled
shared . opts . disable_all_extensions = disable_all
shared . opts . save ( shared . config_filename )
shared . opts . save ( shared . config_filename )
shared . state . interrupt ( )
shared . state . interrupt ( )
@ -99,9 +100,13 @@ def extension_table():
else :
else :
ext_status = ext . status
ext_status = ext . status
style = " "
if shared . opts . disable_all_extensions == " extra " and not ext . is_builtin or shared . opts . disable_all_extensions == " all " :
style = ' style= " color: var(--primary-400) " '
code + = f """
code + = f """
< tr >
< tr >
< td > < label > < input class = " gr-check-radio gr-checkbox " name = " enable_ { html.escape(ext.name)} " type = " checkbox " { ' checked= " checked " ' if ext . enabled else ' ' } > { html . escape ( ext . name ) } < / label > < / td >
< td > < label { style } > < input class = " gr-check-radio gr-checkbox " name = " enable_ { html.escape(ext.name)} " type = " checkbox " { ' checked= " checked " ' if ext . enabled else ' ' } > { html . escape ( ext . name ) } < / label > < / td >
< td > { remote } < / td >
< td > { remote } < / td >
< td > { ext . version } < / td >
< td > { ext . version } < / td >
< td { ' class= " extension_status " ' if ext . remote is not None else ' ' } > { ext_status } < / td >
< td { ' class= " extension_status " ' if ext . remote is not None else ' ' } > { ext_status } < / td >
@ -294,16 +299,24 @@ def create_ui():
with gr . Row ( elem_id = " extensions_installed_top " ) :
with gr . Row ( elem_id = " extensions_installed_top " ) :
apply = gr . Button ( value = " Apply and restart UI " , variant = " primary " )
apply = gr . Button ( value = " Apply and restart UI " , variant = " primary " )
check = gr . Button ( value = " Check for updates " )
check = gr . Button ( value = " Check for updates " )
extensions_disable_all = gr . Radio ( label = " Disable all extensions " , choices = [ " none " , " extra " , " all " ] , value = shared . opts . disable_all_extensions , elem_id = " extensions_disable_all " )
extensions_disabled_list = gr . Text ( elem_id = " extensions_disabled_list " , visible = False ) . style ( container = False )
extensions_disabled_list = gr . Text ( elem_id = " extensions_disabled_list " , visible = False ) . style ( container = False )
extensions_update_list = gr . Text ( elem_id = " extensions_update_list " , visible = False ) . style ( container = False )
extensions_update_list = gr . Text ( elem_id = " extensions_update_list " , visible = False ) . style ( container = False )
info = gr . HTML ( )
html = " "
if shared . opts . disable_all_extensions != " none " :
html = """
< span style = " color: var(--primary-400); " >
" Disable all extensions " was set , change it to " none " to load all extensions again
< / span >
"""
info = gr . HTML ( html )
extensions_table = gr . HTML ( lambda : extension_table ( ) )
extensions_table = gr . HTML ( lambda : extension_table ( ) )
apply . click (
apply . click (
fn = apply_and_restart ,
fn = apply_and_restart ,
_js = " extensions_apply " ,
_js = " extensions_apply " ,
inputs = [ extensions_disabled_list , extensions_update_list ] ,
inputs = [ extensions_disabled_list , extensions_update_list , extensions_disable_all ],
outputs = [ ] ,
outputs = [ ] ,
)
)