--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5Gui/E5Application.py Wed Jan 13 18:53:58 2010 +0000 @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2009 - 2010 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Class implementing a specialized application class. +""" + +from PyQt4.QtCore import QCoreApplication +from PyQt4.QtGui import QApplication + +class E5Application(QApplication): + """ + Eric application class with an object registry. + """ + def __init__(self, argv): + """ + Constructor + + @param argv command line arguments + """ + QApplication.__init__(self, argv) + + self.__objectRegistry = {} + self.__pluginObjectRegistry = {} + + def registerObject(self, name, object): + """ + Public method to register an object in the object registry. + + @param name name of the object (string) + @param object reference to the object + @exception KeyError raised when the given name is already in use + """ + if name in self.__objectRegistry: + raise KeyError('Object "%s" already registered.' % name) + else: + self.__objectRegistry[name] = object + + def getObject(self, name): + """ + Public method to get a reference to a registered object. + + @param name name of the object (string) + @return reference to the registered object + @exception KeyError raised when the given name is not known + """ + if name in self.__objectRegistry: + return self.__objectRegistry[name] + else: + raise KeyError('Object "%s" is not registered.' % name) + + def registerPluginObject(self, name, object, pluginType = None): + """ + Public method to register a plugin object in the object registry. + + @param name name of the plugin object (string) + @param object reference to the plugin object + @keyparam pluginType type of the plugin object (string) + @exception KeyError raised when the given name is already in use + """ + if name in self.__pluginObjectRegistry: + raise KeyError('Pluginobject "%s" already registered.' % name) + else: + self.__pluginObjectRegistry[name] = (object, pluginType) + + def unregisterPluginObject(self, name): + """ + Public method to unregister a plugin object in the object registry. + + @param name name of the plugin object (string) + """ + if name in self.__pluginObjectRegistry: + del self.__pluginObjectRegistry[name] + + def getPluginObject(self, name): + """ + Public method to get a reference to a registered plugin object. + + @param name name of the plugin object (string) + @return reference to the registered plugin object + @exception KeyError raised when the given name is not known + """ + if name in self.__pluginObjectRegistry: + return self.__pluginObjectRegistry[name][0] + else: + raise KeyError('Pluginobject "%s" is not registered.' % name) + + def getPluginObjects(self): + """ + Public method to get a list of (name, reference) pairs of all + registered plugin objects. + + @return list of (name, reference) pairs + """ + objects = [] + for name in self.__pluginObjectRegistry: + objects.append((name, self.__pluginObjectRegistry[name][0])) + return objects + + def getPluginObjectType(self, name): + """ + Public method to get the type of a registered plugin object. + + @param name name of the plugin object (string) + @return type of the plugin object (string) + @exception KeyError raised when the given name is not known + """ + if name in self.__pluginObjectRegistry: + return self.__pluginObjectRegistry[name][1] + else: + raise KeyError('Pluginobject "%s" is not registered.' % name) + +e5App = QCoreApplication.instance \ No newline at end of file