AssistantEric/APIsManager.py

Sun, 31 Dec 2017 16:59:08 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 31 Dec 2017 16:59:08 +0100
changeset 141
ecbf4f8b3a1b
parent 140
a0ea7418d433
child 142
eac390ad0c2e
permissions
-rw-r--r--

Updated copyright for 2018.

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

eric ide

mercurial