QScintilla/APIsManager.py

branch
5_0_x
changeset 362
e09ff98eb4d1
parent 291
aaf3f18c5797
child 493
9b1e1a1212e3
--- a/QScintilla/APIsManager.py	Sun Jun 20 14:55:26 2010 +0200
+++ b/QScintilla/APIsManager.py	Wed Jun 23 20:01:31 2010 +0200
@@ -1,165 +1,166 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2007 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the APIsManager.
-"""
-
-from PyQt4.QtCore import *
-from PyQt4.Qsci import QsciAPIs
-
-from . import Lexers
-import Preferences
-
-class APIs(QObject):
-    """
-    Class implementing an API storage entity.
-    
-    @signal apiPreparationFinished() emitted after the API preparation has finished
-    @signal apiPreparationCancelled() emitted after the API preparation has been cancelled
-    @signal apiPreparationStarted() emitted after the API preparation has started
-    """
-    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 __loadAPIs(self):
-        """
-        Private method to load the APIs.
-        """
-        if self.__apis.isPrepared():
-            # load a prepared API file
-            if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
-                self.prepareAPIs()
-            self.__apis.loadPrepared()
-        else:
-            # load the raw files and prepare the API file
-            if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
-                self.prepareAPIs(ondemand = True)
-    
-    def reloadAPIs(self):
-        """
-        Public method to reload the API information.
-        """
-        if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
-            self.prepareAPIs()
-        self.__loadAPIs()
-    
-    def getQsciAPIs(self):
-        """
-        Public method to get a reference to QsciAPIs object.
-        
-        @return reference to the QsciAPIs object (QsciAPIs)
-        """
-        if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
-            self.prepareAPIs()
-        return self.__apis
-    
-    def __apiPreparationFinished(self):
-        """
-        Private method called to save an API, after it has been prepared.
-        """
-        self.__apis.savePrepared()
-        self.__inPreparation = False
-        self.emit(SIGNAL('apiPreparationFinished()'))
-    
-    def __apiPreparationCancelled(self):
-        """
-        Private method called, after the API preparation process has been cancelled.
-        """
-        self.__inPreparation = False
-        self.emit(SIGNAL('apiPreparationCancelled()'))
-    
-    def __apiPreparationStarted(self):
-        """
-        Private method called, when the API preparation process started.
-        """
-        self.__inPreparation = True
-        self.emit(SIGNAL('apiPreparationStarted()'))
-    
-    def prepareAPIs(self, ondemand = False, rawList = None):
-        """
-        Public method to prepare the APIs if necessary.
-        
-        @keyparam ondemand flag indicating a requested preparation (boolean)
-        @keyparam rawList list of raw API files (list of strings)
-        """
-        if self.__apis is None or self.__inPreparation:
-            return
-        
-        needsPreparation = False
-        if ondemand:
-            needsPreparation = True
-        else:
-            # check, if a new preparation is necessary
-            preparedAPIs = self.__defaultPreparedName()
-            if preparedAPIs:
-                preparedAPIsInfo = QFileInfo(preparedAPIs)
-                if not preparedAPIsInfo.exists():
-                    needsPreparation = True
-                else:
-                    preparedAPIsTime = preparedAPIsInfo.lastModified()
-                    apifiles = sorted(Preferences.getEditorAPI(self.__language))
-                    if self.__apifiles != apifiles:
-                        needsPreparation = True
-                    for apifile in apifiles:
-                        if QFileInfo(apifile).lastModified() > preparedAPIsTime:
-                            needsPreparation = True
-                            break
-        
-        if needsPreparation:
-            # do the preparation
-            self.__apis.clear()
-            if rawList:
-                apifiles = rawList
-            else:
-                apifiles = Preferences.getEditorAPI(self.__language)
-            for apifile in apifiles:
-                self.__apis.load(apifile)
-            self.__apis.prepare()
-            self.__apifiles = apifiles
-    
-    def cancelPreparation(self):
-        """
-        Public slot to cancel the APIs preparation.
-        """
-        self.__apis and self.__apis.cancelPreparation()
-    
-    def installedAPIFiles(self):
-        """
-        Public method to get a list of installed API files.
-        
-        @return list of installed API files (list of strings)
-        """
-        if self.__apis is not None:
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2007 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the APIsManager.
+"""
+
+from PyQt4.QtCore import *
+from PyQt4.Qsci import QsciAPIs
+
+from . import Lexers
+import Preferences
+import Utilities
+
+class APIs(QObject):
+    """
+    Class implementing an API storage entity.
+    
+    @signal apiPreparationFinished() emitted after the API preparation has finished
+    @signal apiPreparationCancelled() emitted after the API preparation has been cancelled
+    @signal apiPreparationStarted() emitted after the API preparation has started
+    """
+    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 __loadAPIs(self):
+        """
+        Private method to load the APIs.
+        """
+        if self.__apis.isPrepared():
+            # load a prepared API file
+            if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
+                self.prepareAPIs()
+            self.__apis.loadPrepared()
+        else:
+            # load the raw files and prepare the API file
+            if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
+                self.prepareAPIs(ondemand = True)
+    
+    def reloadAPIs(self):
+        """
+        Public method to reload the API information.
+        """
+        if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
+            self.prepareAPIs()
+        self.__loadAPIs()
+    
+    def getQsciAPIs(self):
+        """
+        Public method to get a reference to QsciAPIs object.
+        
+        @return reference to the QsciAPIs object (QsciAPIs)
+        """
+        if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
+            self.prepareAPIs()
+        return self.__apis
+    
+    def __apiPreparationFinished(self):
+        """
+        Private method called to save an API, after it has been prepared.
+        """
+        self.__apis.savePrepared()
+        self.__inPreparation = False
+        self.emit(SIGNAL('apiPreparationFinished()'))
+    
+    def __apiPreparationCancelled(self):
+        """
+        Private method called, after the API preparation process has been cancelled.
+        """
+        self.__inPreparation = False
+        self.emit(SIGNAL('apiPreparationCancelled()'))
+    
+    def __apiPreparationStarted(self):
+        """
+        Private method called, when the API preparation process started.
+        """
+        self.__inPreparation = True
+        self.emit(SIGNAL('apiPreparationStarted()'))
+    
+    def prepareAPIs(self, ondemand = False, rawList = None):
+        """
+        Public method to prepare the APIs if necessary.
+        
+        @keyparam ondemand flag indicating a requested preparation (boolean)
+        @keyparam rawList list of raw API files (list of strings)
+        """
+        if self.__apis is None or self.__inPreparation:
+            return
+        
+        needsPreparation = False
+        if ondemand:
+            needsPreparation = True
+        else:
+            # check, if a new preparation is necessary
+            preparedAPIs = self.__defaultPreparedName()
+            if preparedAPIs:
+                preparedAPIsInfo = QFileInfo(preparedAPIs)
+                if not preparedAPIsInfo.exists():
+                    needsPreparation = True
+                else:
+                    preparedAPIsTime = preparedAPIsInfo.lastModified()
+                    apifiles = sorted(Preferences.getEditorAPI(self.__language))
+                    if self.__apifiles != apifiles:
+                        needsPreparation = True
+                    for apifile in apifiles:
+                        if QFileInfo(apifile).lastModified() > preparedAPIsTime:
+                            needsPreparation = True
+                            break
+        
+        if needsPreparation:
+            # do the preparation
+            self.__apis.clear()
+            if rawList:
+                apifiles = rawList
+            else:
+                apifiles = Preferences.getEditorAPI(self.__language)
+            for apifile in apifiles:
+                self.__apis.load(apifile)
+            self.__apis.prepare()
+            self.__apifiles = apifiles
+    
+    def cancelPreparation(self):
+        """
+        Public slot to cancel the APIs preparation.
+        """
+        self.__apis and self.__apis.cancelPreparation()
+    
+    def installedAPIFiles(self):
+        """
+        Public method to get a list of installed API files.
+        
+        @return list of installed API files (list of strings)
+        """
+        if self.__apis is not None:
             if Utilities.isWindowsPlatform():
                 from PyQt4 import pyqtconfig
                 qsciPath = os.path.join(pyqtconfig._pkg_config["pyqt_mod_dir"], "qsci")
@@ -173,65 +174,65 @@
                         fnames.append(fi.absoluteFilePath())
                     return fnames
             
-            return self.__apis.installedAPIFiles()
-        else:
-            return []
-    
-    def __defaultPreparedName(self):
-        """
-        Private method returning the default name of a prepared API file.
-        
-        @return complete filename for the Prepared APIs file (string)
-        """
-        if self.__apis is not None:
-            return self.__apis.defaultPreparedName()
-        else:
-            return ""
-    
-class APIsManager(QObject):
-    """
-    Class implementing the APIsManager class, which is the central store for
-    API information used by autocompletion and calltips.
-    """
-    def __init__(self, parent = None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object (QObject)
-        """
-        QObject.__init__(self, parent)
-        self.setObjectName("APIsManager")
-        
-        self.__apis = {}
-    
-    def reloadAPIs(self):
-        """
-        Public slot to reload the api information.
-        """
-        for api in list(self.__apis.values()):
-            api and api.reloadAPIs()
-    
-    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)
-        @param forPreparation flag indicating the requested api object is just needed
-            for a preparation process (boolean)
-        @return the apis object (APIs)
-        """
-        if forPreparation:
-            return APIs(language, forPreparation = forPreparation)
-        else:
-            try:
-                return self.__apis[language]
-            except KeyError:
-                if language in Lexers.getSupportedLanguages():
-                    # create the api object
-                    self.__apis[language] = APIs(language)
-                    return self.__apis[language]
-                else:
-                    return None
+            return self.__apis.installedAPIFiles()
+        else:
+            return []
+    
+    def __defaultPreparedName(self):
+        """
+        Private method returning the default name of a prepared API file.
+        
+        @return complete filename for the Prepared APIs file (string)
+        """
+        if self.__apis is not None:
+            return self.__apis.defaultPreparedName()
+        else:
+            return ""
+    
+class APIsManager(QObject):
+    """
+    Class implementing the APIsManager class, which is the central store for
+    API information used by autocompletion and calltips.
+    """
+    def __init__(self, parent = None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object (QObject)
+        """
+        QObject.__init__(self, parent)
+        self.setObjectName("APIsManager")
+        
+        self.__apis = {}
+    
+    def reloadAPIs(self):
+        """
+        Public slot to reload the api information.
+        """
+        for api in list(self.__apis.values()):
+            api and api.reloadAPIs()
+    
+    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)
+        @param forPreparation flag indicating the requested api object is just needed
+            for a preparation process (boolean)
+        @return the apis object (APIs)
+        """
+        if forPreparation:
+            return APIs(language, forPreparation = forPreparation)
+        else:
+            try:
+                return self.__apis[language]
+            except KeyError:
+                if language in Lexers.getSupportedLanguages():
+                    # create the api object
+                    self.__apis[language] = APIs(language)
+                    return self.__apis[language]
+                else:
+                    return None

eric ide

mercurial