def __init__(self, language, forPreparation = False, parent = None):
     """
     Constructor
     
     @param language language of the APIs object (string)
     @param forPreparation flag indicating this object is just needed
         for a preparation process (boolean)
     @param parent reference to the parent object (QObject)
     """
     QObject.__init__(self, parent)
     self.setObjectName("APIs_%s" % language)
     
     self.__inPreparation = False
     self.__language = language
     self.__forPreparation = forPreparation
     self.__lexer = Lexers.getLexer(self.__language)
     self.__apifiles = Preferences.getEditorAPI(self.__language)
     self.__apifiles.sort()
     if self.__lexer is None:
         self.__apis = None
     else:
         self.__apis = QsciAPIs(self.__lexer)
         self.connect(self.__apis, SIGNAL("apiPreparationFinished()"),
                      self.__apiPreparationFinished)
         self.connect(self.__apis, SIGNAL("apiPreparationCancelled()"),
                      self.__apiPreparationCancelled)
         self.connect(self.__apis, SIGNAL("apiPreparationStarted()"),
                      self.__apiPreparationStarted)
         self.__loadAPIs()
 def getAPIs(self, language, forPreparation = False):
     """
     Public method to get an apis object for autocompletion/calltips.
     
     This method creates and loads an APIs object dynamically upon request. 
     This saves memory for languages, that might not be needed at the moment.
     
     @param language the language of the requested api object (string or QString)
     @param forPreparation flag indicating the requested api object is just needed
         for a preparation process (boolean)
     @return the apis object (APIs)
     """
     language = unicode(language)
     if forPreparation:
         return APIs(language, forPreparation = forPreparation)
     else:
         try:
             return self.__apis[language]
         except KeyError:
             if language in Lexers.getSupportedLanguages().keys():
                 # create the api object
                 self.__apis[language] = APIs(language)
                 return self.__apis[language]
             else:
                 return None