QScintilla/APIsManager.py

Wed, 23 Jun 2010 20:01:31 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 23 Jun 2010 20:01:31 +0200
branch
5_0_x
changeset 362
e09ff98eb4d1
parent 291
aaf3f18c5797
child 493
9b1e1a1212e3
permissions
-rw-r--r--

Fixed a missing import in APIsManager.py.

362
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
1 # -*- coding: utf-8 -*-
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
2
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
3 # Copyright (c) 2007 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
4 #
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
5
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
6 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
7 Module implementing the APIsManager.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
8 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
9
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
10 from PyQt4.QtCore import *
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
11 from PyQt4.Qsci import QsciAPIs
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
12
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
13 from . import Lexers
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
14 import Preferences
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
15 import Utilities
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
16
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
17 class APIs(QObject):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
18 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
19 Class implementing an API storage entity.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
20
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
21 @signal apiPreparationFinished() emitted after the API preparation has finished
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
22 @signal apiPreparationCancelled() emitted after the API preparation has been cancelled
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
23 @signal apiPreparationStarted() emitted after the API preparation has started
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
24 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
25 def __init__(self, language, forPreparation = False, parent = None):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
26 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
27 Constructor
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
28
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
29 @param language language of the APIs object (string)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
30 @param forPreparation flag indicating this object is just needed
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
31 for a preparation process (boolean)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
32 @param parent reference to the parent object (QObject)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
33 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
34 QObject.__init__(self, parent)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
35 self.setObjectName("APIs_%s" % language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
36
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
37 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
38 self.__language = language
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
39 self.__forPreparation = forPreparation
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
40 self.__lexer = Lexers.getLexer(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
41 self.__apifiles = Preferences.getEditorAPI(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
42 self.__apifiles.sort()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
43 if self.__lexer is None:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
44 self.__apis = None
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
45 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
46 self.__apis = QsciAPIs(self.__lexer)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
47 self.connect(self.__apis, SIGNAL("apiPreparationFinished()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
48 self.__apiPreparationFinished)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
49 self.connect(self.__apis, SIGNAL("apiPreparationCancelled()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
50 self.__apiPreparationCancelled)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
51 self.connect(self.__apis, SIGNAL("apiPreparationStarted()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
52 self.__apiPreparationStarted)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
53 self.__loadAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
54
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
55 def __loadAPIs(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
56 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
57 Private method to load the APIs.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
58 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
59 if self.__apis.isPrepared():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
60 # load a prepared API file
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
61 if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
62 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
63 self.__apis.loadPrepared()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
64 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
65 # load the raw files and prepare the API file
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
66 if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
67 self.prepareAPIs(ondemand = True)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
68
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
69 def reloadAPIs(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
70 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
71 Public method to reload the API information.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
72 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
73 if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
74 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
75 self.__loadAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
76
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
77 def getQsciAPIs(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
78 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
79 Public method to get a reference to QsciAPIs object.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
80
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
81 @return reference to the QsciAPIs object (QsciAPIs)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
82 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
83 if not self.__forPreparation and Preferences.getEditor("AutoPrepareAPIs"):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
84 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
85 return self.__apis
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
86
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
87 def __apiPreparationFinished(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
88 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
89 Private method called to save an API, after it has been prepared.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
90 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
91 self.__apis.savePrepared()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
92 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
93 self.emit(SIGNAL('apiPreparationFinished()'))
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
94
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
95 def __apiPreparationCancelled(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
96 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
97 Private method called, after the API preparation process has been cancelled.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
98 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
99 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
100 self.emit(SIGNAL('apiPreparationCancelled()'))
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
101
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
102 def __apiPreparationStarted(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
103 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
104 Private method called, when the API preparation process started.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
105 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
106 self.__inPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
107 self.emit(SIGNAL('apiPreparationStarted()'))
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
108
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
109 def prepareAPIs(self, ondemand = False, rawList = None):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
110 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
111 Public method to prepare the APIs if necessary.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
112
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
113 @keyparam ondemand flag indicating a requested preparation (boolean)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
114 @keyparam rawList list of raw API files (list of strings)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
115 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
116 if self.__apis is None or self.__inPreparation:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
117 return
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
118
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
119 needsPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
120 if ondemand:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
121 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
122 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
123 # check, if a new preparation is necessary
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
124 preparedAPIs = self.__defaultPreparedName()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
125 if preparedAPIs:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
126 preparedAPIsInfo = QFileInfo(preparedAPIs)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
127 if not preparedAPIsInfo.exists():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
128 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
129 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
130 preparedAPIsTime = preparedAPIsInfo.lastModified()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
131 apifiles = sorted(Preferences.getEditorAPI(self.__language))
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
132 if self.__apifiles != apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
133 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
134 for apifile in apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
135 if QFileInfo(apifile).lastModified() > preparedAPIsTime:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
136 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
137 break
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
138
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
139 if needsPreparation:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
140 # do the preparation
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
141 self.__apis.clear()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
142 if rawList:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
143 apifiles = rawList
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
144 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
145 apifiles = Preferences.getEditorAPI(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
146 for apifile in apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
147 self.__apis.load(apifile)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
148 self.__apis.prepare()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
149 self.__apifiles = apifiles
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
150
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
151 def cancelPreparation(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
152 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
153 Public slot to cancel the APIs preparation.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
154 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
155 self.__apis and self.__apis.cancelPreparation()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
156
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
157 def installedAPIFiles(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
158 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
159 Public method to get a list of installed API files.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
160
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
161 @return list of installed API files (list of strings)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
162 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
163 if self.__apis is not None:
291
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
164 if Utilities.isWindowsPlatform():
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
165 from PyQt4 import pyqtconfig
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
166 qsciPath = os.path.join(pyqtconfig._pkg_config["pyqt_mod_dir"], "qsci")
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
167 if os.path.exists(qsciPath):
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
168 # it's the installer
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
169 apidir = os.path.join(qsciPath, "api", self.__lexer.lexer())
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
170 fnames = []
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
171 filist = QDir(apidir).entryInfoList(["*.api"], QDir.Files,
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
172 QDir.IgnoreCase)
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
173 for fi in filist:
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
174 fnames.append(fi.absoluteFilePath())
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
175 return fnames
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
176
362
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
177 return self.__apis.installedAPIFiles()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
178 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
179 return []
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
180
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
181 def __defaultPreparedName(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
182 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
183 Private method returning the default name of a prepared API file.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
184
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
185 @return complete filename for the Prepared APIs file (string)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
186 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
187 if self.__apis is not None:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
188 return self.__apis.defaultPreparedName()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
189 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
190 return ""
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
191
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
192 class APIsManager(QObject):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
193 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
194 Class implementing the APIsManager class, which is the central store for
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
195 API information used by autocompletion and calltips.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
196 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
197 def __init__(self, parent = None):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
198 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
199 Constructor
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
200
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
201 @param parent reference to the parent object (QObject)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
202 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
203 QObject.__init__(self, parent)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
204 self.setObjectName("APIsManager")
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
205
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
206 self.__apis = {}
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
207
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
208 def reloadAPIs(self):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
209 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
210 Public slot to reload the api information.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
211 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
212 for api in list(self.__apis.values()):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
213 api and api.reloadAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
214
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
215 def getAPIs(self, language, forPreparation = False):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
216 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
217 Public method to get an apis object for autocompletion/calltips.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
218
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
219 This method creates and loads an APIs object dynamically upon request.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
220 This saves memory for languages, that might not be needed at the moment.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
221
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
222 @param language the language of the requested api object (string)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
223 @param forPreparation flag indicating the requested api object is just needed
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
224 for a preparation process (boolean)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
225 @return the apis object (APIs)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
226 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
227 if forPreparation:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
228 return APIs(language, forPreparation = forPreparation)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
229 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
230 try:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
231 return self.__apis[language]
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
232 except KeyError:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
233 if language in Lexers.getSupportedLanguages():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
234 # create the api object
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
235 self.__apis[language] = APIs(language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
236 return self.__apis[language]
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
237 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
238 return None

eric ide

mercurial