def accept(self): txt = self.form.editor.toPlainText() txt = gui_hooks.addon_config_editor_will_save_json(txt) try: new_conf = json.loads(txt) jsonschema.validate(new_conf, self.parent().mgr._addonSchema(self.addon)) except ValidationError as e: # The user did edit the configuration and entered a value # which can not be interpreted. showInfo(tr(TR.ADDONS_CONFIG_VALIDATION_ERROR, problem=e.message)) return except Exception as e: showInfo(_("Invalid configuration: ") + repr(e)) return if not isinstance(new_conf, dict): showInfo( _("Invalid configuration: top level object must be a map")) return if new_conf != self.conf: self.mgr.writeConfig(self.addon, new_conf) # does the add-on define an action to be fired? act = self.mgr.configUpdatedAction(self.addon) if act: act(new_conf) self.onClose() super().accept()
def accept(self) -> None: txt = self.form.editor.toPlainText() txt = gui_hooks.addon_config_editor_will_save_json(txt) try: new_conf = json.loads(txt) jsonschema.validate(new_conf, self.parent().mgr._addon_schema(self.addon)) except ValidationError as e: # The user did edit the configuration and entered a value # which can not be interpreted. schema = e.schema erroneous_conf = new_conf for link in e.path: erroneous_conf = erroneous_conf[link] path = "/".join(str(path) for path in e.path) if "error_msg" in schema: msg = schema["error_msg"].format( problem=e.message, path=path, schema=str(schema), erroneous_conf=erroneous_conf, ) else: msg = tr( TR.ADDONS_CONFIG_VALIDATION_ERROR, problem=e.message, path=path, schema=str(schema), ) showInfo(msg) return except Exception as e: showInfo(_("Invalid configuration: ") + repr(e)) return if not isinstance(new_conf, dict): showInfo( _("Invalid configuration: top level object must be a map")) return if new_conf != self.conf: self.mgr.writeConfig(self.addon, new_conf) # does the add-on define an action to be fired? act = self.mgr.configUpdatedAction(self.addon) if act: act(new_conf) self.onClose() super().accept()
def accept(self): txt = self.form.editor.toPlainText() txt = gui_hooks.addon_config_editor_will_save_json(txt) try: new_conf = json.loads(txt) except Exception as e: showInfo(_("Invalid configuration: ") + repr(e)) return if not isinstance(new_conf, dict): showInfo( _("Invalid configuration: top level object must be a map")) return if new_conf != self.conf: self.mgr.writeConfig(self.addon, new_conf) # does the add-on define an action to be fired? act = self.mgr.configUpdatedAction(self.addon) if act: act(new_conf) self.onClose() super().accept()