From 19a2115618a3a5d0624eaa8f5ca0b3aa821033a7 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 10 May 2025 17:39:54 +0100 Subject: [PATCH] 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. --- src/calibre/customize/__init__.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 568267b6be..f6dbd64ce1 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -180,14 +180,19 @@ class Plugin: # {{{ v.addWidget(button_box) if not config_dialog.restore_geometry(gprefs, prefname): QApplication.instance().ensure_window_on_screen(config_dialog) - config_dialog.exec() - - if config_dialog.result() == QDialog.DialogCode.Accepted: - if hasattr(config_widget, 'validate'): - if config_widget.validate(): + while True: + validation_error = False + config_dialog.exec() + if config_dialog.result() == QDialog.DialogCode.Accepted: + if hasattr(config_widget, 'validate'): + if config_widget.validate(): + self.save_settings(config_widget) + else: + validation_error = True + else: self.save_settings(config_widget) - else: - self.save_settings(config_widget) + if not validation_error: + break else: from calibre.customize.ui import customize_plugin, plugin_customization help_text = self.customization_help(gui=True)