AssistantEric/APIsManager.py

Thu, 30 Dec 2021 11:19:54 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 30 Dec 2021 11:19:54 +0100
branch
eric7
changeset 186
c228779ea15d
parent 180
89ff060ef0d9
child 190
3104a5a3ea13
permissions
-rw-r--r--

Updated copyright for 2022.

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
186
c228779ea15d Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 180
diff changeset
3 # Copyright (c) 2008 - 2022 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
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
10 import contextlib
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
13 from PyQt6.QtCore import (
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
14 QTimer, QThread, QFileInfo, pyqtSignal, QDateTime, QObject, Qt
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
15 )
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
16 with contextlib.suppress(ImportError):
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
17 from PyQt6.QtSql import QSqlDatabase, QSqlQuery
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
19 from EricWidgets.EricApplication import ericApp
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import QScintilla.Lexers
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
23 import Globals
68
44e1af4dc5ad Fixed a serious bug.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
24 import Utilities.ModuleParser
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 import Utilities
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 import Preferences
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
28 WorkerStatusStarted = 2001
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
29 WorkerStatusFinished = 2002
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
30 WorkerStatusAborted = 2003
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
31 WorkerStatusFile = 2004
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 ApisNameProject = "__Project__"
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
35
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 class DbAPIsWorker(QThread):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Class implementing a worker thread to prepare the API database.
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
39
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
40 @signal processing(status, file) emitted to indicate the processing status
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
41 (one of WorkerStatus..., string)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
43 processing = pyqtSignal(int, str)
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
44
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 populate_api_stmt = """
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
46 INSERT INTO api (
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
47 acWord, context, fullContext, signature, fileId, pictureId)
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
48 VALUES (
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
49 :acWord, :context, :fullContext, :signature, :fileId, :pictureId)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 populate_del_api_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 DELETE FROM api WHERE fileId = :fileId
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
54 populate_bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
55 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
56 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
57 """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
58 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
59 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
60 """
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 populate_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 INSERT INTO file (file) VALUES (:file)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 update_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 UPDATE file SET lastRead = :lastRead WHERE file = :file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
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_loaded_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 SELECT lastRead from file WHERE file = :file
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 file_id_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 SELECT id FROM file WHERE file = :file
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 file_delete_id_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 DELETE FROM file WHERE id = :id
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
77
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
78 api_files_stmt = """
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
79 SELECT file FROM file
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
80 """
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
82 def __init__(self, proxy, language, apiFiles, dbName, projectPath="",
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
83 refresh=False, projectType=""):
2
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 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
87 @param proxy reference to the object that is proxied
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
88 @type DbAPIs
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
89 @param language language of the APIs object
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
90 @type str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
91 @param apiFiles list of API files to process
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
92 @type list of str
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
93 @param dbName path name of the database file
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
94 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 @param projectPath path of the project. Only needed, if the APIs
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
96 are extracted out of the sources of a project.
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
97 @type str
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
98 @param refresh flag indicating a refresh of the APIs of one file
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
99 @type bool
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
100 @param projectType type of the project
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
101 @type str
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 QThread.__init__(self)
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 self.setTerminationEnabled(True)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
107 # Get the AC word separators for all of the languages that the editor
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
108 # supports. This has to be before we create a new thread, because
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
109 # access to GUI elements is not allowed from non-GUI threads.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__wseps = {}
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 for lang in QScintilla.Lexers.getSupportedLanguages():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 lexer = QScintilla.Lexers.getLexer(lang)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 if lexer is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__wseps[lang] = lexer.autoCompletionWordSeparators()
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.__proxy = proxy
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.__language = language
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
118 self.__projectType = projectType
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.__apiFiles = apiFiles[:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__aborted = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__projectPath = projectPath
22
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
122 self.__refresh = refresh
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
123
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
124 self.__databaseName = dbName
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
125
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
126 if self.__projectType:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
127 self.__connectionName = "{0}_{1}_{2}".format(
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
128 self.__language, self.__projectType, id(self))
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
129 else:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
130 self.__connectionName = "{0}_{1}".format(
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
131 self.__language, id(self))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def __autoCompletionWordSeparators(self, language):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 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
136
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
137 @param language language of the APIs object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
138 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
139 @return word separator characters
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
140 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
142 if language:
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
143 return self.__wseps.get(language, None)
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
144 else:
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
145 return self.__proxy.autoCompletionWordSeparators()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def abort(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 Public method to ask the thread to stop.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.__aborted = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def __loadApiFileIfNewer(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 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
156 into the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
158 @param apiFile filename of the raw API file
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
159 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
161 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 query.prepare(self.file_loaded_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
167 query.exec()
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
168 loadTime = (
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
169 QDateTime.fromString(query.value(0), Qt.DateFormat.ISODate)
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
170 if query.next() and query.isValid() else
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
171 # __IGNORE_WARNING_M513__
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
172 QDateTime(1970, 1, 1, 0, 0)
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
173 )
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
174 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 if self.__projectPath:
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
179 modTime = (
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
180 QFileInfo(os.path.join(self.__projectPath, apiFile))
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
181 .lastModified()
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
182 )
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 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
185 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
186 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
187 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
188 if modTimeBases > modTime:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
189 modTime = modTimeBases
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 if loadTime < modTime:
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
191 self.processing.emit(WorkerStatusFile, apiFile)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.__loadApiFile(apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193
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
194 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
195 """
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 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
197
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
198 @param module module object to get the info from
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
199 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
200 @return API information
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
201 @rtype list of str
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
202 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
203 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
204 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
205 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
206
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
207 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
208 _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
209 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
210 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
211 if not _class.attributes[variable].isPrivate():
66
f57b151c9761 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 65
diff changeset
212 from QScintilla.Editor import Editor
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
213 if _class.attributes[variable].isPublic():
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
214 iconId = Editor.AttributeID
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
215 elif _class.attributes[variable].isProtected():
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
216 iconId = Editor.AttributeProtectedID
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
217 else:
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
218 iconId = Editor.AttributePrivateID
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
219 api.append('{0}{1}?{2:d}'.format(classNameStr, variable,
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
220 iconId))
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
221 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
222
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 def __loadApiFile(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 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
226
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
227 @param apiFile filename of the raw API file
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
228 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
230 apis = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
231 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
232
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 if self.__language == ApisNameProject:
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
234 with contextlib.suppress(OSError, ImportError):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 module = Utilities.ModuleParser.readModule(
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
236 os.path.join(self.__projectPath, apiFile),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
237 basename=self.__projectPath + os.sep,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
238 caching=False)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 language = module.getType()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 if language:
66
f57b151c9761 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 65
diff changeset
241 from DocumentationTools.APIGenerator import APIGenerator
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 apiGenerator = APIGenerator(module)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 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
244 if os.path.basename(apiFile).startswith("Ui_"):
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
245 # it is a forms source file, extract public attributes
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
246 # as well
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
247 apis.extend(self.__classesAttributesApi(module))
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
248
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
249 basesDict = apiGenerator.genBases(True)
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
250 for baseEntry in basesDict:
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
251 if basesDict[baseEntry]:
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
252 bases.append("{0} {1}\n".format(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
253 baseEntry, " ".join(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
254 sorted(basesDict[baseEntry]))))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 else:
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
256 with contextlib.suppress(OSError, UnicodeError):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 apis = Utilities.readEncodedFile(apiFile)[0].splitlines(True)
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
258 with contextlib.suppress(OSError, UnicodeError):
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
259 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
260 if os.path.exists(basesFile):
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
261 bases = (
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
262 Utilities.readEncodedFile(basesFile)[0]
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
263 .splitlines(True)
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
264 )
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 language = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 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
268 self.__storeApis(apis, bases, apiFile, language)
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
269 else:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
270 # just store file info to avoid rereading it every time
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
271 self.__storeFileInfoOnly(apiFile)
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
272
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
273 def __storeFileInfoOnly(self, apiFile):
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
274 """
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
275 Private method to store file info only.
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
276
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
277 Doing this avoids rereading the file whenever the API is initialized
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
278 in case the given file doesn't contain API data.
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
279
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
280 @param apiFile file name of the API file
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
281 @type str
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
282 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
283 db = QSqlDatabase.database(self.__connectionName)
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
284 db.transaction()
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
285 try:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
286 query = QSqlQuery(db)
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
287 # step 1: create entry in file table
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
288 query.prepare(self.populate_file_stmt)
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
289 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
290 query.exec()
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
291
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
292 # step 2: update the file entry
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
293 query.prepare(self.update_file_stmt)
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
294 query.bindValue(":lastRead", QDateTime.currentDateTime())
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
295 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
296 query.exec()
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
297 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
298 query.finish()
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
299 del query
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
300 if self.__aborted:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
301 db.rollback()
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
302 else:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
303 db.commit()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
305 def __storeApis(self, apis, bases, apiFile, language):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 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
308
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
309 @param apis list of api entries
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
310 @type list of str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
311 @param bases list of base class entries
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
312 @type list of str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
313 @param apiFile filename of the file read to get the APIs
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
314 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
315 @param language programming language of the file of the APIs
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
316 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 """
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
318 wseps = self.__autoCompletionWordSeparators(language)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 if wseps is None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
322 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 # 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
327 query.prepare(self.populate_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
329 if not query.exec():
123
a4793081090c Fixed a bug causing a stacktrace when storing an API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
330 return
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 query.prepare(self.file_id_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
333 if not query.exec():
123
a4793081090c Fixed a bug causing a stacktrace when storing an API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
334 return
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
335 if not query.next(): # __IGNORE_WARNING_M513__
123
a4793081090c Fixed a bug causing a stacktrace when storing an API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
336 return
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
337 fileId = int(query.value(0))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 # 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
340 query.prepare(self.populate_del_api_stmt)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
341 query.bindValue(":fileId", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
342 query.exec()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
344 query.prepare(self.populate_del_bases_stmt)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
345 query.bindValue(":fileId", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
346 query.exec()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
347
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
348 # step 3: load the given API info
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 query.prepare(self.populate_api_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 for api in apis:
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 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 api = api.strip()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 if len(api) == 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 continue
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 b = api.find('(')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 if b == -1:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 path = api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 sig = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 path = api[:b]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 sig = api[b:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 while len(path) > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 acWord = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 context = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 fullContext = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 pictureId = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 # search for word separators
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 index = len(path)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 while index > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 index -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 found = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 for wsep in wseps:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 if path[:index].endswith(wsep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 found = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 if found:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 if acWord == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 # completion found
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 acWord = path[index:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 path = path[:(index - len(wsep))]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 index = len(path)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 fullContext = path
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 context = path
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
389 with contextlib.suppress(ValueError):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 acWord, pictureId = acWord.split("?", 1)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 context = path[index:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 # none found?
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 if acWord == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 acWord = path
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 path = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 query.bindValue(":acWord", acWord)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 query.bindValue(":fullContext", fullContext)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 query.bindValue(":signature", sig)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
403 query.bindValue(":fileId", fileId)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 query.bindValue(":pictureId", pictureId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
405 query.exec()
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 sig = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
409 # 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
410 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
411 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
412 if self.__aborted:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
413 break
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
414
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
415 base = base.strip()
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
416 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
417 continue
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
418
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
419 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
420 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
421 query.bindValue(":baseClasses", baseClasses)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
422 query.bindValue(":fileId", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
423 query.exec()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
424
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 if not self.__aborted:
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
426 # step 5: update the file entry
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 query.prepare(self.update_file_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 query.bindValue(":lastRead", QDateTime.currentDateTime())
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
430 query.exec()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
432 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 if self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 db.rollback()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 db.commit()
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 def __deleteApiFile(self, apiFile):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 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
442
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
443 @param apiFile filename of the raw API file
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
444 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
446 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 # 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
452 query.prepare(self.file_id_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 query.bindValue(":file", apiFile)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
454 query.exec()
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
455 query.next() # __IGNORE_WARNING_M513__
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
456 fileId = int(query.value(0))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
458 # 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
459 query.prepare(self.populate_del_api_stmt)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
460 query.bindValue(":fileId", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
461 query.exec()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
463 # 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
464 query.prepare(self.populate_del_bases_stmt)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
465 query.bindValue(":fileId", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
466 query.exec()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
467
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
468 # step 4: delete the file entry
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 query.prepare(self.file_delete_id_stmt)
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
470 query.bindValue(":id", fileId)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
471 query.exec()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
473 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 db.commit()
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
476
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
477 def __getApiFiles(self):
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
478 """
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
479 Private method to get a list of API files loaded into the database.
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
480
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
481 @return list of API filenames
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
482 @rtype list of str
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
483 """
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
484 apiFiles = []
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
485
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
486 db = QSqlDatabase.database(self.__connectionName)
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
487 db.transaction()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
488 try:
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
489 query = QSqlQuery(db)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
490 query.exec(self.api_files_stmt)
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
491 while query.next(): # __IGNORE_WARNING_M513__
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
492 apiFiles.append(query.value(0))
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
493 finally:
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
494 query.finish()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
495 del query
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
496 db.commit()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
497
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
498 return apiFiles
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 def run(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 Public method to perform the threads work.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 """
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
504 self.processing.emit(WorkerStatusStarted, "")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505
147
0b2e8ddacad7 Fixed a bug releasing database connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 143
diff changeset
506 if QSqlDatabase.contains(self.__connectionName):
0b2e8ddacad7 Fixed a bug releasing database connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 143
diff changeset
507 QSqlDatabase.removeDatabase(self.__connectionName)
0b2e8ddacad7 Fixed a bug releasing database connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 143
diff changeset
508
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
509 db = QSqlDatabase.addDatabase("QSQLITE", self.__connectionName)
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
510 db.setDatabaseName(self.__databaseName)
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
511 db.open()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
512
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 if db.isValid() and db.isOpen():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 # 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
515 if not self.__refresh:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
516 loadedApiFiles = self.__getApiFiles()
22
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
517 for apiFile in loadedApiFiles:
a47afbacaeb5 Fixed an issue introduced by the last change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
518 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
519 self.__deleteApiFile(apiFile)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 # step 2: (re-)load api files
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 for apiFile in self.__apiFiles:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 if not self.__aborted:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 self.__loadApiFileIfNewer(apiFile)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
526 db.close()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
527
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 if self.__aborted:
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
529 self.processing.emit(WorkerStatusAborted, "")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 else:
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
531 self.processing.emit(WorkerStatusFinished, "")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
533
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 class DbAPIs(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 Class implementing an API storage entity.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
538 @signal apiPreparationStatus(language, status, file) emitted to indicate
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
539 the API preparation status for a language
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 """
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
541 apiPreparationStatus = pyqtSignal(str, int, str)
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
542
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
543 DB_VERSION = 4
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 create_mgmt_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 CREATE TABLE mgmt
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 (format INTEGER)
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 drop_mgmt_stmt = """DROP TABLE IF EXISTS mgmt"""
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 create_api_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 CREATE TABLE api
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
553 (acWord TEXT,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
554 context TEXT,
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
555 fullContext TEXT,
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 signature TEXT,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 fileId INTEGER,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 pictureId INTEGER,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 UNIQUE(acWord, fullContext, signature) ON CONFLICT IGNORE
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 drop_api_stmt = """DROP TABLE IF EXISTS api"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
564 create_bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
565 CREATE TABLE bases
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
566 (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
567 baseClasses TEXT,
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
568 fileId INTEGER
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
569 )
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
570 """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
571 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
572
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 create_file_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 CREATE TABLE file
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 (id INTEGER PRIMARY KEY AUTOINCREMENT,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 file TEXT UNIQUE ON CONFLICT IGNORE,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 lastRead TIMESTAMP DEFAULT CURRENT_TIMESTAMP
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 drop_file_stmt = """DROP TABLE IF EXISTS file"""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 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
583 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
584
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 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
586 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
587
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
588 create_fullContext_idx = (
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
589 """CREATE INDEX fullContext_idx on api (fullContext)"""
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
590 )
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 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
592
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
593 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
594 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
595
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 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
597 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
598
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 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
600 SELECT file FROM file
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 ac_stmt = """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
604 SELECT DISTINCT acWord, fullContext, pictureId FROM api
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 WHERE acWord GLOB :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 ORDER BY acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 ac_context_stmt = """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
609 SELECT DISTINCT acWord, fullContext, pictureId FROM api
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 WHERE context = :context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 ORDER BY acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 """
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
613 ac_context_word_stmt = """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
614 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
615 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
616 ORDER BY acWord
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
617 """
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
618 bases_stmt = """
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
619 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
620 WHERE class = :class
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
621 """
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 ct_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 ct_context_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 AND context = :context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 ct_fullContext_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 SELECT DISTINCT acWord, signature, fullContext FROM api
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 WHERE acWord = :acWord
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 AND fullContext = :fullContext
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 format_select_stmt = """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 SELECT format FROM mgmt
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 mgmt_insert_stmt = """
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
640 INSERT INTO mgmt (format) VALUES ({0:d})
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
641 """.format(DB_VERSION)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
643 def __init__(self, language, projectType="", parent=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
647 @param language language of the APIs object
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
648 @type str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
649 @param projectType type of the project
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
650 @type str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
651 @param parent reference to the parent object
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
652 @type QObject
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 QObject.__init__(self, parent)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
655 if projectType:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
656 self.setObjectName("DbAPIs_{0}_{1}".format(language, projectType))
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
657 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
658 self.setObjectName("DbAPIs_{0}".format(language))
2
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 self.__inPreparation = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 self.__worker = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 self.__workerQueue = []
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
663 self.__opened = False
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
665 self.__projectType = projectType
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 self.__language = language
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
667
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
668 if self.__projectType:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
669 self.__connectionName = "{0}_{1}".format(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
670 self.__language, self.__projectType)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
671 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
672 self.__connectionName = self.__language
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
673
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 if self.__language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 self.__initAsProject()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 self.__initAsLanguage()
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 def __initAsProject(self):
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 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
682 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 self.__lexer = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
685 self.__project = ericApp().getObject("Project")
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
686 self.__project.projectOpened.connect(self.__projectOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
687 self.__project.newProject.connect(self.__projectOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
688 self.__project.projectClosed.connect(self.__projectClosed)
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
689 self.__project.projectFormCompiled.connect(self.__projectFormCompiled)
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
690 self.__project.projectChanged.connect(self.__projectChanged)
74
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
691
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 if self.__project.isOpen():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 self.__projectOpened()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 def __initAsLanguage(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 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
698 """
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
699 if self.__language == "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
700 self.__discardFirst = ["self", "cls"]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 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
702 self.__discardFirst = []
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 self.__lexer = QScintilla.Lexers.getLexer(self.__language)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
704 try:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
705 self.__apifiles = Preferences.getEditorAPI(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
706 self.__language, projectType=self.__projectType)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
707 except TypeError:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
708 # older interface
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
709 self.__apifiles = Preferences.getEditorAPI(self.__language)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 self.__apifiles.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 if self.__lexer is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 self.__openAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 def _apiDbName(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 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
717
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
718 @return name of the database file
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
719 @rtype str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 if self.__language == ApisNameProject:
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
722 return os.path.join(self.__project.getProjectManagementDir(),
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 "project-apis.db")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 else:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
725 apisDir = os.path.join(Globals.getConfigDir(), "APIs")
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
726 if not os.path.exists(apisDir):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
727 os.makedirs(apisDir)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
728 if self.__projectType:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
729 filename = "{0}_{1}-api.db".format(self.__language,
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
730 self.__projectType)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
731 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
732 filename = "{0}-api.db".format(self.__language)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
733 return os.path.join(apisDir, filename)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 def close(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 Public method to close the database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 self.__workerQueue = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 self.__worker.abort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 self.__worker.wait(5000)
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
744 if (
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
745 self.__worker is not None and
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
746 not self.__worker.isFinished()
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
747 ):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 self.__worker.terminate()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 if self.__worker is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 self.__worker.wait(5000)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
752 if QSqlDatabase and QSqlDatabase.database(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
753 self.__connectionName).isOpen():
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
754 QSqlDatabase.database(self.__connectionName).close()
168
92a06e353fa9 APIsManager: fixed an issue causing the project related API database not to be opened when a second project gets opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 165
diff changeset
755 QSqlDatabase.removeDatabase(self.__connectionName)
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
756
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
757 self.__opened = False
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 def __openApiDb(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 Private method to open the API database.
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
762
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
763 @return flag indicating the database status
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
764 @rtype bool
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
766 db = QSqlDatabase.database(self.__connectionName, False)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 if not db.isValid():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 # the database connection is a new one
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
769 db = QSqlDatabase.addDatabase("QSQLITE", self.__connectionName)
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
770 dbName = self._apiDbName()
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
771 if (
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
772 self.__language == ApisNameProject and
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
773 not os.path.exists(self.__project.getProjectManagementDir())
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
774 ):
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
775 opened = False
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
776 else:
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
777 db.setDatabaseName(dbName)
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
778 opened = db.open()
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
779 if not opened:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
780 QSqlDatabase.removeDatabase(self.__connectionName)
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
781 else:
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
782 opened = True
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
783 return opened
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 def __createApiDB(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 Private method to create an API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
789 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 # step 1: drop old tables
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
794 query.exec(self.drop_mgmt_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
795 query.exec(self.drop_api_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
796 query.exec(self.drop_bases_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
797 query.exec(self.drop_file_stmt)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 # step 2: drop old indices
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
799 query.exec(self.drop_acWord_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
800 query.exec(self.drop_context_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
801 query.exec(self.drop_fullContext_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
802 query.exec(self.drop_bases_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
803 query.exec(self.drop_file_idx)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 # step 3: create tables
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
805 query.exec(self.create_api_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
806 query.exec(self.create_bases_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
807 query.exec(self.create_file_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
808 query.exec(self.create_mgmt_stmt)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
809 query.exec(self.mgmt_insert_stmt)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
810 # step 4: create indices
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
811 query.exec(self.create_acWord_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
812 query.exec(self.create_context_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
813 query.exec(self.create_fullContext_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
814 query.exec(self.create_bases_idx)
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
815 query.exec(self.create_file_idx)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
817 query.finish()
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 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
820
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
821 def getApiFiles(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
823 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
824
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
825 @return list of API filenames
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
826 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
827 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 apiFiles = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
829
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
830 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
831 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
832 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
833 query = QSqlQuery(db)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
834 query.exec(self.api_files_stmt)
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
835 while query.next(): # __IGNORE_WARNING_M513__
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
836 apiFiles.append(query.value(0))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
837 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
838 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
839 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840 db.commit()
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 return apiFiles
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 def __isPrepared(self):
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 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
847
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
848 @return flag indicating the prepared status
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
849 @rtype bool
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
851 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 prepared = len(db.tables()) > 0
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853 if prepared:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
854 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
855 prepared = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
857 query = QSqlQuery(db)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
858 ok = query.exec(self.format_select_stmt)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
859 if ok:
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
860 query.next() # __IGNORE_WARNING_M513__
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
861 formatVersion = int(query.value(0))
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
862 if formatVersion >= self.DB_VERSION:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863 prepared = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
864 finally:
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
865 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
866 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
867 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
868 return prepared
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
869
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
870 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
871 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
872 Public method to determine the possible completions.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
873
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
874 @param start string giving the start of the word to be
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
875 completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
876 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
877 @param context string giving the context (e.g. classname)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
878 to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
879 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
880 @param followHierarchy flag indicating to follow the hierarchy of
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
881 base classes
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
882 @type bool
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
883 @return list of dictionaries with possible completions
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
884 (key 'completion' contains the completion,
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
885 key 'context' contains the context and
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
886 key 'pictureId' contains the ID of the icon to be shown)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
887 @rtype list of dict
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
888 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
889 completions = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
890
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
891 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
892 if db.isOpen() and not self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
894 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 query = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
897 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
898 query = QSqlQuery(db)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
899 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
900 query.bindValue(":acWord", start + '*')
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
901 query.bindValue(":context", context)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
902 elif start is not None:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 query.prepare(self.ac_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905 query.bindValue(":acWord", start + '*')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
906 elif context is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
907 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
908 query.prepare(self.ac_context_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
909 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911 if query is not None:
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
912 query.exec()
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
913 while query.next(): # __IGNORE_WARNING_M513__
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
914 completions.append({"completion": query.value(0),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
915 "context": query.value(1),
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
916 "pictureId": query.value(2)})
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
917 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
918 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
919 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
920 db.commit()
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
921
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
922 if followHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
923 query = QSqlQuery(db)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
924 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
925 query.bindValue(":class", context)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
926 query.exec()
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
927 if query.next(): # __IGNORE_WARNING_M513__
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
928 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
929 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
930 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
931 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
932 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
933 followHierarchy=True))
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
934 query.finish()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
935 del query
2
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 completions
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
938
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
939 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
940 showContext=True, followHierarchy=False):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
941 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
942 Public method to determine the calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
943
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
944 @param acWord function to get calltips for
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
945 @type str
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
946 @param commas minimum number of commas contained in the calltip
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
947 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
948 @param context string giving the context (e.g. classname)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
949 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
950 @param fullContext string giving the full context
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
951 @type str
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
952 @param showContext flag indicating to show the calltip context
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
953 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
954 @param followHierarchy flag indicating to follow the hierarchy of
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
955 base classes
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
956 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
957 @return list of calltips
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
958 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
959 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
960 calltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
961
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
962 db = QSqlDatabase.database(self.__connectionName)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
963 if db.isOpen() and not self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
964 if self.autoCompletionWordSeparators():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
965 contextSeparator = self.autoCompletionWordSeparators()[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
966 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
967 contextSeparator = " "
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
968 db.transaction()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
969 try:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
970 query = QSqlQuery(db)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
971 if fullContext:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
972 query.prepare(self.ct_fullContext_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
973 query.bindValue(":fullContext", fullContext)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
974 elif context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
975 query.prepare(self.ct_context_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976 query.bindValue(":context", context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
978 query.prepare(self.ct_stmt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
979 query.bindValue(":acWord", acWord)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
980 query.exec()
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
981 while query.next(): # __IGNORE_WARNING_M513__
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
982 word = query.value(0)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
983 sig = query.value(1)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
984 fullCtx = query.value(2)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
985 if sig:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
986 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
987 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
988 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
989 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
990 sig = sig.strip(", \t\r\n")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
991 if self.__enoughCommas(sig, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
992 if showContext:
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
993 calltips.append("{0}{1}{2}{3}".format(
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
994 fullCtx,
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
995 contextSeparator if fullCtx else "",
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
996 word, sig))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
997 else:
17
8f33c2f5bfbd Did some string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
998 calltips.append("{0}{1}".format(word, sig))
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
999 query.finish()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1000 del query
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1001 finally:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1002 db.commit()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1003
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1004 if followHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1005 query = QSqlQuery(db)
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1006 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
1007 query.bindValue(":class", context)
165
c918fe25c97f Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
1008 query.exec()
142
eac390ad0c2e Added ignore comments for some M513 warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
1009 if query.next(): # __IGNORE_WARNING_M513__
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1010 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
1011 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1012 bases = []
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1013 for base in bases:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1014 calltips.extend(self.getCalltips(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1015 acWord, commas, context=base, showContext=showContext,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1016 followHierarchy=True))
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1017 query.finish()
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1018 del query
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1019
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
1020 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
1021 # nothing found, try without a context
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1022 calltips = self.getCalltips(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1023 acWord, commas, showContext=showContext)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1024
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1025 return calltips
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1026
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1027 def __enoughCommas(self, s, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1028 """
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1029 Private method to determine, if the given string contains enough
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1030 commas.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1031
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1032 @param s string to check
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1033 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1034 @param commas number of commas to check for
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1035 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1036 @return flag indicating, that there are enough commas
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1037 @rtype bool
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1038 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1039 end = s.find(')')
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1040
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 if end < 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1042 return False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1043
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1044 w = s[:end]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1045 return w.count(',') >= commas
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1046
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1047 def __openAPIs(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1048 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1049 Private method to open the API database.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1050 """
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1051 self.__opened = self.__openApiDb()
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1052 if self.__opened:
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1053 if not self.__isPrepared():
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1054 self.__createApiDB()
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1055
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1056 # prepare the database if neccessary
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1057 self.prepareAPIs()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1058
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
1059 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
1060 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1061 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
1062
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1063 @param normalized flag indicating a normalized filename is wanted
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1064 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1065 @return list of project form sources
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1066 @rtype list of str
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
1067 """
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1068 if self.__project.getProjectLanguage() in (
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1069 "Python3", "MicroPython", "Cython"
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1070 ):
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
1071 sourceExt = ".py"
127
1c7a8660933f Minimized direct access to the pdata structure of the Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
1072 elif self.__project.getProjectLanguage() == "Ruby":
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
1073 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
1074 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
1075 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
1076
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1077 formsSources = []
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
1078 forms = self.__project.getProjectFiles("FORMS")
127
1c7a8660933f Minimized direct access to the pdata structure of the Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
1079 for fn in forms:
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
1080 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
1081 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
1082 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
1083 if normalized:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1084 formSource = os.path.join(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1085 self.__project.getProjectPath(), formSource)
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
1086 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
1087 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
1088
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1089 def prepareAPIs(self, rawList=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1090 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1091 Public method to prepare the APIs if neccessary.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1092
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1093 @param rawList list of raw API files
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1094 @type list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1095 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1096 if self.__inPreparation:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1097 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1098
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1099 projectPath = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1100 if rawList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1101 apiFiles = rawList[:]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1102 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
1103 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
1104 apiFiles.extend(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1105 [f for f in self.__getProjectFormSources() if
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1106 f not in apiFiles])
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1107 projectPath = self.__project.getProjectPath()
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1108 projectType = ""
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1109 else:
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1110 apiFiles = Preferences.getEditorAPI(
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1111 self.__language, projectType=self.__projectType)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1112 projectType = self.__projectType
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1113 self.__worker = DbAPIsWorker(self, self.__language, apiFiles,
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1114 self._apiDbName(), projectPath,
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1115 projectType=projectType)
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1116 self.__worker.processing.connect(
173
ced7c270bf6b Changed the enum handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 172
diff changeset
1117 self.__processingStatus, Qt.ConnectionType.QueuedConnection)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1118 self.__worker.start()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1119
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1120 def __processQueue(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1121 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1122 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
1123 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1124 if self.__worker is not None and self.__worker.isFinished():
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1125 self.__worker.deleteLater()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1126 self.__worker = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1127
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1128 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
1129 apiFiles = [self.__workerQueue.pop(0)]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1130 if self.__language == ApisNameProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1131 projectPath = self.__project.getProjectPath()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1132 apiFiles = [apiFiles[0].replace(projectPath + os.sep, "")]
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1133 projectType = ""
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1134 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1135 projectPath = ""
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1136 projectType = self.__projectType
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1137 self.__worker = DbAPIsWorker(self, self.__language, apiFiles,
143
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1138 self._apiDbName(), projectPath,
468560828f55 Fixed a few QtSql related issues related to using it in multiple threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
1139 projectType=projectType, refresh=True)
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1140 self.__worker.processing.connect(
173
ced7c270bf6b Changed the enum handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 172
diff changeset
1141 self.__processingStatus, Qt.ConnectionType.QueuedConnection)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1142 self.__worker.start()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1143
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1144 def getLexer(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1145 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1146 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
1147
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1148 @return reference to the lexer object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1149 @rtype Lexer
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1151 return self.__lexer
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1152
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1153 def autoCompletionWordSeparators(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1154 """
107
728fde5bfdb1 Fixed a little annoying bug and some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
1155 Public method to get the word separator characters.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1156
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1157 @return word separator characters
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1158 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1159 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1160 if self.__lexer:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1161 return self.__lexer.autoCompletionWordSeparators()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1162 return None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1163
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1164 def __processingStatus(self, status, filename):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1165 """
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1166 Private slot handling the processing signal of the API preparation
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1167 thread.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1168
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1169 @param status preparation status (one of WorkerStatus...)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1170 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1171 @param filename name of the file being processed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1172 @type str
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1173 """
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1174 if status == WorkerStatusStarted:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1175 self.__inPreparation = True
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1176 self.apiPreparationStatus.emit(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1177 self.__language, WorkerStatusStarted, "")
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1178 elif status == WorkerStatusFinished:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1179 self.__inPreparation = False
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1180 self.apiPreparationStatus.emit(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1181 self.__language, WorkerStatusFinished, "")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1182 QTimer.singleShot(0, self.__processQueue)
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1183 elif status == WorkerStatusAborted:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1184 self.__inPreparation = False
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1185 self.apiPreparationStatus.emit(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1186 self.__language, WorkerStatusAborted, "")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1187 QTimer.singleShot(0, self.__processQueue)
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1188 elif status == WorkerStatusFile:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1189 self.apiPreparationStatus.emit(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1190 self.__language, WorkerStatusFile, filename)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1191
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1192 ########################################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1193 ## project related stuff below
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1194 ########################################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1195
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1196 def __projectOpened(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1197 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1198 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
1199 """
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1200 if self.__project.getProjectLanguage() in (
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1201 "Python3", "MicroPython", "Cython"
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1202 ):
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
1203 self.__discardFirst = ["self", "cls"]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1204 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
1205 self.__discardFirst = []
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1206 self.__lexer = QScintilla.Lexers.getLexer(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1207 self.__project.getProjectLanguage())
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1208 self.__openAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1209
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1210 def __projectClosed(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1211 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1212 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
1213 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1214 self.close()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1215
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
1216 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
1217 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1218 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
1219
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1220 @param filename name of the form file that was compiled
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1221 @type str
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
1222 """
89d28458ff40 Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
1223 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
1224 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
1225
74
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
1226 def __projectChanged(self):
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
1227 """
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
1228 Private slot to handle the projectChanged signal.
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
1229 """
86
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1230 if self.__opened:
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1231 self.__projectClosed()
11088ce2312f Fixed an issue caused by incorrect handling of the projectChanged signal.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
1232 self.__projectOpened()
74
9ac338de7a2b Enhanced reaction upon changes of a project (eric 5.4.x required).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
1233
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1234 def editorSaved(self, filename):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1235 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1236 Public slot to handle the editorSaved signal.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1237
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1238 @param filename name of the file that was saved
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1239 @type str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1240 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1241 if self.__project.isProjectSource(filename):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1242 self.__workerQueue.append(filename)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1243 self.__processQueue()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1244
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1245
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1246 class APIsManager(QObject):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1247 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1248 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
1249 API information used by autocompletion and calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1250 """
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1251 def __init__(self, mainWindow, parent=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1252 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1253 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1254
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1255 @param mainWindow reference to the main eric7 window
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1256 @type QMainWindow
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1257 @param parent reference to the parent object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1258 @type QObject
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1259 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1260 QObject.__init__(self, parent)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1261 self.setObjectName("Assistant_APIsManager")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1262
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1263 self.__mw = mainWindow
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1264
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1265 # initialize the apis dictionary
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1266 self.__apis = {}
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1267
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1268 def reloadAPIs(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1269 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1270 Public slot to reload the api information.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1271 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1272 for api in list(self.__apis.values()):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1273 api and api.prepareAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1274
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1275 def getAPIs(self, language, projectType=""):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1276 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1277 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
1278
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
1279 This method creates and loads an APIs object dynamically upon request.
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1280 This saves memory for languages, that might not be needed at the
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1281 moment.
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1282
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1283 @param language language of the requested APIs object
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1284 @type str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1285 @param projectType type of the project
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1286 @type str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1287 @return reference to the APIs object
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1288 @rtype APIs
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1289 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1290 try:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1291 return self.__apis[(language, projectType)]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1292 except KeyError:
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1293 if (
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 173
diff changeset
1294 language in QScintilla.Lexers.getSupportedApiLanguages() or
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1295 language == ApisNameProject
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1296 ):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1297 # create the api object
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1298 api = DbAPIs(language, projectType=projectType)
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1299 api.apiPreparationStatus.connect(self.__apiPreparationStatus)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1300 self.__apis[(language, projectType)] = api
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 127
diff changeset
1301 return self.__apis[(language, projectType)]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1302 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1303 return None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1304
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1305 def deactivate(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1306 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1307 Public method to perform actions upon deactivation.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1308 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1309 for apiLang in self.__apis:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1310 self.__apis[apiLang].close()
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1311 self.__apis[apiLang].deleteLater()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1312 self.__apis[apiLang] = None
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1313
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1314 def __showMessage(self, msg):
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1315 """
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1316 Private message to show a message in the main windows status bar.
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1317
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1318 @param msg message to be shown
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1319 @type str
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1320 """
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1321 if msg:
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1322 self.__mw.statusBar().showMessage(msg, 2000)
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
1323
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1324 def __apiPreparationStatus(self, language, status, filename):
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1325 """
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1326 Private slot handling the preparation status signal of an API object.
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1327
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1328 @param language language of the API
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1329 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1330 @param status preparation status (one of WorkerStatus...)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1331 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1332 @param filename name of the file being processed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1333 @type str
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1334 """
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1335 if language == ApisNameProject:
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
1336 language = self.tr("Project")
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1337
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1338 if status == WorkerStatusStarted:
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
1339 self.__showMessage(self.tr(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1340 "Preparation of '{0}' APIs started.").format(language))
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1341 elif status == WorkerStatusFile:
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
1342 self.__showMessage(self.tr(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1343 "'{0}' APIs: Processing '{1}'").format(
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1344 language, os.path.basename(filename)))
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1345 elif status == WorkerStatusFinished:
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
1346 self.__showMessage(self.tr(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1347 "Preparation of '{0}' APIs finished.").format(language))
71
025683852a63 Enhanced the status messages handling and the handling of empty API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
1348 elif status == WorkerStatusAborted:
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
1349 self.__showMessage(self.tr(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
1350 "Preparation of '{0}' APIs cancelled.").format(language))
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1351
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1352 #
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1353 # eflag: noqa = M523, M834, S608

eric ide

mercurial