Catch and display errors while instantiating command plugins

Should generalize for all plugin types
This commit is contained in:
David Vierra 2016-09-16 03:57:01 -10:00
parent 5314a2c554
commit add129b7e4

View File

@ -8,6 +8,7 @@ from collections import defaultdict
from PySide import QtCore, QtGui
from mcedit2.command import SimpleRevisionCommand
from mcedit2.dialogs.error_dialog import showErrorDialog
from mcedit2.plugins.registry import PluginClassRegistry
from mcedit2.widgets.blockpicker import BlockTypeButton
from mcedit2.widgets.layout import Column
@ -328,12 +329,16 @@ class PluginsMenu(QtGui.QMenu):
def loadPlugins(self):
for cls in CommandPlugins.registeredPlugins:
instance = cls(self.editorSession)
self.plugins.append(instance)
self.pluginAdded(cls)
def pluginAdded(self, cls):
instance = cls(self.editorSession)
self.plugins.append(instance)
try:
instance = cls(self.editorSession)
self.plugins.append(instance)
except Exception as e:
msg = "Error while instantiating plugin class %s" % (cls,)
log.exception(msg)
showErrorDialog(msg, fatal=False)
def pluginRemoved(self, cls):
self.plugins = [p for p in self.plugins if not isinstance(p, cls)]