QScintilla/APIsManager.py

Sun, 05 Sep 2010 15:26:43 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Sep 2010 15:26:43 +0200
branch
5_0_x
changeset 568
8cd88abbf946
parent 493
9b1e1a1212e3
child 792
a13346916170
permissions
-rw-r--r--

Prepared new release.

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
493
9b1e1a1212e3 Fixed an issue in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
10 import os
9b1e1a1212e3 Fixed an issue in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
11
362
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
12 from PyQt4.QtCore import *
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
13 from PyQt4.Qsci import QsciAPIs
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
14
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
15 from . import Lexers
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
16 import Preferences
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
17 import Utilities
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 APIs(QObject):
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 Class implementing an API storage entity.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
22
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
23 @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
24 @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
25 @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
26 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
27 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
28 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
29 Constructor
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
30
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
31 @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
32 @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
33 for a preparation process (boolean)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
34 @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
35 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
36 QObject.__init__(self, parent)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
37 self.setObjectName("APIs_%s" % language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
38
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
39 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
40 self.__language = language
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
41 self.__forPreparation = forPreparation
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
42 self.__lexer = Lexers.getLexer(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
43 self.__apifiles = Preferences.getEditorAPI(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
44 self.__apifiles.sort()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
45 if self.__lexer is None:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
46 self.__apis = None
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
47 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
48 self.__apis = QsciAPIs(self.__lexer)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
49 self.connect(self.__apis, SIGNAL("apiPreparationFinished()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
50 self.__apiPreparationFinished)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
51 self.connect(self.__apis, SIGNAL("apiPreparationCancelled()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
52 self.__apiPreparationCancelled)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
53 self.connect(self.__apis, SIGNAL("apiPreparationStarted()"),
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
54 self.__apiPreparationStarted)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
55 self.__loadAPIs()
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 def __loadAPIs(self):
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 Private method to load the APIs.
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
60 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
61 if self.__apis.isPrepared():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
62 # load a prepared API file
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
63 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
64 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
65 self.__apis.loadPrepared()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
66 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
67 # 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
68 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
69 self.prepareAPIs(ondemand = True)
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 def reloadAPIs(self):
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 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
74 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
75 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
76 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
77 self.__loadAPIs()
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 def getQsciAPIs(self):
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 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
82
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
83 @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
84 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
85 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
86 self.prepareAPIs()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
87 return self.__apis
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 def __apiPreparationFinished(self):
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 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
92 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
93 self.__apis.savePrepared()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
94 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
95 self.emit(SIGNAL('apiPreparationFinished()'))
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 def __apiPreparationCancelled(self):
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 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
100 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
101 self.__inPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
102 self.emit(SIGNAL('apiPreparationCancelled()'))
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 def __apiPreparationStarted(self):
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 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
107 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
108 self.__inPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
109 self.emit(SIGNAL('apiPreparationStarted()'))
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 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
112 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
113 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
114
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
115 @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
116 @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
117 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
118 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
119 return
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
120
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
121 needsPreparation = False
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
122 if ondemand:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
123 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
124 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
125 # 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
126 preparedAPIs = self.__defaultPreparedName()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
127 if preparedAPIs:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
128 preparedAPIsInfo = QFileInfo(preparedAPIs)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
129 if not preparedAPIsInfo.exists():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
130 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
131 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
132 preparedAPIsTime = preparedAPIsInfo.lastModified()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
133 apifiles = sorted(Preferences.getEditorAPI(self.__language))
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
134 if self.__apifiles != apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
135 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
136 for apifile in apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
137 if QFileInfo(apifile).lastModified() > preparedAPIsTime:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
138 needsPreparation = True
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
139 break
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
140
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
141 if needsPreparation:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
142 # do the preparation
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
143 self.__apis.clear()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
144 if rawList:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
145 apifiles = rawList
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
146 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
147 apifiles = Preferences.getEditorAPI(self.__language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
148 for apifile in apifiles:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
149 self.__apis.load(apifile)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
150 self.__apis.prepare()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
151 self.__apifiles = apifiles
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 def cancelPreparation(self):
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 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
156 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
157 self.__apis and self.__apis.cancelPreparation()
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 def installedAPIFiles(self):
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 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
162
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
163 @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
164 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
165 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
166 if Utilities.isWindowsPlatform():
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
167 from PyQt4 import pyqtconfig
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
168 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
169 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
170 # it's the installer
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
171 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
172 fnames = []
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
173 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
174 QDir.IgnoreCase)
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
175 for fi in filist:
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
176 fnames.append(fi.absoluteFilePath())
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
177 return fnames
aaf3f18c5797 Fixed another issue when using the PyQt4 windows installer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
178
362
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
179 return self.__apis.installedAPIFiles()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
180 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
181 return []
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 def __defaultPreparedName(self):
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 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
186
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
187 @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
188 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
189 if self.__apis is not None:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
190 return self.__apis.defaultPreparedName()
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
191 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
192 return ""
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 APIsManager(QObject):
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
195 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
196 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
197 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
198 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
199 def __init__(self, parent = None):
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 Constructor
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 @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
204 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
205 QObject.__init__(self, parent)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
206 self.setObjectName("APIsManager")
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 self.__apis = {}
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 def reloadAPIs(self):
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 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
213 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
214 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
215 api and api.reloadAPIs()
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 def getAPIs(self, language, forPreparation = False):
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 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
220
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
221 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
222 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
223
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
224 @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
225 @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
226 for a preparation process (boolean)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
227 @return the apis object (APIs)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
228 """
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
229 if forPreparation:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
230 return APIs(language, forPreparation = forPreparation)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
231 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
232 try:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
233 return self.__apis[language]
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
234 except KeyError:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
235 if language in Lexers.getSupportedLanguages():
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
236 # create the api object
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
237 self.__apis[language] = APIs(language)
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
238 return self.__apis[language]
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
239 else:
e09ff98eb4d1 Fixed a missing import in APIsManager.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
240 return None

eric ide

mercurial