AssistantEric/APIsManager.py

Wed, 21 Sep 2022 16:59:53 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Sep 2022 16:59:53 +0200
branch
eric7
changeset 190
3104a5a3ea13
parent 186
c228779ea15d
child 191
6798a98189da
permissions
-rw-r--r--

Reformatted source code with 'Black'.

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

eric ide

mercurial