diff -r 000000000000 -r de9c2efb9d02 E4Gui/E4Application.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E4Gui/E4Application.py Mon Dec 28 16:03:33 2009 +0000 @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2009 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Class implementing a specialized application class. +""" + +from PyQt4.QtCore import QCoreApplication +from PyQt4.QtGui import QApplication + +class E4Application(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 self.__objectRegistry.has_key(name): + 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 self.__objectRegistry.has_key(name): + 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 self.__pluginObjectRegistry.has_key(name): + 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 self.__pluginObjectRegistry.has_key(name): + 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 self.__pluginObjectRegistry.has_key(name): + 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 self.__pluginObjectRegistry.has_key(name): + return self.__pluginObjectRegistry[name][1] + else: + raise KeyError('Pluginobject "%s" is not registered.' % name) + +e4App = QCoreApplication.instance