Change the plugin configuration do_user_config() to reopen the the dialog if the validator fails. This happens only if the plugin has a config widget and validators.

This commit is contained in:
Charles Haley 2025-05-10 17:39:54 +01:00
parent 04642ffda9
commit 19a2115618

View File

@ -180,14 +180,19 @@ class Plugin: # {{{
v.addWidget(button_box) v.addWidget(button_box)
if not config_dialog.restore_geometry(gprefs, prefname): if not config_dialog.restore_geometry(gprefs, prefname):
QApplication.instance().ensure_window_on_screen(config_dialog) QApplication.instance().ensure_window_on_screen(config_dialog)
config_dialog.exec() while True:
validation_error = False
if config_dialog.result() == QDialog.DialogCode.Accepted: config_dialog.exec()
if hasattr(config_widget, 'validate'): if config_dialog.result() == QDialog.DialogCode.Accepted:
if config_widget.validate(): if hasattr(config_widget, 'validate'):
if config_widget.validate():
self.save_settings(config_widget)
else:
validation_error = True
else:
self.save_settings(config_widget) self.save_settings(config_widget)
else: if not validation_error:
self.save_settings(config_widget) break
else: else:
from calibre.customize.ui import customize_plugin, plugin_customization from calibre.customize.ui import customize_plugin, plugin_customization
help_text = self.customization_help(gui=True) help_text = self.customization_help(gui=True)