From 6fa20d51dcfd7db3286bc9dad31455b69b6daf65 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Fri, 23 Sep 2022 17:27:30 +0300 Subject: prevent saving settings with bogus values --- modules/ui.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'modules/ui.py') diff --git a/modules/ui.py b/modules/ui.py index 3f92efc6..1cbff1fd 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -831,7 +831,11 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): components = [] def run_settings(*args): - up = [] + changed = 0 + + for key, value, comp in zip(opts.data_labels.keys(), args, components): + if not opts.same_type(value, opts.data_labels[key].default): + return f"Bad value for setting {key}: {value}; expecting {type(opts.data_labels[key].default).__name__}" for key, value, comp in zip(opts.data_labels.keys(), args, components): comp_args = opts.data_labels[key].component_args @@ -841,14 +845,15 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): oldval = opts.data.get(key, None) opts.data[key] = value - if oldval != value and opts.data_labels[key].onchange is not None: - opts.data_labels[key].onchange() + if oldval != value: + if opts.data_labels[key].onchange is not None: + opts.data_labels[key].onchange() - up.append(comp.update(value=value)) + changed += 1 opts.save(shared.config_filename) - return 'Settings applied.' + return f'{changed} settings changed.' with gr.Blocks(analytics_enabled=False) as settings_interface: settings_submit = gr.Button(value="Apply settings", variant='primary') -- cgit v1.2.1