mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-20 12:49:38 +08:00
Don't interrupt loading scripts when one error occurs
Instead of breaking the loading of the rest of the scripts, just don't load this particular one.
This commit is contained in:
parent
b8fce75dac
commit
afeea6e214
@ -118,27 +118,30 @@ class PostProcessingPlugin(QObject, Extension):
|
|||||||
for loader, script_name, ispkg in scripts:
|
for loader, script_name, ispkg in scripts:
|
||||||
# Iterate over all scripts.
|
# Iterate over all scripts.
|
||||||
if script_name not in sys.modules:
|
if script_name not in sys.modules:
|
||||||
spec = importlib.util.spec_from_file_location(__name__ + "." + script_name, os.path.join(path, script_name + ".py"))
|
|
||||||
loaded_script = importlib.util.module_from_spec(spec)
|
|
||||||
spec.loader.exec_module(loaded_script)
|
|
||||||
sys.modules[script_name] = loaded_script
|
|
||||||
|
|
||||||
loaded_class = getattr(loaded_script, script_name)
|
|
||||||
temp_object = loaded_class()
|
|
||||||
Logger.log("d", "Begin loading of script: %s", script_name)
|
|
||||||
try:
|
try:
|
||||||
setting_data = temp_object.getSettingData()
|
spec = importlib.util.spec_from_file_location(__name__ + "." + script_name, os.path.join(path, script_name + ".py"))
|
||||||
if "name" in setting_data and "key" in setting_data:
|
loaded_script = importlib.util.module_from_spec(spec)
|
||||||
self._script_labels[setting_data["key"]] = setting_data["name"]
|
spec.loader.exec_module(loaded_script)
|
||||||
self._loaded_scripts[setting_data["key"]] = loaded_class
|
sys.modules[script_name] = loaded_script
|
||||||
else:
|
|
||||||
Logger.log("w", "Script %s.py has no name or key", script_name)
|
loaded_class = getattr(loaded_script, script_name)
|
||||||
self._script_labels[script_name] = script_name
|
temp_object = loaded_class()
|
||||||
self._loaded_scripts[script_name] = loaded_class
|
Logger.log("d", "Begin loading of script: %s", script_name)
|
||||||
except AttributeError:
|
try:
|
||||||
Logger.log("e", "Script %s.py is not a recognised script type. Ensure it inherits Script", script_name)
|
setting_data = temp_object.getSettingData()
|
||||||
except NotImplementedError:
|
if "name" in setting_data and "key" in setting_data:
|
||||||
Logger.log("e", "Script %s.py has no implemented settings", script_name)
|
self._script_labels[setting_data["key"]] = setting_data["name"]
|
||||||
|
self._loaded_scripts[setting_data["key"]] = loaded_class
|
||||||
|
else:
|
||||||
|
Logger.log("w", "Script %s.py has no name or key", script_name)
|
||||||
|
self._script_labels[script_name] = script_name
|
||||||
|
self._loaded_scripts[script_name] = loaded_class
|
||||||
|
except AttributeError:
|
||||||
|
Logger.log("e", "Script %s.py is not a recognised script type. Ensure it inherits Script", script_name)
|
||||||
|
except NotImplementedError:
|
||||||
|
Logger.log("e", "Script %s.py has no implemented settings", script_name)
|
||||||
|
except Exception as e:
|
||||||
|
Logger.logException("e", "Exception occurred while loading post processing plugin: {error_msg}".format(error_msg = str(e)))
|
||||||
self.loadedScriptListChanged.emit()
|
self.loadedScriptListChanged.emit()
|
||||||
|
|
||||||
loadedScriptListChanged = pyqtSignal()
|
loadedScriptListChanged = pyqtSignal()
|
||||||
@ -171,18 +174,15 @@ class PostProcessingPlugin(QObject, Extension):
|
|||||||
|
|
||||||
## Load all scripts in the scripts folders
|
## Load all scripts in the scripts folders
|
||||||
for root in [PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), Resources.getStoragePath(Resources.Preferences)]:
|
for root in [PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), Resources.getStoragePath(Resources.Preferences)]:
|
||||||
try:
|
path = os.path.join(root, "scripts")
|
||||||
path = os.path.join(root, "scripts")
|
if not os.path.isdir(path):
|
||||||
if not os.path.isdir(path):
|
try:
|
||||||
try:
|
os.makedirs(path)
|
||||||
os.makedirs(path)
|
except OSError:
|
||||||
except OSError:
|
Logger.log("w", "Unable to create a folder for scripts: " + path)
|
||||||
Logger.log("w", "Unable to create a folder for scripts: " + path)
|
continue
|
||||||
continue
|
|
||||||
|
|
||||||
self.loadAllScripts(path)
|
self.loadAllScripts(path)
|
||||||
except Exception as e:
|
|
||||||
Logger.logException("e", "Exception occurred while loading post processing plugin: {error_msg}".format(error_msg = str(e)))
|
|
||||||
|
|
||||||
# Create the plugin dialog component
|
# Create the plugin dialog component
|
||||||
path = os.path.join(PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), "PostProcessingPlugin.qml")
|
path = os.path.join(PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), "PostProcessingPlugin.qml")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user