AssistantEric/APIsManager.py

Fri, 28 Sep 2012 18:00:28 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 28 Sep 2012 18:00:28 +0200
changeset 61
b88fd1352be6
parent 59
2b361d34d241
child 65
71f50b4cc169
permissions
-rw-r--r--

Added "cls" as a parameter that should be discarded for Python2 and Python3.

2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
50
005b6127b978 Updated copyright for 2012.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 40
diff changeset
3 # Copyright (c) 2008 - 2012 Detlev Offenbach <detlev@die-offenbachs.de>
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the APIsManager.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
12 from PyQt4.QtCore import QTimer, QThread, QFileInfo, pyqtSignal, QCoreApplication, \
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
13 QEvent, QDateTime, QObject, Qt
59
2b361d34d241 Fixed an issue causing an exception if QtSql cannot be imported.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
14 try:
2b361d34d241 Fixed an issue causing an exception if QtSql cannot be imported.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
15 from PyQt4.QtSql import QSqlDatabase, QSqlQuery
2b361d34d241 Fixed an issue causing an exception if QtSql cannot be imported.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
16 except ImportError:
2b361d34d241 Fixed an issue causing an exception if QtSql cannot be imported.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
17 # just ignore it because the main plug-in file will deal with it
2b361d34d241 Fixed an issue causing an exception if QtSql cannot be imported.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
18 pass
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from E5Gui.E5Application import e5App
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import QScintilla.Lexers
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
23 from QScintilla.Editor import Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from DocumentationTools.APIGenerator import APIGenerator
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 import Utilities.ModuleParser
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import Utilities
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 import Preferences
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 WorkerStarted = QEvent.User + 2001
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 WorkerFinished = QEvent.User + 2002
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 WorkerAborted = QEvent.User + 2003
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 ApisNameProject = "__Project__"
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
36
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 class DbAPIsWorker(QThread):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Class implementing a worker thread to prepare the API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 populate_api_stmt = """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
42 INSERT INTO api (acWord, context, fullContext, signature, fileId, pictureId)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 VALUES (:acWord, :context, :fullContext, :signature, :fileId, :pictureId)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 populate_del_api_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 DELETE FROM api WHERE fileId = :fileId
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
48 populate_bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
49 INSERT INTO bases (class, baseClasses, fileId)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
50 VALUES (:class, :baseClasses, :fileId)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
51 """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
52 populate_del_bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
53 DELETE FROM bases WHERE fileId = :fileId
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
54 """
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 populate_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 INSERT INTO file (file) VALUES (:file)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 update_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 UPDATE file SET lastRead = :lastRead WHERE file = :file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 file_loaded_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 SELECT lastRead from file WHERE file = :file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 file_id_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 SELECT id FROM file WHERE file = :file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 file_delete_id_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 DELETE FROM file WHERE id = :id
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
72 def __init__(self, proxy, language, apiFiles, projectPath="", refresh=False):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 @param proxy reference to the object that is proxied (DbAPIs)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @param language language of the APIs object (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @param apiFiles list of API files to process (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @param projectPath path of the project. Only needed, if the APIs
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 are extracted out of the sources of a project. (string)
22
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
81 @param refresh flag indicating a refresh of the APIs of one file (boolean)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 QThread.__init__(self)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.setTerminationEnabled(True)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 # Get the AC word separators for all of the languages that the editor supports.
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
88 # This has to be before we create a new thread, because access to GUI elements
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 # is not allowed from non-gui threads.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__wseps = {}
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 for lang in QScintilla.Lexers.getSupportedLanguages():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 lexer = QScintilla.Lexers.getLexer(lang)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 if lexer is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__wseps[lang] = lexer.autoCompletionWordSeparators()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__proxy = proxy
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.__language = language
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__apiFiles = apiFiles[:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.__aborted = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__projectPath = projectPath
22
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
101 self.__refresh = refresh
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def __autoCompletionWordSeparators(self, language):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Private method to get the word separator characters for a language.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @param language language of the APIs object (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @return word separator characters (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 return self.__wseps.get(language, None)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 def abort(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 Public method to ask the thread to stop.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__aborted = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def __loadApiFileIfNewer(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Private method to load an API file, if it is newer than the one read
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 into the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @param apiFile filename of the raw API file (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 query.prepare(self.file_loaded_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 query.bindValue(":file", apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 if query.next() and query.isValid():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 loadTime = QDateTime.fromString(query.value(0), Qt.ISODate)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 loadTime = QDateTime(1970, 1, 1, 0, 0)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 if self.__projectPath:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 modTime = QFileInfo(os.path.join(self.__projectPath, apiFile)).lastModified()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 modTime = QFileInfo(apiFile).lastModified()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
143 basesFile = os.path.splitext(apiFile)[0] + ".bas"
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
144 if os.path.exists(basesFile):
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
145 modTimeBases = QFileInfo(basesFile).lastModified()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
146 if modTimeBases > modTime:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
147 modTime = modTimeBases
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if loadTime < modTime:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__loadApiFile(apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
151 def __classesAttributesApi(self, module):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
152 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
153 Private method to generate class api section for class attributes.
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
154
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
155 @param module module object to get the info from (Module)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
156 @return API information (list of strings)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
157 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
158 api = []
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
159 modulePath = module.name.split('.')
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
160 moduleName = "{0}.".format('.'.join(modulePath))
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
161
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
162 for className in sorted(module.classes.keys()):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
163 _class = module.classes[className]
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
164 classNameStr = "{0}{1}.".format(moduleName, className)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
165 for variable in sorted(_class.attributes.keys()):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
166 if not _class.attributes[variable].isPrivate():
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
167 if _class.attributes[variable].isPublic():
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
168 id = Editor.AttributeID
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
169 elif _class.attributes[variable].isProtected():
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
170 id = Editor.AttributeProtectedID
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
171 else:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
172 id = Editor.AttributePrivateID
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
173 api.append('{0}{1}?{2:d}'.format(classNameStr, variable, id))
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
174 return api
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
175
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 def __loadApiFile(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 Private method to read a raw API file into the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param apiFile filename of the raw API file (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
182 apis = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
183 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
184
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 if self.__language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 module = Utilities.ModuleParser.readModule(
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
188 os.path.join(self.__projectPath, apiFile),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
189 basename=self.__projectPath + os.sep,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
190 caching=False)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 language = module.getType()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 if language:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 apiGenerator = APIGenerator(module)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 apis = apiGenerator.genAPI(True, "", True)
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
195 if os.path.basename(apiFile).startswith("Ui_"):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
196 # it is a forms source file, extract public attributes as well
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
197 apis.extend(self.__classesAttributesApi(module))
40
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
198 try:
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
199 basesDict = apiGenerator.genBases(True)
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
200 for baseEntry in basesDict:
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
201 if basesDict[baseEntry]:
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
202 bases.append("{0} {1}\n".format(
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
203 baseEntry, " ".join(sorted(basesDict[baseEntry]))))
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
204 except AttributeError:
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
205 # eric 5.1 doesn't have this method
f22c4a330026 Fixed an issue which would cause a traceback if the plug-in is used with eric 5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
206 pass
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 except (IOError, ImportError):
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
208 pass
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 apis = Utilities.readEncodedFile(apiFile)[0].splitlines(True)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 except (IOError, UnicodeError):
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
213 pass
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
214 try:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
215 basesFile = os.path.splitext(apiFile)[0] + ".bas"
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
216 if os.path.exists(basesFile):
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
217 bases = Utilities.readEncodedFile(basesFile)[0].splitlines(True)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
218 except (IOError, UnicodeError):
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
219 pass
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 language = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 if len(apis) > 0:
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
223 self.__storeApis(apis, bases, apiFile, language)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
225 def __storeApis(self, apis, bases, apiFile, language):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 Private method to put the API entries into the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 @param apis list of api entries (list of strings)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
230 @param bases list of base class entries (list of strings)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 @param apiFile filename of the file read to get the APIs (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 @param language programming language of the file of the APIs (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 if language:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 wseps = self.__autoCompletionWordSeparators(language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 wseps = self.__proxy.autoCompletionWordSeparators()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 if wseps is None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 # step 1: create entry in file table and get the ID
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 query.prepare(self.populate_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 query.bindValue(":file", apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 query.prepare(self.file_id_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 query.bindValue(":file", apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 query.next()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 id = int(query.value(0))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 # step 2: delete all entries belonging to this file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 query.prepare(self.populate_del_api_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 query.bindValue(":fileId", id)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
260 query.prepare(self.populate_del_bases_stmt)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
261 query.bindValue(":fileId", id)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
262 query.exec_()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
263
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
264 # step 3: load the given API info
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 query.prepare(self.populate_api_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 for api in apis:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 if self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 api = api.strip()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 if len(api) == 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 continue
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 b = api.find('(')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 if b == -1:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 path = api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 sig = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 path = api[:b]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 sig = api[b:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 while len(path) > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 acWord = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 context = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 fullContext = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 pictureId = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 # search for word separators
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 index = len(path)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 while index > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 index -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 found = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 for wsep in wseps:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 if path[:index].endswith(wsep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 found = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 if found:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 if acWord == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 # completion found
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 acWord = path[index:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 path = path[:(index - len(wsep))]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 index = len(path)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 fullContext = path
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 context = path
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 acWord, pictureId = acWord.split("?", 1)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 except ValueError:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 pass
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 context = path[index:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 # none found?
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 if acWord == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 acWord = path
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 path = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 query.bindValue(":acWord", acWord)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 query.bindValue(":fullContext", fullContext)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 query.bindValue(":signature", sig)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 query.bindValue(":fileId", id)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 query.bindValue(":pictureId", pictureId)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 sig = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
327 # step 4: load the given base classes info
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
328 query.prepare(self.populate_bases_stmt)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
329 for base in bases:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
330 if self.__aborted:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
331 break
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
332
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
333 base = base.strip()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
334 if len(base) == 0:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
335 continue
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
336
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
337 class_, baseClasses = base.split(" ", 1)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
338 query.bindValue(":class", class_)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
339 query.bindValue(":baseClasses", baseClasses)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
340 query.bindValue(":fileId", id)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
341 query.exec_()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
342
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 if not self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 # step 4: update the file entry
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 query.prepare(self.update_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 query.bindValue(":lastRead", QDateTime.currentDateTime())
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 query.bindValue(":file", apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 if self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 db.rollback()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 def __deleteApiFile(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 Private method to delete all references to an api file.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 @param apiFile filename of the raw API file (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 # step 1: get the ID belonging to the api file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 query.prepare(self.file_id_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 query.bindValue(":file", apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 query.next()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 id = int(query.value(0))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
374 # step 2: delete all API entries belonging to this file
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 query.prepare(self.populate_del_api_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 query.bindValue(":fileId", id)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
379 # step 3: delete all base classes entries belonging to this file
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
380 query.prepare(self.populate_del_bases_stmt)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
381 query.bindValue(":fileId", id)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
382 query.exec_()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
383
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
384 # step 4: delete the file entry
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 query.prepare(self.file_delete_id_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 query.bindValue(":id", id)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 def run(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 Public method to perform the threads work.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 QCoreApplication.postEvent(self.__proxy, QEvent(QEvent.Type(WorkerStarted)))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 if db.isValid() and db.isOpen():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 # step 1: remove API files not wanted any longer
22
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
401 if not self.__refresh:
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
402 loadedApiFiles = self.__proxy.getApiFiles()
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
403 for apiFile in loadedApiFiles:
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
404 if not self.__aborted and apiFile not in self.__apiFiles:
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
405 self.__deleteApiFile(apiFile)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 # step 2: (re-)load api files
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 for apiFile in self.__apiFiles:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 if not self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 self.__loadApiFileIfNewer(apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 if self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 QCoreApplication.postEvent(self.__proxy, QEvent(QEvent.Type(WorkerAborted)))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 QCoreApplication.postEvent(self.__proxy, QEvent(QEvent.Type(WorkerFinished)))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
417
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 class DbAPIs(QObject):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 Class implementing an API storage entity.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 @signal apiPreparationFinished() emitted after the API preparation has finished
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 @signal apiPreparationStarted() emitted after the API preparation has started
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
424 @signal apiPreparationCancelled() emitted after the API preparation has been
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 cancelled
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 """
19
7eb775bb326b Added code to use the new style signal API depending upon the eric5 version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
427 apiPreparationFinished = pyqtSignal()
7eb775bb326b Added code to use the new style signal API depending upon the eric5 version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
428 apiPreparationStarted = pyqtSignal()
7eb775bb326b Added code to use the new style signal API depending upon the eric5 version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
429 apiPreparationCancelled = pyqtSignal()
7eb775bb326b Added code to use the new style signal API depending upon the eric5 version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
430
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
431 DB_VERSION = 4
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 create_mgmt_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 CREATE TABLE mgmt
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 (format INTEGER)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 drop_mgmt_stmt = """DROP TABLE IF EXISTS mgmt"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 create_api_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 CREATE TABLE api
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
441 (acWord TEXT,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
442 context TEXT,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
443 fullContext TEXT,
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 signature TEXT,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 fileId INTEGER,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 pictureId INTEGER,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 UNIQUE(acWord, fullContext, signature) ON CONFLICT IGNORE
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 drop_api_stmt = """DROP TABLE IF EXISTS api"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
452 create_bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
453 CREATE TABLE bases
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
454 (class TEXT UNIQUE ON CONFLICT IGNORE,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
455 baseClasses TEXT,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
456 fileId INTEGER
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
457 )
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
458 """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
459 drop_bases_stmt = """DROP TABLE IF EXISTS bases"""
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
460
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 create_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 CREATE TABLE file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 (id INTEGER PRIMARY KEY AUTOINCREMENT,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 file TEXT UNIQUE ON CONFLICT IGNORE,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 lastRead TIMESTAMP DEFAULT CURRENT_TIMESTAMP
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 drop_file_stmt = """DROP TABLE IF EXISTS file"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 create_acWord_idx = """CREATE INDEX acWord_idx on api (acWord)"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 drop_acWord_idx = """DROP INDEX IF EXISTS acWord_idx"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 create_context_idx = """CREATE INDEX context_idx on api (context)"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 drop_context_idx = """DROP INDEX IF EXISTS context_idx"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 create_fullContext_idx = """CREATE INDEX fullContext_idx on api (fullContext)"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 drop_fullContext_idx = """DROP INDEX IF EXISTS fullContext_idx"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
479 create_bases_idx = """CREATE INDEX base_idx on bases (class)"""
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
480 drop_bases_idx = """DROP INDEX IF EXISTS base_idx"""
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
481
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 create_file_idx = """CREATE INDEX file_idx on file (file)"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 drop_file_idx = """DROP INDEX IF EXISTS file_idx"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 api_files_stmt = """
20
3338ae0c05a9 Fixed a bug causing project API files not to be cleared properly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
486 SELECT file FROM file
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 ac_stmt = """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
490 SELECT DISTINCT acWord, fullContext, pictureId FROM api
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 WHERE acWord GLOB :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 ORDER BY acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 ac_context_stmt = """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
495 SELECT DISTINCT acWord, fullContext, pictureId FROM api
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 WHERE context = :context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 ORDER BY acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 """
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
499 ac_context_word_stmt = """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
500 SELECT DISTINCT acWord, fullContext, pictureId FROM api
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
501 WHERE acWord GLOB :acWord AND context = :context
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
502 ORDER BY acWord
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
503 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
504 bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
505 SELECT baseClasses from bases
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
506 WHERE class = :class
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
507 """
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 ct_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 ct_context_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 AND context = :context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 ct_fullContext_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 AND fullContext = :fullContext
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 format_select_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 SELECT format FROM mgmt
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 mgmt_insert_stmt = """
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
526 INSERT INTO mgmt (format) VALUES ({0:d})
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
527 """.format(DB_VERSION)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
529 def __init__(self, language, parent=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 @param language language of the APIs object (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 @param parent reference to the parent object (QObject)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 QObject.__init__(self, parent)
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
537 self.setObjectName("DbAPIs_{0}".format(language))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 self.__inPreparation = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 self.__worker = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 self.__workerQueue = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 self.__language = language
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 if self.__language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 self.__initAsProject()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 self.__initAsLanguage()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 def __initAsProject(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 Private method to initialize as a project API object.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 self.__lexer = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 self.__project = e5App().getObject("Project")
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
556 self.__project.projectOpened.connect(self.__projectOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
557 self.__project.newProject.connect(self.__projectOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
558 self.__project.projectClosed.connect(self.__projectClosed)
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
559 try:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
560 self.__project.projectFormCompiled.connect(self.__projectFormCompiled)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
561 except AttributeError:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
562 # older eric5 versions don't have this signal
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
563 pass
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 if self.__project.isOpen():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 self.__projectOpened()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 def __initAsLanguage(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 Private method to initialize as a language API object.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 """
26
b48e3ff07482 Fixed an issue where the APIManager wasn't reacting to Python2 types.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
571 if self.__language in ["Python", "Python2", "Python3"]:
61
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
572 self.__discardFirst = ["self", "cls"]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 else:
61
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
574 self.__discardFirst = []
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 self.__lexer = QScintilla.Lexers.getLexer(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 self.__apifiles = Preferences.getEditorAPI(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 self.__apifiles.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 if self.__lexer is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 self.__openAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 def _apiDbName(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 Protected method to determine the name of the database file.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 @return name of the database file (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 if self.__language == ApisNameProject:
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
588 return os.path.join(self.__project.getProjectManagementDir(),
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 "project-apis.db")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 else:
4
eb4cc276920c Moved the language API databases into a subdirectory of the config dir.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
591 apiDir = os.path.join(Utilities.getConfigDir(), "APIs")
eb4cc276920c Moved the language API databases into a subdirectory of the config dir.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
592 if not os.path.exists(apiDir):
eb4cc276920c Moved the language API databases into a subdirectory of the config dir.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
593 os.makedirs(apiDir)
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
594 return os.path.join(apiDir, "{0}-api.db".format(self.__language))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 def close(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 Public method to close the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 self.__workerQueue = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 self.__worker.abort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 self.__worker.wait(5000)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 if self.__worker is not None and \
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 not self.__worker.isFinished():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 self.__worker.terminate()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 self.__worker.wait(5000)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 QSqlDatabase.database(self.__language).close()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 QSqlDatabase.removeDatabase(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 def __openApiDb(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 Private method to open the API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 db = QSqlDatabase.database(self.__language, False)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 if not db.isValid():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 # the database connection is a new one
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 db = QSqlDatabase.addDatabase("QSQLITE", self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 db.setDatabaseName(self._apiDbName())
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 db.open()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 def __createApiDB(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 Private method to create an API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 # step 1: drop old tables
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 query.exec_(self.drop_mgmt_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 query.exec_(self.drop_api_stmt)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
636 query.exec_(self.drop_bases_stmt)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 query.exec_(self.drop_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 # step 2: drop old indices
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 query.exec_(self.drop_acWord_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 query.exec_(self.drop_context_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 query.exec_(self.drop_fullContext_idx)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
642 query.exec_(self.drop_bases_idx)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 query.exec_(self.drop_file_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 # step 3: create tables
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 query.exec_(self.create_api_stmt)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
646 query.exec_(self.create_bases_stmt)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 query.exec_(self.create_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 query.exec_(self.create_mgmt_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 query.exec_(self.mgmt_insert_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 # step 4: create indices
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 query.exec_(self.create_acWord_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 query.exec_(self.create_context_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 query.exec_(self.create_fullContext_idx)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
654 query.exec_(self.create_bases_idx)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 query.exec_(self.create_file_idx)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 def getApiFiles(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 Public method to get a list of API files loaded into the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 @return list of API filenames (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 apiFiles = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 query.exec_(self.api_files_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 while query.next():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 apiFiles.append(query.value(0))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 return apiFiles
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 def __isPrepared(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 Private method to check, if the database has been prepared.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 @return flag indicating the prepared status (boolean)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 prepared = len(db.tables()) > 0
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 if prepared:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 prepared = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 ok = query.exec_(self.format_select_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 if ok:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 query.next()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 format = int(query.value(0))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 if format >= self.DB_VERSION:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 prepared = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 return prepared
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
705 def getCompletions(self, start=None, context=None, followHierarchy=False):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 Public method to determine the possible completions.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
709 @keyparam start string giving the start of the word to be
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 completed (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 @keyparam context string giving the context (e.g. classname)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 to be completed (string)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
713 @keyparam followHierarchy flag indicating to follow the hierarchy of
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
714 base classes (boolean)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 @return list of dictionaries with possible completions (key 'completion'
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 contains the completion (string), key 'context'
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 contains the context (string) and key 'pictureId'
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 contains the ID of the icon to be shown (string))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 completions = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 if db.isOpen() and not self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 query = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
728 if start is not None and context is not None:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
729 query = QSqlQuery(db)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
730 query.prepare(self.ac_context_word_stmt)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
731 query.bindValue(":acWord", start + '*')
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
732 query.bindValue(":context", context)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
733 elif start is not None:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 query.prepare(self.ac_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 query.bindValue(":acWord", start + '*')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 elif context is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 query.prepare(self.ac_context_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 if query is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 while query.next():
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
745 completions.append({"completion": query.value(0),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
746 "context": query.value(1),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
747 "pictureId": query.value(2)})
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 db.commit()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
751
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
752 if followHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
753 query = QSqlQuery(db)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
754 query.prepare(self.bases_stmt)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
755 query.bindValue(":class", context)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
756 query.exec_()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
757 if query.next():
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
758 bases = query.value(0).split()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
759 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
760 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
761 for base in bases:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
762 completions.extend(self.getCompletions(start, base,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
763 followHierarchy=True))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 return completions
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
767 def getCalltips(self, acWord, commas, context=None, fullContext=None,
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
768 showContext=True, followHierarchy=False):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 Public method to determine the calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 @param acWord function to get calltips for (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 @param commas minimum number of commas contained in the calltip (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 @param context string giving the context (e.g. classname) (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 @param fullContext string giving the full context (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 @param showContext flag indicating to show the calltip context (boolean)
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
777 @keyparam followHierarchy flag indicating to follow the hierarchy of
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
778 base classes (boolean)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 @return list of calltips (list of string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 calltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 db = QSqlDatabase.database(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 if db.isOpen() and not self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 if self.autoCompletionWordSeparators():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 contextSeparator = self.autoCompletionWordSeparators()[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 contextSeparator = " "
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 if fullContext:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 query.prepare(self.ct_fullContext_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 query.bindValue(":fullContext", fullContext)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795 elif context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 query.prepare(self.ct_context_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
799 query.prepare(self.ct_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 query.bindValue(":acWord", acWord)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 query.exec_()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
802 while query.next():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803 word = query.value(0)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 sig = query.value(1)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 fullCtx = query.value(2)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 if sig:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 if self.__discardFirst:
61
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
808 sig = "({0}".format(sig[1:])
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
809 for discard in self.__discardFirst:
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
810 sig = sig.replace(discard, "", 1)
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
811 sig = sig.strip(", \t\r\n")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 if self.__enoughCommas(sig, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 if showContext:
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
814 calltips.append("{0}{1}{2}{3}".format(
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
815 fullCtx, contextSeparator, word, sig))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 else:
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
817 calltips.append("{0}{1}".format(word, sig))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
820 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
821
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
822 if followHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
823 query = QSqlQuery(db)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
824 query.prepare(self.bases_stmt)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
825 query.bindValue(":class", context)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
826 query.exec_()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
827 if query.next():
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
828 bases = query.value(0).split()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
829 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
830 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
831 for base in bases:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
832 calltips.extend(self.getCalltips(acWord, commas, context=base,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
833 showContext=showContext,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
834 followHierarchy=True))
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
835
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
836 if context and len(calltips) == 0 and not followHierarchy:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
837 # nothing found, try without a context
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
838 calltips = self.getCalltips(acWord, commas, showContext=showContext)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
839
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840 return calltips
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
841
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
842 def __enoughCommas(self, s, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
843 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
844 Private method to determine, if the given string contains enough commas.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
845
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
846 @param s string to check (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
847 @param commas number of commas to check for (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 @return flag indicating, that there are enough commas (boolean)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850 end = s.find(')')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
851
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 if end < 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853 return False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
854
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
855 w = s[:end]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 return w.count(',') >= commas
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
857
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
858 def __openAPIs(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
859 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
860 Private method to open the API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
861 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
862 self.__openApiDb()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863 if not self.__isPrepared():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
864 self.__createApiDB()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
865
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
866 # prepare the database if neccessary
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
867 self.prepareAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
868
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
869 def __getProjectFormSources(self, normalized=False):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
870 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
871 Private method to get the source files for the project forms.
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
872
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
873 @keyparam normalized flag indicating a normalized filename is wanted (boolean)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
874 @return list of project form sources (list of strings)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
875 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
876 if self.__project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2", "Python3"]:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
877 sourceExt = ".py"
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
878 elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby":
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
879 sourceExt = ".rb"
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
880 else:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
881 return []
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
882
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
883 formsSources = []
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
884 for fn in self.__project.pdata["FORMS"]:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
885 ofn = os.path.splitext(fn)[0]
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
886 dirname, filename = os.path.split(ofn)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
887 formSource = os.path.join(dirname, "Ui_" + filename + sourceExt)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
888 if normalized:
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
889 formSource = os.path.join(self.__project.getProjectPath(), formSource)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
890 formsSources.append(formSource)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
891 return formsSources
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
892
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
893 def prepareAPIs(self, rawList=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
894 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 Public method to prepare the APIs if neccessary.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
897 @keyparam rawList list of raw API files (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
898 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
899 if self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
900 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
901
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
902 projectPath = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 if rawList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 apiFiles = rawList[:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905 elif self.__language == ApisNameProject:
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
906 apiFiles = self.__project.getSources()[:]
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
907 apiFiles.extend(
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
908 [f for f in self.__getProjectFormSources() if f not in apiFiles])
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
909 projectPath = self.__project.getProjectPath()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911 apiFiles = Preferences.getEditorAPI(self.__language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 self.__worker = DbAPIsWorker(self, self.__language, apiFiles, projectPath)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
913 self.__worker.start()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
915 def __processQueue(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
917 Private slot to process the queue of files to load.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
918 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
919 if self.__worker is not None and self.__worker.isFinished():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
920 self.__worker = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
921
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922 if self.__worker is None and len(self.__workerQueue) > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
923 apiFiles = [self.__workerQueue.pop(0)]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
924 if self.__language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
925 projectPath = self.__project.getProjectPath()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
926 apiFiles = [apiFiles[0].replace(projectPath + os.sep, "")]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
927 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
928 projectPath = ""
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
929 self.__worker = DbAPIsWorker(self, self.__language, apiFiles, projectPath,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
930 refresh=True)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
931 self.__worker.start()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
932
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
933 def getLexer(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
934 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
935 Public method to return a reference to our lexer object.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
936
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
937 @return reference to the lexer object (QScintilla.Lexers.Lexer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
938 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
939 return self.__lexer
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
940
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
941 def autoCompletionWordSeparators(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
942 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
943 Private method to get the word separator characters.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
944
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
945 @return word separator characters (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
946 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
947 if self.__lexer:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
948 return self.__lexer.autoCompletionWordSeparators()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
949 return None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
950
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
951 def event(self, evt):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
952 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
953 Protected method to handle events from the worker thread.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
954
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
955 @param evt reference to the event object (QEvent)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
956 @return flag indicating, if the event was handled (boolean)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
957 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
958 if evt.type() == WorkerStarted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
959 self.__inPreparation = True
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
960 self.apiPreparationStarted.emit()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
961 return True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
962
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
963 elif evt.type() == WorkerFinished:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
964 self.__inPreparation = False
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
965 self.apiPreparationFinished.emit()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
966 QTimer.singleShot(0, self.__processQueue)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
967 return True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
968
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
969 elif evt.type() == WorkerAborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
970 self.__inPreparation = False
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
971 self.apiPreparationCancelled.emit()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
972 QTimer.singleShot(0, self.__processQueue)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
973 return True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
974
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
975 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976 return QObject.event(self, evt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
978 ########################################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
979 ## project related stuff below
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
980 ########################################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
981
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
982 def __projectOpened(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
983 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
984 Private slot to perform actions after a project has been opened.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
985 """
61
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
986 if self.__project.getProjectLanguage() in ["Python", "Python2", "Python3"]:
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
987 self.__discardFirst = ["self", "cls"]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
988 else:
61
b88fd1352be6 Added "cls" as a parameter that should be discarded for Python2 and Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
989 self.__discardFirst = []
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
990 self.__lexer = QScintilla.Lexers.getLexer(self.__project.getProjectLanguage())
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
991 self.__openAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
992
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
993 def __projectClosed(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
994 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
995 Private slot to perform actions after a project has been closed.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
996 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
997 self.close()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
998
54
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
999 def __projectFormCompiled(self, filename):
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1000 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1001 Private slot to handle the projectFormCompiled signal.
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1002
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1003 @param filename name of the form file that was compiled (string)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1004 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1005 self.__workerQueue.append(filename)
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1006 self.__processQueue()
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1007
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1008 def editorSaved(self, filename):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1009 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1010 Public slot to handle the editorSaved signal.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1011
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1012 @param filename name of the file that was saved (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1013 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1014 if self.__project.isProjectSource(filename):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1015 self.__workerQueue.append(filename)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1016 self.__processQueue()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1017
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1018
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1019 class APIsManager(QObject):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1020 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1021 Class implementing the APIsManager class, which is the central store for
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1022 API information used by autocompletion and calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1023 """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1024 def __init__(self, parent=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1025 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1026 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1027
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1028 @param parent reference to the parent object (QObject)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1029 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1030 QObject.__init__(self, parent)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1031 self.setObjectName("APIsManager")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1032
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1033 # initialize the apis dictionary
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1034 self.__apis = {}
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1035
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1036 def reloadAPIs(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1037 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1038 Public slot to reload the api information.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1039 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1040 for api in list(self.__apis.values()):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 api and api.prepareAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1042
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1043 def getAPIs(self, language):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1044 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1045 Public method to get an apis object for autocompletion/calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1046
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1047 This method creates and loads an APIs object dynamically upon request.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1048 This saves memory for languages, that might not be needed at the moment.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1049
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1050 @param language the language of the requested api object (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1051 @return the apis object (APIs)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1052 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1053 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1054 return self.__apis[language]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1055 except KeyError:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1056 if language in QScintilla.Lexers.getSupportedLanguages() or \
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1057 language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1058 # create the api object
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1059 self.__apis[language] = DbAPIs(language)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1060 return self.__apis[language]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1061 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1062 return None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1063
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1064 def deactivate(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1065 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1066 Public method to perform actions upon deactivation.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1067 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1068 for apiLang in self.__apis:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1069 self.__apis[apiLang].close()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1070 self.__apis[apiLang] = None

eric ide

mercurial