Mercurial > fife-parpg
view clients/editor/scripts/plugin.py @ 337:f9aca52c7c45
VFS:
* Emit warning for upper case filenames. Fixes #122.
author | phoku@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Mon, 24 Aug 2009 16:06:30 +0000 |
parents | 51cc05d862f2 |
children | 8b125ec749d7 |
line wrap: on
line source
import os import editor class PluginManager: """ Currently, pluginmanager iterates through the plugin directory adding the plugins if they are set to True in settings.xml. If a plugin isn't set in settings.xml it assumes it is not to be loaded, and saves it as False in settings.xml. If a plugin fails to load due to exceptions, they are caught and a line of the error is printed to console. """ def __init__(self, *args, **kwargs): self._settings = editor.getEditor().getSettings() self._pluginDir = "plugins" self._plugins = [] files = [] for f in os.listdir(self._pluginDir): path = os.path.join(self._pluginDir, f) if os.path.isfile(path) and os.path.splitext(f)[1] == ".py" and f != "__init__.py": files.append(os.path.splitext(f)[0]) for f in files: importPlugin = self._settings.get("Plugins", f, False) if importPlugin: try: print "Importing plugin:", f exec "import plugins."+f plugin = eval("plugins."+f+"."+f+"()") if isinstance(plugin, Plugin) is False: print f+" is not an instance of Plugin!" else: plugin.enable() self._plugins.append(plugin) except BaseException, error: print "Error: ", error print "Invalid plugin:", f else: print "Not importing plugin:", f self._settings.set("Plugins", f, importPlugin) self._settings.saveSettings() class Plugin: """ The base class for all plugins. All plugins should override these functions. """ def enable(self): raise NotImplementedError, "Plugin has not implemented the enable() function!" def disable(self): raise NotImplementedError, "Plugin has not implemented the disable() function!" def isEnabled(self): raise NotImplementedError, "Plugin has not implemented the isEnabled() function!" def getName(self): raise NotImplementedError, "Plugin has not implemented the getName() function!" #--- These are not so important ---# def getAuthor(self): return "Unknown" def getDescription(self): return "" def getLicense(self): return "" def getVersion(self): return "0.1"