Wed, 23 Jun 2010 20:01:31 +0200
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 |