Sun, 27 Feb 2022 11:43:28 +0100
Extended the version information to include the desktop and session type (although these are not versions).
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
8881
54e42bc2437a
Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8845
diff
changeset
|
3 | # Copyright (c) 2003 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
7960
e8fc383322f7
Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
7 | Package implementing various functions/classes needed everywhere within eric. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
10 | import codecs |
8950
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
11 | import contextlib |
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
12 | import ctypes |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import fnmatch |
8950
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
14 | import functools |
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
15 | import getpass |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import glob |
8950
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
17 | import os |
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
18 | import re |
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
19 | import shlex |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
20 | import subprocess # secok |
8950
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
21 | import sys |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
23 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
24 | def __showwarning(message, category, filename, lineno, file=None, line=""): |
141
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
25 | """ |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
26 | Module function to raise a SyntaxError for a SyntaxWarning. |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
27 | |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
28 | @param message warning object |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
29 | @param category type object of the warning |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
30 | @param filename name of the file causing the warning (string) |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
31 | @param lineno line number causing the warning (integer) |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
32 | @param file file to write the warning message to (ignored) |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
33 | @param line line causing the warning (ignored) |
7599
d6efb1e15a5b
Utilities: changed a doc string to not need a code style warning suppression anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7595
diff
changeset
|
34 | @raise err exception of type SyntaxError |
d6efb1e15a5b
Utilities: changed a doc string to not need a code style warning suppression anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7595
diff
changeset
|
35 | """ |
141
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
36 | if category is SyntaxWarning: |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
37 | err = SyntaxError(str(message)) |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
38 | err.filename = filename |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
39 | err.lineno = lineno |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
40 | raise err |
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
41 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | import warnings |
141
c76f1ec28766
Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
114
diff
changeset
|
43 | warnings.showwarning = __showwarning |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | from codecs import BOM_UTF8, BOM_UTF16, BOM_UTF32 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8314
diff
changeset
|
47 | from PyQt6.QtCore import ( |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
48 | qVersion, PYQT_VERSION_STR, QDir, QProcess, QByteArray, QCoreApplication, |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
49 | QCryptographicHash |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
50 | ) |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8314
diff
changeset
|
51 | from PyQt6.Qsci import QSCINTILLA_VERSION_STR, QsciScintilla |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
53 | # import these methods into the Utilities namespace |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3173
diff
changeset
|
54 | from Globals import ( # __IGNORE_WARNING__ |
6289
f481df37413c
Extended the error report to send the desktop environment in use (Linux only).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6247
diff
changeset
|
55 | isWindowsPlatform, isLinuxPlatform, isMacPlatform, desktopName, |
8958
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
56 | sessionType, getConfigDir, setConfigDir, getPythonLibraryDirectory, |
8459
0ae07748dbe8
Changed quite a few PyQt5 references to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8438
diff
changeset
|
57 | getPyQt6ModulesDirectory, getQtBinariesPath, getPyQtToolsPath, |
8958
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
58 | qVersionTuple |
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
59 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
8358
144a6b854f70
Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8356
diff
changeset
|
61 | from EricWidgets.EricApplication import ericApp |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | from UI.Info import Program, Version |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | import Preferences |
5616
adcffadf4962
Reworked some __IGNORE_WARNING__ comments to be more specific.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5604
diff
changeset
|
66 | from Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck import ( |
adcffadf4962
Reworked some __IGNORE_WARNING__ comments to be more specific.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5604
diff
changeset
|
67 | # __IGNORE_WARNING__ |
3484 | 68 | normalizeCode) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
8314
e3642a6a1e71
Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
70 | from eric7config import getConfig |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
71 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | configDir = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
74 | codingBytes_regexps = [ |
6075
281a47a8be9d
Extended the search for a 'coding' statement from the first two lines to the first 5 lines because some scripts include empty lines between the she-bang line and the coding line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
75 | (5, re.compile(br'''coding[:=]\s*([-\w_.]+)''')), |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
76 | (1, re.compile(br'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')), |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
77 | ] |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
78 | coding_regexps = [ |
6075
281a47a8be9d
Extended the search for a 'coding' statement from the first two lines to the first 5 lines because some scripts include empty lines between the she-bang line and the coding line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
79 | (5, re.compile(r'''coding[:=]\s*([-\w_.]+)''')), |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
80 | (1, re.compile(r'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')), |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
81 | ] |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
82 | |
3030
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
83 | supportedCodecs = [ |
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
84 | 'utf-8', |
7841
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
85 | |
7843
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
86 | 'iso-8859-1', 'iso-8859-2', 'iso-8859-3', |
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
87 | 'iso-8859-4', 'iso-8859-5', 'iso-8859-6', 'iso-8859-7', |
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
88 | 'iso-8859-8', 'iso-8859-9', 'iso-8859-10', 'iso-8859-11', |
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
89 | 'iso-8859-13', 'iso-8859-14', 'iso-8859-15', 'iso-8859-16', |
7841
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
90 | 'latin-1', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
91 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
92 | 'koi8-r', 'koi8-t', 'koi8-u', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
93 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
94 | 'utf-7', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
95 | 'utf-16', 'utf-16-be', 'utf-16-le', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
96 | 'utf-32', 'utf-32-be', 'utf-32-le', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
97 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
98 | 'cp037', 'cp273', 'cp424', 'cp437', 'cp500', 'cp720', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
99 | 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
100 | 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
101 | 'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
102 | 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026', 'cp1125', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
103 | 'cp1140', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
104 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
105 | 'windows-1250', 'windows-1251', 'windows-1252', 'windows-1253', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
106 | 'windows-1254', 'windows-1255', 'windows-1256', 'windows-1257', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
107 | 'windows-1258', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
108 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
109 | 'gb2312', 'hz', 'gb18030', 'gbk', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
110 | |
7843
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
111 | 'iso-2022-jp', 'iso-2022-jp-1', 'iso-2022-jp-2', 'iso-2022-jp-2004', |
0a569bf8ca45
Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7841
diff
changeset
|
112 | 'iso-2022-jp-3', 'iso-2022-jp-ext', 'iso-2022-kr', |
7841
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
113 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
114 | 'mac-cyrillic', 'mac-greek', 'mac-iceland', 'mac-latin2', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
115 | 'mac-roman', 'mac-turkish', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
116 | |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
117 | 'ascii', |
1bb64cb3c4a8
Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7836
diff
changeset
|
118 | 'big5-tw', 'big5-hkscs', |
3030
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
119 | ] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
121 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
122 | class CodingError(Exception): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
123 | """ |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
124 | Class implementing an exception, which is raised, if a given coding is |
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
125 | incorrect. |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
126 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
127 | def __init__(self, coding): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
128 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
129 | Constructor |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
130 | |
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
131 | @param coding coding to include in the message (string) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
132 | """ |
3030
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
133 | self.errorMessage = QCoreApplication.translate( |
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
134 | "CodingError", |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
135 | "The coding '{0}' is wrong for the given text.").format(coding) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
136 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
137 | def __repr__(self): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
138 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3525
diff
changeset
|
139 | Special method returning a representation of the exception. |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
140 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
141 | @return string representing the error message |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
142 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
143 | return str(self.errorMessage) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
144 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
145 | def __str__(self): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
146 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3525
diff
changeset
|
147 | Special method returning a string representation of the exception. |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
148 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
149 | @return string representing the error message |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
150 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
151 | return str(self.errorMessage) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
152 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
153 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
154 | def get_codingBytes(text): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
155 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
156 | Function to get the coding of a bytes text. |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
157 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
158 | @param text bytes text to inspect (bytes) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
159 | @return coding string |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
160 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
161 | lines = text.splitlines() |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
162 | for coding in codingBytes_regexps: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
163 | coding_re = coding[1] |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
164 | head = lines[:coding[0]] |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
165 | for line in head: |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
166 | m = coding_re.search(line) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
167 | if m: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
168 | return str(m.group(1), "ascii").lower() |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
169 | return None |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
170 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
171 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
172 | def get_coding(text): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
173 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
174 | Function to get the coding of a text. |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
175 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
176 | @param text text to inspect (string) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
177 | @return coding string |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
178 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
179 | lines = text.splitlines() |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
180 | for coding in coding_regexps: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
181 | coding_re = coding[1] |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
182 | head = lines[:coding[0]] |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
183 | for line in head: |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
184 | m = coding_re.search(line) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
185 | if m: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
186 | return m.group(1).lower() |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
187 | return None |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
188 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
189 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
190 | def readEncodedFile(filename): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
191 | """ |
2763
e4794166ad70
Fixed a serious typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2741
diff
changeset
|
192 | Function to read a file and decode its contents into proper text. |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
193 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
194 | @param filename name of the file to read (string) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
195 | @return tuple of decoded text and encoding (string, string) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
196 | """ |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
197 | with open(filename, "rb") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
198 | text = f.read() |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
199 | return decode(text) |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
200 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
201 | |
682
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
202 | def readEncodedFileWithHash(filename): |
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
203 | """ |
2763
e4794166ad70
Fixed a serious typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2741
diff
changeset
|
204 | Function to read a file, calculate a hash value and decode its contents |
682
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
205 | into proper text. |
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
206 | |
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
207 | @param filename name of the file to read (string) |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
208 | @return tuple of decoded text, encoding and hash value (string, string, |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
209 | string) |
682
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
210 | """ |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
211 | with open(filename, "rb") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
212 | text = f.read() |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
213 | hashStr = str(QCryptographicHash.hash( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
214 | QByteArray(text), QCryptographicHash.Algorithm.Md5).toHex(), |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
215 | encoding="ASCII") |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
216 | return decode(text) + (hashStr, ) |
682
91114a975eda
Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
565
diff
changeset
|
217 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
218 | |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
219 | def decode(text): |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
220 | """ |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
221 | Function to decode some byte text into a string. |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
222 | |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
223 | @param text byte text to decode (bytes) |
46
b09750fd2a06
Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
224 | @return tuple of decoded text and encoding (string, string) |
b09750fd2a06
Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
225 | """ |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
226 | with contextlib.suppress(UnicodeError, LookupError): |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
227 | if text.startswith(BOM_UTF8): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
228 | # UTF-8 with BOM |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
229 | return str(text[len(BOM_UTF8):], 'utf-8'), 'utf-8-bom' |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
230 | elif text.startswith(BOM_UTF16): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
231 | # UTF-16 with BOM |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
232 | return str(text[len(BOM_UTF16):], 'utf-16'), 'utf-16' |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
233 | elif text.startswith(BOM_UTF32): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
234 | # UTF-32 with BOM |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
235 | return str(text[len(BOM_UTF32):], 'utf-32'), 'utf-32' |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
236 | coding = get_codingBytes(text) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
237 | if coding: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
238 | return str(text, coding), coding |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
239 | |
159
2e79b9c72e59
Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
141
diff
changeset
|
240 | # Assume UTF-8 |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
241 | with contextlib.suppress(UnicodeError, LookupError): |
159
2e79b9c72e59
Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
141
diff
changeset
|
242 | return str(text, 'utf-8'), 'utf-8-guessed' |
2e79b9c72e59
Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
141
diff
changeset
|
243 | |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
244 | guess = None |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
245 | if Preferences.getEditor("AdvancedEncodingDetection"): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
246 | # Try the universal character encoding detector |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
247 | try: |
8258
82b608e352ec
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
248 | import chardet |
82b608e352ec
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
249 | guess = chardet.detect(text) |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
250 | if ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
251 | guess and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
252 | guess['confidence'] > 0.95 and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
253 | guess['encoding'] is not None |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
254 | ): |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
255 | codec = guess['encoding'].lower() |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
256 | return str(text, codec), '{0}-guessed'.format(codec) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
257 | except (UnicodeError, LookupError): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
258 | pass |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
259 | except ImportError: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
260 | pass |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
261 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
262 | # Try default encoding |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
263 | with contextlib.suppress(UnicodeError, LookupError): |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
264 | codec = Preferences.getEditor("DefaultEncoding") |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
265 | return str(text, codec), '{0}-default'.format(codec) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
266 | |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
267 | if ( |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
268 | Preferences.getEditor("AdvancedEncodingDetection") and |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
269 | guess and |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
270 | guess['encoding'] is not None |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
271 | ): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
272 | # Use the guessed one even if confidence level is low |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
273 | with contextlib.suppress(UnicodeError, LookupError): |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
274 | codec = guess['encoding'].lower() |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
275 | return str(text, codec), '{0}-guessed'.format(codec) |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
276 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
277 | # Assume UTF-8 loosing information |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
278 | return str(text, "utf-8", "ignore"), 'utf-8-ignore' |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
279 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
280 | |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
281 | def readEncodedFileWithEncoding(filename, encoding): |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
282 | """ |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
283 | Function to read a file and decode its contents into proper text. |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
284 | |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
285 | @param filename name of the file to read (string) |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7849
diff
changeset
|
286 | @param encoding encoding to be used to read the file (string) |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
287 | @return tuple of decoded text and encoding (string, string) |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
288 | """ |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
289 | with open(filename, "rb") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
290 | text = f.read() |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
291 | if encoding: |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
292 | with contextlib.suppress(UnicodeError, LookupError): |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
293 | return str(text, encoding), '{0}-selected'.format(encoding) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
294 | |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
295 | # Try default encoding |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
296 | with contextlib.suppress(UnicodeError, LookupError): |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
297 | codec = Preferences.getEditor("DefaultEncoding") |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
298 | return str(text, codec), '{0}-default'.format(codec) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
299 | |
3394
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
300 | # Assume UTF-8 loosing information |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
301 | return str(text, "utf-8", "ignore"), 'utf-8-ignore' |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
302 | else: |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
303 | return decode(text) |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
304 | |
d1d4d79b4f11
Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3206
diff
changeset
|
305 | |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
306 | def writeEncodedFile(filename, text, origEncoding, forcedEncoding=""): |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
307 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
308 | Function to write a file with properly encoded text. |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
309 | |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
310 | @param filename name of the file to read |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
311 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
312 | @param text text to be written |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
313 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
314 | @param origEncoding type of the original encoding |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
315 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
316 | @param forcedEncoding encoding to be used for writing, if no coding |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
317 | line is present |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
318 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
319 | @return encoding used for writing the file |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
320 | @rtype str |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
321 | """ |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
322 | etext, encoding = encode(text, origEncoding, forcedEncoding=forcedEncoding) |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
323 | |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
324 | with open(filename, "wb") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
325 | f.write(etext) |
46
b09750fd2a06
Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
326 | |
b09750fd2a06
Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
327 | return encoding |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
328 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
329 | |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
330 | def encode(text, origEncoding, forcedEncoding=""): |
53
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
331 | """ |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
332 | Function to encode text into a byte text. |
c3eb7cc1ff8b
Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
333 | |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
334 | @param text text to be encoded |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
335 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
336 | @param origEncoding type of the original encoding |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
337 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
338 | @param forcedEncoding encoding to be used for writing, if no coding line |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
339 | is present |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
340 | @type str |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
341 | @return tuple of encoded text and encoding used |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
342 | @rtype tuple of (bytes, str) |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
343 | @exception CodingError raised to indicate an invalid encoding |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
344 | """ |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
345 | encoding = None |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
346 | if origEncoding == 'utf-8-bom': |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
347 | etext, encoding = BOM_UTF8 + text.encode("utf-8"), 'utf-8-bom' |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
348 | else: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
349 | # Try declared coding spec |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
350 | coding = get_coding(text) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
351 | if coding: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
352 | try: |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
353 | etext, encoding = text.encode(coding), coding |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
354 | except (UnicodeError, LookupError): |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
355 | # Error: Declared encoding is incorrect |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
356 | raise CodingError(coding) |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
357 | else: |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
358 | if forcedEncoding: |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
359 | with contextlib.suppress(UnicodeError, LookupError): |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
360 | etext, encoding = ( |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
361 | text.encode(forcedEncoding), forcedEncoding) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
362 | # if forced encoding is incorrect, ignore it |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
363 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
364 | if encoding is None: |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
365 | # Try the original encoding |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
366 | if origEncoding and origEncoding.endswith( |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
367 | ('-selected', '-default', '-guessed', '-ignore')): |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
368 | coding = ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
369 | origEncoding |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
370 | .replace("-selected", "") |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
371 | .replace("-default", "") |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
372 | .replace("-guessed", "") |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
373 | .replace("-ignore", "") |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
374 | ) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
375 | with contextlib.suppress(UnicodeError, LookupError): |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
376 | etext, encoding = text.encode(coding), coding |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
377 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
378 | if encoding is None: |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
379 | # Try configured default |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
380 | with contextlib.suppress(UnicodeError, LookupError): |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
381 | codec = Preferences.getEditor("DefaultEncoding") |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
382 | etext, encoding = text.encode(codec), codec |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
383 | |
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
384 | if encoding is None: |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
385 | # Try saving as ASCII |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
386 | with contextlib.suppress(UnicodeError): |
6099
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
387 | etext, encoding = text.encode('ascii'), 'ascii' |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
388 | |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
389 | if encoding is None: |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
390 | # Save as UTF-8 without BOM |
a7fecbc392d7
Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6080
diff
changeset
|
391 | etext, encoding = text.encode('utf-8'), 'utf-8' |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
392 | |
46
b09750fd2a06
Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
393 | return etext, encoding |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
394 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
395 | |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
396 | def decodeString(text): |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
397 | """ |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
398 | Function to decode a string containing Unicode encoded characters. |
45
9a18f4dbb493
Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
399 | |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
400 | @param text text containing encoded chars (string) |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
401 | @return decoded text (string) |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
402 | """ |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
403 | buf = b"" |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
404 | index = 0 |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
405 | while index < len(text): |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
406 | if text[index] == "\\": |
6596
2d82cd481adc
Utilities: fixed an issue related to a forgotten conversion of str to bytes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6545
diff
changeset
|
407 | qb = QByteArray.fromHex(text[index:index + 4].encode()) |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
408 | buf += bytes(qb) |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
409 | index += 4 |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
410 | else: |
2716
98c11482598e
Python2 compatible decodeString (used e.g. in menu item Manage SSL Certificates)
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2679
diff
changeset
|
411 | buf += codecs.encode(text[index], "utf-8") |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
412 | index += 1 |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
413 | buf = buf.replace(b"\x00", b"") |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
414 | return decodeBytes(buf) |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
415 | |
1112
8a7d1b9d18db
Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1109
diff
changeset
|
416 | |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
417 | def decodeBytes(buffer): |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
418 | """ |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
419 | Function to decode some byte text into a string. |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
420 | |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
421 | @param buffer byte buffer to decode (bytes) |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
422 | @return decoded text (string) |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
423 | """ |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
424 | # try UTF with BOM |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
425 | with contextlib.suppress(UnicodeError, LookupError): |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
426 | if buffer.startswith(BOM_UTF8): |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
427 | # UTF-8 with BOM |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
428 | return str(buffer[len(BOM_UTF8):], encoding='utf-8') |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
429 | elif buffer.startswith(BOM_UTF16): |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
430 | # UTF-16 with BOM |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
431 | return str(buffer[len(BOM_UTF16):], encoding='utf-16') |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
432 | elif buffer.startswith(BOM_UTF32): |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
433 | # UTF-32 with BOM |
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
434 | return str(buffer[len(BOM_UTF32):], encoding='utf-32') |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
435 | |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
436 | # try UTF-8 |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
437 | with contextlib.suppress(UnicodeError): |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
438 | return str(buffer, encoding="utf-8") |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
439 | |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
440 | # try codec detection |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
441 | try: |
8258
82b608e352ec
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
442 | import chardet |
82b608e352ec
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
443 | guess = chardet.detect(buffer) |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
444 | if guess and guess['encoding'] is not None: |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
445 | codec = guess['encoding'].lower() |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
446 | return str(buffer, encoding=codec) |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
447 | except (UnicodeError, LookupError): |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
448 | pass |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
449 | except ImportError: |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
450 | pass |
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
451 | |
1109
9552b5e16a07
Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
988
diff
changeset
|
452 | return str(buffer, encoding="utf-8", errors="ignore") |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
682
diff
changeset
|
453 | |
2084
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
454 | |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
455 | def readStringFromStream(stream): |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
456 | """ |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
457 | Module function to read a string from the given stream. |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
458 | |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
459 | @param stream data stream opened for reading (QDataStream) |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
460 | @return string read from the stream (string) |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
461 | """ |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
462 | data = stream.readString() |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
463 | if data is None: |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
464 | data = b"" |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
465 | return data.decode('utf-8') |
2084
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
466 | |
d3f083dd0222
Made the fiveth set of Qt5 compatibility changes (some of the previous changes are backed out due to changes in PyQt4).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2079
diff
changeset
|
467 | |
2079
febae63bb821
Extended the html_encode function a bit to prepare to use it instead of Qt.escape (step 3 of Qt5 compatibility changes).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2030
diff
changeset
|
468 | _escape = re.compile("[&<>\"'\u0080-\uffff]") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | _escape_map = { |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | "&": "&", |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | "<": "<", |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | ">": ">", |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | '"': """, |
2079
febae63bb821
Extended the html_encode function a bit to prepare to use it instead of Qt.escape (step 3 of Qt5 compatibility changes).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2030
diff
changeset
|
475 | "'": "'", |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | } |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
478 | |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
479 | def escape_entities(m, escmap=_escape_map): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | Function to encode html entities. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | @param m the match object |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
484 | @param escmap the map of entities to encode |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | @return the converted text (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | char = m.group() |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
488 | text = escmap.get(char) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | if text is None: |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
490 | text = "&#{0:d};".format(ord(char)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | return text |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
493 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | def html_encode(text, pattern=_escape): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | Function to correctly encode a text for html. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | @param text text to be encoded (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | @param pattern search pattern for text to be encoded (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | @return the encoded text (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | if not text: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | text = pattern.sub(escape_entities, text) |
12
1d8dd9706f46
First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7
diff
changeset
|
505 | return text |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | |
56
3bd61d38c924
Fixed a problem in Utilities related to HTML encoding of unicode characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
55
diff
changeset
|
507 | _uescape = re.compile('[\u0080-\uffff]') |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
509 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | def escape_uentities(m): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | Function to encode html entities. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | @param m the match object |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | @return the converted text (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | char = m.group() |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
518 | text = "&#{0:d};".format(ord(char)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | return text |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
521 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | def html_uencode(text, pattern=_uescape): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | Function to correctly encode a unicode text for html. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | @param text text to be encoded (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | @param pattern search pattern for text to be encoded (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | @return the encoded text (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | if not text: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | text = pattern.sub(escape_uentities, text) |
12
1d8dd9706f46
First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7
diff
changeset
|
533 | return text |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | |
6247
5c677a7f7d51
Corrected some code style issues detected by the new pycodestyle version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6105
diff
changeset
|
535 | _uunescape = re.compile(r'&#\d+;') |
1732
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
536 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
537 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
538 | def unescape_uentities(m): |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
539 | """ |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
540 | Function to decode html entities. |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
541 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
542 | @param m the match object |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
543 | @return the converted text (string) |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
544 | """ |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
545 | char = m.group() |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
546 | ordinal = int(char[2:-1]) |
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
547 | return chr(ordinal) |
1732
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
548 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
549 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
550 | def html_udecode(text, pattern=_uunescape): |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
551 | """ |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
552 | Function to correctly decode a html text to a unicode text. |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
553 | |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
554 | @param text text to be decoded (string) |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
555 | @param pattern search pattern for text to be decoded (string) |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
556 | @return the decoded text (string) |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
557 | """ |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
558 | if not text: |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
559 | return "" |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
560 | text = pattern.sub(unescape_uentities, text) |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
561 | return text |
b140a24e147a
Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1659
diff
changeset
|
562 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
563 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | def convertLineEnds(text, eol): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | Function to convert the end of line characters. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | @param text text to be converted (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | @param eol new eol setting (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | @return text with converted eols (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | if eol == '\r\n': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | regexp = re.compile(r"""(\r(?!\n)|(?<!\r)\n)""") |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
574 | return regexp.sub(lambda m, eol='\r\n': eol, text) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | elif eol == '\n': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | regexp = re.compile(r"""(\r\n|\r)""") |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
577 | return regexp.sub(lambda m, eol='\n': eol, text) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | elif eol == '\r': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | regexp = re.compile(r"""(\r\n|\n)""") |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
580 | return regexp.sub(lambda m, eol='\r': eol, text) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | return text |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
584 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | def linesep(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | """ |
6105
cbd34d558bd9
Finished implementing support for EditorConfig for the IDE editor component and the standalone editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6099
diff
changeset
|
587 | Function to return the line separator used by the editor. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | @return line separator used by the editor (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | eolMode = Preferences.getEditor("EOLMode") |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
592 | if eolMode == QsciScintilla.EolMode.EolUnix: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | return "\n" |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
594 | elif eolMode == QsciScintilla.EolMode.EolMac: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | return "\r" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | return "\r\n" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
599 | |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
600 | def extractFlags(text): |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
601 | """ |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
602 | Function to extract eric specific flags out of the given text. |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
603 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
604 | Flags are contained in comments and are introduced by 'eflag:'. |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
605 | The rest of the line is interpreted as 'key = value'. value is |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
606 | analyzed for being an integer or float value. If that fails, it |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
607 | is assumed to be a string. If a key does not contain a '=' |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
608 | character, it is assumed to be a boolean flag. Flags are expected |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
609 | at the very end of a file. The search is ended, if a line without |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
610 | the 'eflag:' marker is found. |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
611 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
612 | @param text text to be scanned (string) |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
613 | @return dictionary of string, boolean, complex, float and int |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
614 | """ |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
615 | flags = {} |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
616 | lines = text.rstrip().splitlines() if isinstance(text, str) else text |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
617 | for line in reversed(lines): |
3099
d5dcda74d839
Fix the syntaxcheck if only one file is tested. Fix seldom bug if last line has unicode characters in it.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3065
diff
changeset
|
618 | try: |
d5dcda74d839
Fix the syntaxcheck if only one file is tested. Fix seldom bug if last line has unicode characters in it.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3065
diff
changeset
|
619 | index = line.index("eflag:") |
d5dcda74d839
Fix the syntaxcheck if only one file is tested. Fix seldom bug if last line has unicode characters in it.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3065
diff
changeset
|
620 | except ValueError: |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
621 | # no flag found, don't look any further |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
622 | break |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
623 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
624 | flag = line[index + 6:].strip() |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
625 | if "=" in flag: |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
626 | key, value = flag.split("=", 1) |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
627 | key = key.strip() |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
628 | value = value.strip() |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
629 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
630 | if value.lower() in ["true", "false", "yes", "no", "ok"]: |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
631 | # it is a flag |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
632 | flags[key] = value.lower() in ["true", "yes", "ok"] |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
633 | continue |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
634 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
635 | try: |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
636 | # interpret as int first |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
637 | value = int(value) |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
638 | except ValueError: |
8240
93b8a353c4bf
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
639 | with contextlib.suppress(ValueError): |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
640 | # interpret as float next |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
641 | value = float(value) |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
642 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
643 | flags[key] = value |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
644 | else: |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
645 | # treat it as a boolean |
4514
e410e76d6538
Added capability to disable code style checks using an eflags: comment like 'eflags: noqa = M601, M702'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
646 | if flag[0] == "-": |
e410e76d6538
Added capability to disable code style checks using an eflags: comment like 'eflags: noqa = M601, M702'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
647 | # false flags start with '-' |
e410e76d6538
Added capability to disable code style checks using an eflags: comment like 'eflags: noqa = M601, M702'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
648 | flags[flag[1:]] = False |
e410e76d6538
Added capability to disable code style checks using an eflags: comment like 'eflags: noqa = M601, M702'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
649 | else: |
e410e76d6538
Added capability to disable code style checks using an eflags: comment like 'eflags: noqa = M601, M702'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
650 | flags[flag] = True |
788
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
651 | |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
652 | return flags |
5b1b59777460
Added a feature where flags can be given at the end of a source file. The only flag supported is 'FileType' to overwrite the filetype detection mechanism.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
768
diff
changeset
|
653 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
654 | |
1166
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
655 | def extractFlagsFromFile(filename): |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
656 | """ |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
657 | Function to extract eric specific flags out of the given file. |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
658 | |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
659 | @param filename name of the file to be scanned (string) |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
660 | @return dictionary of string, boolean, complex, float and int |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
661 | """ |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
662 | try: |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
663 | source, encoding = readEncodedFile(filename) |
7836
2f0d208b8137
Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7835
diff
changeset
|
664 | except (UnicodeError, OSError): |
1166
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
665 | return {} |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
666 | |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
667 | return extractFlags(source) |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
668 | |
a94b0a2fafd7
Extended the unit test interface to support skipped tests, expected failures and unexpected successes and to better cope with Python2 scripts when run from the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1142
diff
changeset
|
669 | |
5586
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
670 | def extractLineFlags(line, startComment="#", endComment="", flagsLine=False): |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
671 | """ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
672 | Function to extract flags starting and ending with '__' from a line |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
673 | comment. |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
674 | |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
675 | @param line line to extract flags from (string) |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7849
diff
changeset
|
676 | @param startComment string identifying the start of the comment (string) |
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7849
diff
changeset
|
677 | @param endComment string identifying the end of a comment (string) |
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7849
diff
changeset
|
678 | @param flagsLine flag indicating to check for a flags only line (bool) |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
679 | @return list containing the extracted flags (list of strings) |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
680 | """ |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
681 | flags = [] |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
682 | |
5586
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
683 | if not flagsLine or ( |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
684 | flagsLine and line.strip().startswith(startComment)): |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
685 | pos = line.rfind(startComment) |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
686 | if pos >= 0: |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
687 | comment = line[pos + len(startComment):].strip() |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
688 | if endComment: |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
689 | endPos = line.rfind(endComment) |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
690 | if endPos >= 0: |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
691 | comment = comment[:endPos] |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
692 | flags = [f.strip() for f in comment.split() |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5421
diff
changeset
|
693 | if (f.startswith("__") and f.endswith("__"))] |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
694 | return flags |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
695 | |
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1190
diff
changeset
|
696 | |
5020
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
697 | def filterAnsiSequences(txt): |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
698 | """ |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
699 | Function to filter out ANSI escape sequences (color only). |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
700 | |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
701 | @param txt text to be filtered |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
702 | @type str |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
703 | @return text without ANSI escape sequences |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
704 | @rtype str |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
705 | """ |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
706 | ntxt = txt[:] |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
707 | while True: |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
708 | start = ntxt.find("\33[") # find escape character |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
709 | if start == -1: |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
710 | break |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
711 | end = ntxt.find("m", start) |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
712 | if end == -1: |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
713 | break |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
714 | ntxt = ntxt[:start] + ntxt[end + 1:] |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
715 | |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
716 | return ntxt |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
717 | |
d0afdfd8e45b
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4869
diff
changeset
|
718 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
719 | def toNativeSeparators(path): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721 | Function returning a path, that is using native separator characters. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | @param path path to be converted (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | @return path with converted separator characters (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726 | return QDir.toNativeSeparators(path) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
727 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
728 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
729 | def fromNativeSeparators(path): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
730 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
731 | Function returning a path, that is using "/" separator characters. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
732 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
733 | @param path path to be converted (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
734 | @return path with converted separator characters (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
735 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
736 | return QDir.fromNativeSeparators(path) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
737 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
738 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
739 | def normcasepath(path): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
740 | """ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
741 | Function returning a path, that is normalized with respect to its case |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
742 | and references. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
743 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
744 | @param path file path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
745 | @return case normalized path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
746 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747 | return os.path.normcase(os.path.normpath(path)) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
748 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
749 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | def normcaseabspath(path): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751 | """ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
752 | Function returning an absolute path, that is normalized with respect to |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
753 | its case and references. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755 | @param path file path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
756 | @return absolute, normalized path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
757 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | return os.path.normcase(os.path.abspath(path)) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
759 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
760 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761 | def normjoinpath(a, *p): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
762 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
763 | Function returning a normalized path of the joined parts passed into it. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
764 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
765 | @param a first path to be joined (string) |
7849
70e464748aaa
Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7843
diff
changeset
|
766 | @param p variable number of path parts to be joined (string) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
767 | @return normalized path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
768 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
769 | return os.path.normpath(os.path.join(a, *p)) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
770 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
771 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
772 | def normabsjoinpath(a, *p): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
773 | """ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
774 | Function returning a normalized, absolute path of the joined parts passed |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
775 | into it. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
776 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
777 | @param a first path to be joined (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778 | @param p variable number of path parts to be joind (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779 | @return absolute, normalized path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | return os.path.abspath(os.path.join(a, *p)) |
7835
0835ed67714b
Changed code slightly to work with the upcoming qt5-applications package done by Kyle Altendorf.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
782 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
783 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784 | def isinpath(file): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
785 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786 | Function to check for an executable file. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | @param file filename of the executable to check (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | @return flag to indicate, if the executable file is accessible |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | via the searchpath defined by the PATH environment variable. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | if os.path.isabs(file): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793 | return os.access(file, os.X_OK) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
794 | |
1329
ac21bb9cf8b9
Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1316
diff
changeset
|
795 | if os.path.exists(os.path.join(os.curdir, file)): |
ac21bb9cf8b9
Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1316
diff
changeset
|
796 | return os.access(os.path.join(os.curdir, file), os.X_OK) |
ac21bb9cf8b9
Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1316
diff
changeset
|
797 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
798 | path = getEnvironmentEntry('PATH') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
799 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
800 | # environment variable not defined |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
801 | if path is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
802 | return False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
803 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
804 | dirs = path.split(os.pathsep) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
805 | return any(os.access(os.path.join(directory, file), os.X_OK) |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
806 | for directory in dirs) |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
807 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
808 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
809 | def startswithPath(path, start): |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
810 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
811 | Function to check, if a path starts with a given start path. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
812 | |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
813 | @param path path to be checked |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
814 | @type str |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
815 | @param start start path |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
816 | @type str |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
817 | @return flag indicating that the path starts with the given start |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
818 | path |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
819 | @rtype bool |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
820 | """ |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
821 | return ( |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
822 | bool(start) and |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
823 | ( |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
824 | path == start or |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
825 | normcasepath(path).startswith(normcasepath(start + "/")) |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
826 | ) |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
827 | ) |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
828 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
829 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
830 | def relativeUniversalPath(path, start): |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
831 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
832 | Function to convert a file path to a path relative to a start path |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
833 | with universal separators. |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
834 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
835 | @param path file or directory name to convert (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
836 | @param start start path (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
837 | @return relative path or unchanged path, if path does not start with |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
838 | the start path with universal separators (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
839 | """ |
7849
70e464748aaa
Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7843
diff
changeset
|
840 | return fromNativeSeparators(os.path.relpath(path, start)) |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
841 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
842 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
843 | def absolutePath(path, start): |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
844 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
845 | Public method to convert a path relative to a start path to an |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
846 | absolute path. |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
847 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
848 | @param path file or directory name to convert (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
849 | @param start start path (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
850 | @return absolute path (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
851 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
852 | if not os.path.isabs(path): |
7849
70e464748aaa
Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7843
diff
changeset
|
853 | path = os.path.normpath(os.path.join(start, path)) |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
854 | return path |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
855 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
856 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
857 | def absoluteUniversalPath(path, start): |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
858 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
859 | Public method to convert a path relative to a start path with |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
860 | universal separators to an absolute path. |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
861 | |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
862 | @param path file or directory name to convert (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
863 | @param start start path (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
864 | @return absolute path with native separators (string) |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
865 | """ |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
866 | if not os.path.isabs(path): |
7849
70e464748aaa
Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7843
diff
changeset
|
867 | path = toNativeSeparators(os.path.normpath(os.path.join(start, path))) |
3833
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
868 | return path |
64b5f5fa3b00
Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3670
diff
changeset
|
869 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
870 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
871 | def getExecutablePath(file): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
872 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
873 | Function to build the full path of an executable file from the environment. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
874 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
875 | @param file filename of the executable to check (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
876 | @return full executable name, if the executable file is accessible |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
877 | via the searchpath defined by the PATH environment variable, or an |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
878 | empty string otherwise. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
879 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
880 | if os.path.isabs(file): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
881 | if os.access(file, os.X_OK): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
882 | return file |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
883 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
884 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
885 | |
1329
ac21bb9cf8b9
Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1316
diff
changeset
|
886 | cur_path = os.path.join(os.curdir, file) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
887 | if os.path.exists(cur_path) and os.access(cur_path, os.X_OK): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
888 | return cur_path |
1329
ac21bb9cf8b9
Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1316
diff
changeset
|
889 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
890 | path = os.getenv('PATH') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
891 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
892 | # environment variable not defined |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
893 | if path is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
894 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
895 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
896 | dirs = path.split(os.pathsep) |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
897 | for directory in dirs: |
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
898 | exe = os.path.join(directory, file) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
899 | if os.access(exe, os.X_OK): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
900 | return exe |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
901 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
902 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
903 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
904 | |
2553
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
905 | def getExecutablePaths(file): |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
906 | """ |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
907 | Function to build all full path of an executable file from the environment. |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
908 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
909 | @param file filename of the executable (string) |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
910 | @return list of full executable names (list of strings), if the executable |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
911 | file is accessible via the searchpath defined by the PATH environment |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
912 | variable, or an empty list otherwise. |
2553
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
913 | """ |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
914 | paths = [] |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
915 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
916 | if os.path.isabs(file): |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
917 | if os.access(file, os.X_OK): |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
918 | return [file] |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
919 | else: |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
920 | return [] |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
921 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
922 | cur_path = os.path.join(os.curdir, file) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
923 | if os.path.exists(cur_path) and os.access(cur_path, os.X_OK): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
924 | paths.append(cur_path) |
2553
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
925 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
926 | path = os.getenv('PATH') |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
927 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
928 | # environment variable not defined |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
929 | if path is not None: |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
930 | dirs = path.split(os.pathsep) |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
931 | for directory in dirs: |
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
932 | exe = os.path.join(directory, file) |
2553
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
933 | if os.access(exe, os.X_OK) and exe not in paths: |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
934 | paths.append(exe) |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
935 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
936 | return paths |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
937 | |
2ef00ee163a8
Added a function to Utilities to determine all possible full executable paths using the PATH environment variable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2319
diff
changeset
|
938 | |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
939 | def getWindowsExecutablePath(file): |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
940 | """ |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
941 | Function to build the full path of an executable file from the environment |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
942 | on Windows platforms. |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
943 | |
6495
6e73d31af3af
Changed the extension of the generated script files for Windows from '.bat' to '.cmd'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6477
diff
changeset
|
944 | First an executable with the extension .exe is searched for, thereafter |
6e73d31af3af
Changed the extension of the generated script files for Windows from '.bat' to '.cmd'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6477
diff
changeset
|
945 | such with the extensions .cmd or .bat and finally the given file name as |
6e73d31af3af
Changed the extension of the generated script files for Windows from '.bat' to '.cmd'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6477
diff
changeset
|
946 | is. The first match is returned. |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
947 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
948 | @param file filename of the executable to check (string) |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
949 | @return full executable name, if the executable file is accessible |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
950 | via the searchpath defined by the PATH environment variable, or an |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
951 | empty string otherwise. |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
952 | """ |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
953 | if os.path.isabs(file): |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
954 | if os.access(file, os.X_OK): |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
955 | return file |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
956 | else: |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
957 | return "" |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
958 | |
6495
6e73d31af3af
Changed the extension of the generated script files for Windows from '.bat' to '.cmd'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6477
diff
changeset
|
959 | filenames = [file + ".exe", file + ".cmd", file + ".bat", file] |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
960 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
961 | for filename in filenames: |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
962 | cur_path = os.path.join(os.curdir, filename) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
963 | if os.path.exists(cur_path) and os.access(cur_path, os.X_OK): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
964 | return os.path.abspath(cur_path) |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
965 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
966 | path = os.getenv('PATH') |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
967 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
968 | # environment variable not defined |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
969 | if path is None: |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
970 | return "" |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
971 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
972 | dirs = path.split(os.pathsep) |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
973 | for directory in dirs: |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
974 | for filename in filenames: |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
975 | exe = os.path.join(directory, filename) |
5331
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
976 | if os.access(exe, os.X_OK): |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
977 | return exe |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
978 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
979 | return "" |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
980 | |
8d607cd52f26
Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5020
diff
changeset
|
981 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
982 | def isExecutable(exe): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
983 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
984 | Function to check, if a file is executable. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
985 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
986 | @param exe filename of the executable to check (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
987 | @return flag indicating executable status (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
988 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
989 | return os.access(exe, os.X_OK) |
5708
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
990 | |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
991 | |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
992 | def isDrive(path): |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
993 | """ |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
994 | Function to check, if a path is a Windows drive. |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
995 | |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
996 | @param path path name to be checked |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
997 | @type str |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
998 | @return flag indicating a Windows drive |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
999 | @rtype bool |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1000 | """ |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1001 | isDrive = False |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1002 | drive, directory = os.path.splitdrive(path) |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1003 | if ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1004 | drive and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1005 | len(drive) == 2 and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1006 | drive.endswith(":") and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1007 | directory in ["", "\\", "/"] |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1008 | ): |
5708
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1009 | isDrive = True |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1010 | |
9b01b4004314
Fixed an issue in the file browser model caused some error message being shown upon startup in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5696
diff
changeset
|
1011 | return isDrive |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1012 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1013 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1014 | def samepath(f1, f2): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1015 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1016 | Function to compare two paths. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1017 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1018 | @param f1 first path for the compare (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1019 | @param f2 second path for the compare (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1020 | @return flag indicating whether the two paths represent the |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1021 | same path on disk. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1022 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1023 | if f1 is None or f2 is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1024 | return False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1025 | |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1026 | if ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1027 | normcaseabspath(os.path.realpath(f1)) == |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1028 | normcaseabspath(os.path.realpath(f2)) |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1029 | ): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1030 | return True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1031 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1032 | return False |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1033 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1034 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1035 | def samefilepath(f1, f2): |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1036 | """ |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1037 | Function to compare two paths. Strips the filename. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1038 | |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1039 | @param f1 first filepath for the compare (string) |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1040 | @param f2 second filepath for the compare (string) |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1041 | @return flag indicating whether the two paths represent the |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1042 | same path on disk. |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1043 | """ |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1044 | if f1 is None or f2 is None: |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1045 | return False |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1046 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1047 | if (normcaseabspath(os.path.dirname(os.path.realpath(f1))) == |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3060
diff
changeset
|
1048 | normcaseabspath(os.path.dirname(os.path.realpath(f2)))): |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3060
diff
changeset
|
1049 | return True |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1050 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1051 | return False |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2525
diff
changeset
|
1052 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1053 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1054 | EXTSEP = os.extsep |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1055 | except AttributeError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1056 | EXTSEP = "." |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1057 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1058 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1059 | def splitPath(name): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1060 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1061 | Function to split a pathname into a directory part and a file part. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1062 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1063 | @param name path name (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1064 | @return a tuple of 2 strings (dirname, filename). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1065 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1066 | if os.path.isdir(name): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1067 | dn = os.path.abspath(name) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1068 | fn = "." |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1069 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1070 | dn, fn = os.path.split(name) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1071 | return (dn, fn) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1072 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1073 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1074 | def joinext(prefix, ext): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1075 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1076 | Function to join a file extension to a path. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1077 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1078 | The leading "." of ext is replaced by a platform specific extension |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1079 | separator if necessary. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1080 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1081 | @param prefix the basepart of the filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1082 | @param ext the extension part (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1083 | @return the complete filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1084 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1085 | if ext[0] != ".": |
3621
15f23ed3f216
Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3591
diff
changeset
|
1086 | ext = ".{0}".format(ext) |
15f23ed3f216
Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3591
diff
changeset
|
1087 | # require leading separator to match os.path.splitext |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1088 | return prefix + EXTSEP + ext[1:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1089 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1090 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1091 | def compactPath(path, width, measure=len): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1092 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1093 | Function to return a compacted path fitting inside the given width. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1094 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1095 | @param path path to be compacted (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1096 | @param width width for the compacted path (integer) |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1097 | @param measure reference to a function used to measure the length of the |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1098 | string |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1099 | @return compacted path (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1100 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1101 | if measure(path) <= width: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1102 | return path |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1103 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1104 | ellipsis = '...' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1105 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1106 | head, tail = os.path.split(path) |
343
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1107 | mid = len(head) // 2 |
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1108 | head1 = head[:mid] |
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1109 | head2 = head[mid:] |
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1110 | while head1: |
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1111 | # head1 is same size as head2 or one shorter |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
1112 | path = os.path.join("{0}{1}{2}".format(head1, ellipsis, head2), tail) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1113 | if measure(path) <= width: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1114 | return path |
343
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1115 | head1 = head1[:-1] |
f23d1272de6b
Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
177
diff
changeset
|
1116 | head2 = head2[1:] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1117 | path = os.path.join(ellipsis, tail) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1118 | if measure(path) <= width: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1119 | return path |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1120 | while tail: |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
1121 | path = "{0}{1}".format(ellipsis, tail) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1122 | if measure(path) <= width: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1123 | return path |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1124 | tail = tail[1:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1125 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1126 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1127 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1128 | def direntries(path, filesonly=False, pattern=None, followsymlinks=True, |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1129 | checkStop=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1130 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1131 | Function returning a list of all files and directories. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1132 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1133 | @param path root of the tree to check |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1134 | @type str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1135 | @param filesonly flag indicating that only files are wanted |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1136 | @type bool |
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1137 | @param pattern a filename pattern or list of filename patterns to check |
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1138 | against |
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1139 | @type str or list of str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1140 | @param followsymlinks flag indicating whether symbolic links |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1141 | should be followed |
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1142 | @type bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1143 | @param checkStop function to be called to check for a stop |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1144 | @type function |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1145 | @return list of all files and directories in the tree rooted |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1146 | at path. The names are expanded to start with path. |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1147 | @rtype list of strs |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1148 | """ |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1149 | patterns = pattern if isinstance(pattern, list) else [pattern] |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1150 | files = [] if filesonly else [path] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1151 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1152 | entries = os.listdir(path) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1153 | for entry in entries: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1154 | if checkStop and checkStop(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1155 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1156 | |
6303
ec9ebaf206fb
Got rid of the Windows "DotNet"-Hack (i.e. using _ instead of . as first character of special directories).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6292
diff
changeset
|
1157 | if entry in ['.svn', |
ec9ebaf206fb
Got rid of the Windows "DotNet"-Hack (i.e. using _ instead of . as first character of special directories).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6292
diff
changeset
|
1158 | '.hg', |
ec9ebaf206fb
Got rid of the Windows "DotNet"-Hack (i.e. using _ instead of . as first character of special directories).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6292
diff
changeset
|
1159 | '.git', |
ec9ebaf206fb
Got rid of the Windows "DotNet"-Hack (i.e. using _ instead of . as first character of special directories).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6292
diff
changeset
|
1160 | '.ropeproject', |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1161 | '.eric7project', |
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1162 | '.jedi']: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1163 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1164 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1165 | fentry = os.path.join(path, entry) |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1166 | if ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1167 | pattern and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1168 | not os.path.isdir(fentry) and |
8845
3d3c1b812fe4
Changed the find location widget to find files without extension as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
1169 | not any(fnmatch.fnmatch(entry, p) for p in patterns) |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1170 | ): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1171 | # entry doesn't fit the given pattern |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1172 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1173 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1174 | if os.path.isdir(fentry): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1175 | if os.path.islink(fentry) and not followsymlinks: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1176 | continue |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1177 | files += direntries( |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1178 | fentry, filesonly, pattern, followsymlinks, checkStop) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1179 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1180 | files.append(fentry) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1181 | except OSError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1182 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1183 | except UnicodeDecodeError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1184 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1185 | return files |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1186 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1187 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1188 | def getDirs(path, excludeDirs): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1189 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1190 | Function returning a list of all directories below path. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1191 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1192 | @param path root of the tree to check |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1193 | @param excludeDirs basename of directories to ignore |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1194 | @return list of all directories found |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1195 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1196 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1197 | names = os.listdir(path) |
7836
2f0d208b8137
Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7835
diff
changeset
|
1198 | except OSError: |
6891
93f82da09f22
Fixed some code style issues detected by the new 'return' checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6881
diff
changeset
|
1199 | return [] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1200 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1201 | dirs = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1202 | for name in names: |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1203 | if ( |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1204 | os.path.isdir(os.path.join(path, name)) and |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1205 | not os.path.islink(os.path.join(path, name)) |
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1206 | ): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1207 | exclude = 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1208 | for e in excludeDirs: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1209 | if name.split(os.sep, 1)[0] == e: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1210 | exclude = 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1211 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1212 | if not exclude: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1213 | dirs.append(os.path.join(path, name)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1214 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1215 | for name in dirs[:]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1216 | if not os.path.islink(name): |
8217
385f60c94548
Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8205
diff
changeset
|
1217 | dirs += getDirs(name, excludeDirs) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1218 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1219 | return dirs |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1220 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1221 | |
8067
a467ab075be0
MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8062
diff
changeset
|
1222 | def findVolume(volumeName, findAll=False): |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1223 | """ |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1224 | Function to find the directory belonging to a given volume name. |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1225 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1226 | @param volumeName name of the volume to search for |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1227 | @type str |
8067
a467ab075be0
MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8062
diff
changeset
|
1228 | @param findAll flag indicating to get the directories for all volumes |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1229 | starting with the given name (defaults to False) |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1230 | @type bool (optional) |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1231 | @return directory path or list of directory paths for the given volume |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1232 | name |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1233 | @rtype str or list of str |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1234 | """ |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1235 | volumeDirectories = [] |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1236 | volumeDirectory = None |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1237 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1238 | if isWindowsPlatform(): |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1239 | # we are on a Windows platform |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1240 | def getVolumeName(diskName): |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1241 | """ |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1242 | Local function to determine the volume of a disk or device. |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1243 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1244 | Each disk or external device connected to windows has an |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1245 | attribute called "volume name". This function returns the |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1246 | volume name for the given disk/device. |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1247 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1248 | Code from http://stackoverflow.com/a/12056414 |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1249 | """ |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1250 | volumeNameBuffer = ctypes.create_unicode_buffer(1024) |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1251 | ctypes.windll.kernel32.GetVolumeInformationW( |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1252 | ctypes.c_wchar_p(diskName), volumeNameBuffer, |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1253 | ctypes.sizeof(volumeNameBuffer), None, None, None, None, 0) |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1254 | return volumeNameBuffer.value |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1255 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1256 | # |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1257 | # In certain circumstances, volumes are allocated to USB |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1258 | # storage devices which cause a Windows popup to raise if their |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1259 | # volume contains no media. Wrapping the check in SetErrorMode |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1260 | # with SEM_FAILCRITICALERRORS (1) prevents this popup. |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1261 | # |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1262 | oldMode = ctypes.windll.kernel32.SetErrorMode(1) |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1263 | try: |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1264 | for disk in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1265 | dirpath = "{0}:\\".format(disk) |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1266 | if os.path.exists(dirpath): |
8067
a467ab075be0
MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8062
diff
changeset
|
1267 | if findAll: |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1268 | if getVolumeName(dirpath).startswith(volumeName): |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1269 | volumeDirectories.append(dirpath) |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1270 | else: |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1271 | if getVolumeName(dirpath) == volumeName: |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1272 | volumeDirectory = dirpath |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1273 | break |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1274 | finally: |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1275 | ctypes.windll.kernel32.SetErrorMode(oldMode) |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1276 | else: |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1277 | # we are on a Linux or macOS platform |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1278 | for mountCommand in ["mount", "/sbin/mount", "/usr/sbin/mount"]: |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
1279 | with contextlib.suppress(FileNotFoundError): |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
1280 | mountOutput = ( |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
1281 | subprocess.check_output(mountCommand).splitlines() # secok |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7599
diff
changeset
|
1282 | ) |
8100
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1283 | mountedVolumes = [ |
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1284 | x.decode("utf-8").split(" type")[0].split(maxsplit=2)[2] |
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1285 | for x in mountOutput |
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1286 | ] |
8067
a467ab075be0
MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8062
diff
changeset
|
1287 | if findAll: |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1288 | for volume in mountedVolumes: |
8100
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1289 | if volumeName in volume: |
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1290 | volumeDirectories.append(volume) |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1291 | if volumeDirectories: |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1292 | break |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1293 | else: |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1294 | for volume in mountedVolumes: |
8100
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1295 | if volume.endswith(volumeName): |
a4c231453cbc
Utilties: changed the volume detection logic to be able to deal with volume names containing spaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8075
diff
changeset
|
1296 | volumeDirectory = volume |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1297 | break |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1298 | if volumeDirectory: |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1299 | break |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1300 | |
8067
a467ab075be0
MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8062
diff
changeset
|
1301 | if findAll: |
8062
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1302 | return volumeDirectories |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1303 | else: |
8dc5acb30a8b
MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7960
diff
changeset
|
1304 | return volumeDirectory |
7098
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1305 | |
fbdf76af88ed
Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
1306 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1307 | def getTestFileName(fn): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1308 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1309 | Function to build the filename of a unittest file. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1310 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1311 | The filename for the unittest file is built by prepending |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1312 | the string "test" to the filename passed into this function. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1313 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1314 | @param fn filename basis to be used for the unittest filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1315 | @return filename of the corresponding unittest file (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1316 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1317 | dn, fn = os.path.split(fn) |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
1318 | return os.path.join(dn, "test{0}".format(fn)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1319 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1320 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1321 | def parseOptionString(s): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1322 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1323 | Function used to convert an option string into a list of options. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1324 | |
8075 | 1325 | @param s option string |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1326 | @type str |
8075 | 1327 | @return list of options |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1328 | @rtype list of str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1329 | """ |
8075 | 1330 | s = re.sub(r"%[A-Z%]", _percentReplacementFunc, s) |
1331 | return shlex.split(s) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1332 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1333 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1334 | def _percentReplacementFunc(matchobj): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1335 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1336 | Protected function called for replacing % codes. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1337 | |
8075 | 1338 | @param matchobj match object for the code |
1339 | @type re.Match | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1340 | @return replacement string |
8075 | 1341 | @rtype str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1342 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1343 | return getPercentReplacement(matchobj.group(0)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1344 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1345 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1346 | def getPercentReplacement(code): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1347 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1348 | Function to get the replacement for code. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1349 | |
8075 | 1350 | @param code code indicator |
1351 | @type str | |
1352 | @return replacement string | |
1353 | @rtype str | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1354 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1355 | if code in ["C", "%C"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1356 | # column of the cursor of the current editor |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1357 | aw = ericApp().getObject("ViewManager").activeWindow() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1358 | if aw is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1359 | column = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1360 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1361 | column = aw.getCursorPosition()[1] |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
1362 | return "{0:d}".format(column) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1363 | elif code in ["D", "%D"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1364 | # directory of active editor |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1365 | aw = ericApp().getObject("ViewManager").activeWindow() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1366 | if aw is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1367 | dn = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1368 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1369 | fn = aw.getFileName() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1370 | if fn is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1371 | dn = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1372 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1373 | dn = os.path.dirname(fn) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1374 | return dn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1375 | elif code in ["F", "%F"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1376 | # filename (complete) of active editor |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1377 | aw = ericApp().getObject("ViewManager").activeWindow() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1378 | if aw is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1379 | fn = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1380 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1381 | fn = aw.getFileName() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1382 | if fn is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1383 | fn = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1384 | return fn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1385 | elif code in ["H", "%H"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1386 | # home directory |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1387 | return getHomeDir() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1388 | elif code in ["L", "%L"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1389 | # line of the cursor of the current editor |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1390 | aw = ericApp().getObject("ViewManager").activeWindow() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1391 | if aw is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1392 | line = 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1393 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1394 | line = aw.getCursorPosition()[0] + 1 |
432
497e188ee86e
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
381
diff
changeset
|
1395 | return "{0:d}".format(line) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1396 | elif code in ["P", "%P"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1397 | # project path |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1398 | projectPath = ericApp().getObject("Project").getProjectPath() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1399 | if not projectPath: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1400 | projectPath = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1401 | return projectPath |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1402 | elif code in ["S", "%S"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1403 | # selected text of the current editor |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1404 | aw = ericApp().getObject("ViewManager").activeWindow() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1405 | if aw is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1406 | text = "not_available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1407 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1408 | text = aw.selectedText() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1409 | return text |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1410 | elif code in ["U", "%U"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1411 | # username |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1412 | un = getUserName() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1413 | if un is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1414 | return code |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1415 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1416 | return un |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1417 | elif code in ["%", "%%"]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1418 | # the percent sign |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1419 | return "%" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1420 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1421 | # unknown code, just return it |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1422 | return code |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1423 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1424 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1425 | def getPercentReplacementHelp(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1426 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1427 | Function to get the help text for the supported %-codes. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1428 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1429 | @returns help text (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1430 | """ |
3030
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
1431 | return QCoreApplication.translate( |
4a0a82ddd9d2
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2997
diff
changeset
|
1432 | "Utilities", |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1433 | """<p>You may use %-codes as placeholders in the string.""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1434 | """ Supported codes are:""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1435 | """<table>""" |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1436 | """<tr><td>%C</td><td>column of the cursor of the current editor""" |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1437 | """</td></tr>""" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1438 | """<tr><td>%D</td><td>directory of the current editor</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1439 | """<tr><td>%F</td><td>filename of the current editor</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1440 | """<tr><td>%H</td><td>home directory of the current user</td></tr>""" |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1441 | """<tr><td>%L</td><td>line of the cursor of the current editor""" |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1442 | """</td></tr>""" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1443 | """<tr><td>%P</td><td>path of the current project</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1444 | """<tr><td>%S</td><td>selected text of the current editor</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1445 | """<tr><td>%U</td><td>username of the current user</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1446 | """<tr><td>%%</td><td>the percent sign</td></tr>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1447 | """</table>""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1448 | """</p>""") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1449 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1450 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1451 | def getUserName(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1452 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1453 | Function to get the user name. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1454 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1455 | @return user name (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1456 | """ |
114
f6e7cec11168
Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
97
diff
changeset
|
1457 | user = getpass.getuser() |
f6e7cec11168
Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
97
diff
changeset
|
1458 | |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1459 | if isWindowsPlatform() and not user: |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1460 | return win32_GetUserName() |
2227
b7aceb255831
First commit of the simple IRC client for eric. It is usable but not yet complete.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2194
diff
changeset
|
1461 | |
b7aceb255831
First commit of the simple IRC client for eric. It is usable but not yet complete.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2194
diff
changeset
|
1462 | return user |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1463 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1464 | |
2239
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1465 | def getRealName(): |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1466 | """ |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1467 | Function to get the real name of the user. |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1468 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1469 | @return real name of the user (string) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1470 | """ |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1471 | if isWindowsPlatform(): |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1472 | return win32_getRealName() |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1473 | else: |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1474 | import pwd |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1475 | user = getpass.getuser() |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1476 | return pwd.getpwnam(user).pw_gecos |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1477 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
1478 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1479 | def getHomeDir(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1480 | """ |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
1481 | Function to get a users home directory. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1482 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1483 | @return home directory (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1484 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1485 | return QDir.homePath() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1486 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1487 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1488 | def getPythonLibPath(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1489 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1490 | Function to determine the path to Python's library. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1491 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1492 | @return path to the Python library (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1493 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1494 | pyFullVers = sys.version.split()[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1495 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1496 | vl = re.findall("[0-9.]*", pyFullVers)[0].split(".") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1497 | major = vl[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1498 | minor = vl[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1499 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1500 | pyVers = major + "." + minor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1501 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1502 | if isWindowsPlatform(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1503 | libDir = sys.prefix + "\\Lib" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1504 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1505 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1506 | syslib = sys.lib |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1507 | except AttributeError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1508 | syslib = "lib" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1509 | libDir = sys.prefix + "/" + syslib + "/python" + pyVers |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1510 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1511 | return libDir |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1512 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1513 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1514 | def getPythonVersion(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1515 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1516 | Function to get the Python version (major, minor) as an integer value. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1517 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1518 | @return An integer representing major and minor version number (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1519 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1520 | return sys.hexversion >> 16 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1521 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1522 | |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1523 | def determinePythonVersion(filename, source, editor=None): |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1524 | """ |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1525 | Function to determine the python version of a given file. |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1526 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1527 | @param filename name of the file with extension (str) |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1528 | @param source of the file (str) |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7849
diff
changeset
|
1529 | @param editor reference to the editor, if the file is opened |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1530 | already (Editor object) |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1531 | @return Python version if file is Python3 (int) |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1532 | """ |
7186
ccd55666e9d2
Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7098
diff
changeset
|
1533 | pyAssignment = { |
ccd55666e9d2
Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7098
diff
changeset
|
1534 | "Python3": 3, |
ccd55666e9d2
Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7098
diff
changeset
|
1535 | "MicroPython": 3, |
8377
ea65a8f4ff49
Added Cython to the list of Python3 languages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8358
diff
changeset
|
1536 | "Cython": 3, |
7186
ccd55666e9d2
Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7098
diff
changeset
|
1537 | } |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1538 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1539 | if not editor: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1540 | viewManager = ericApp().getObject('ViewManager') |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1541 | editor = viewManager.getOpenEditor(filename) |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1542 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1543 | # Maybe the user has changed the language |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1544 | if editor and editor.getFileType() in pyAssignment: |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1545 | return pyAssignment[editor.getFileType()] |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1546 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1547 | pyVer = 0 |
3457
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1548 | if filename: |
4217
38e8903f9c2f
Fixed two little issue that could lead to a traceback in the code style checker dialog and Utilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
1549 | if not source: |
38e8903f9c2f
Fixed two little issue that could lead to a traceback in the code style checker dialog and Utilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
1550 | source = readEncodedFile(filename)[0] |
3457
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1551 | flags = extractFlags(source) |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1552 | ext = os.path.splitext(filename)[1] |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1553 | py3Ext = Preferences.getPython("Python3Extensions") |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1554 | project = ericApp().getObject('Project') |
3457
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1555 | basename = os.path.basename(filename) |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1556 | |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1557 | if "FileType" in flags: |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1558 | pyVer = pyAssignment.get(flags["FileType"], 0) |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1559 | elif project.isOpen() and project.isProjectFile(filename): |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1560 | language = project.getEditorLexerAssoc(basename) |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1561 | if not language: |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1562 | language = Preferences.getEditorLexerAssoc(basename) |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1563 | if language == 'Python3': |
3457
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1564 | pyVer = pyAssignment[language] |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1565 | |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1566 | if pyVer: |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1567 | # Skip the next tests |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1568 | pass |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1569 | elif (Preferences.getProject("DeterminePyFromProject") and |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1570 | project.isOpen() and |
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1571 | project.isProjectFile(filename) and |
7637
c878e8255972
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7636
diff
changeset
|
1572 | ext in py3Ext): |
6735
31e263d49c04
Fixed some code style issues detected by the updated style checker (over-indented lines).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
1573 | pyVer = pyAssignment.get(project.getProjectLanguage(), 0) |
7637
c878e8255972
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7636
diff
changeset
|
1574 | elif ext in py3Ext: |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1575 | pyVer = 3 |
4000
e91713926d1a
Fixed an issue in Utilities determining the Python version of a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3968
diff
changeset
|
1576 | elif source: |
7192
a22eee00b052
Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7186
diff
changeset
|
1577 | if isinstance(source, str): |
3968
19d287451e44
Fixed an issue in Utilities.determinePythonVersion() when handling a spource that had been split into lines already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3833
diff
changeset
|
1578 | line0 = source.splitlines()[0] |
19d287451e44
Fixed an issue in Utilities.determinePythonVersion() when handling a spource that had been split into lines already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3833
diff
changeset
|
1579 | else: |
19d287451e44
Fixed an issue in Utilities.determinePythonVersion() when handling a spource that had been split into lines already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3833
diff
changeset
|
1580 | line0 = source[0] |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1581 | if ( |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1582 | line0.startswith("#!") and |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1583 | (("python3" in line0) or ("python" in line0)) |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1584 | ): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1585 | pyVer = 3 |
3457
bfc38662e6fc
Fixed another issue determining the Python variant of a file causing a traceback when a new, empty editor is opened.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3451
diff
changeset
|
1586 | |
7637
c878e8255972
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7636
diff
changeset
|
1587 | if pyVer == 0 and ext in py3Ext: |
c878e8255972
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7636
diff
changeset
|
1588 | pyVer = 3 |
3446
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1589 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1590 | return pyVer |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1591 | |
5a670e55adbb
Improved the way the Python variant of a source file is detected (thanks to Tobias Rzepka).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3438
diff
changeset
|
1592 | |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1593 | def rxIndex(rx, txt): |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1594 | """ |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1595 | Function to get the index (start position) of a regular expression match |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1596 | within some text. |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1597 | |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1598 | @param rx regular expression object as created by re.compile() |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1599 | @type re.Pattern |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1600 | @param txt text to be scanned |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1601 | @type str |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1602 | @return start position of the match or -1 indicating no match was found |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1603 | @rtype int |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1604 | """ |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1605 | match = rx.search(txt) |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1606 | if match is None: |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1607 | return -1 |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1608 | else: |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1609 | return match.start() |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1610 | |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1611 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1612 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1613 | ## functions for environment handling |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1614 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1615 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1616 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1617 | def getEnvironmentEntry(key, default=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1618 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1619 | Module function to get an environment entry. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1620 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1621 | @param key key of the requested environment entry (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1622 | @param default value to be returned, if the environment doesn't contain |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1623 | the requested entry (string) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1624 | @return the requested entry or the default value, if the entry wasn't |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1625 | found (string or None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1626 | """ |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1627 | pattern = "^{0}[ \t]*=".format(key) |
8260
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1628 | filterRe = ( |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1629 | re.compile(pattern, re.IGNORECASE) |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1630 | if isWindowsPlatform() else |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1631 | re.compile(pattern) |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1632 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1633 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1634 | entries = [e for e in QProcess.systemEnvironment() |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1635 | if filterRe.search(e) is not None] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1636 | if not entries: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1637 | return default |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1638 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1639 | # if there are multiple entries, just consider the first one |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1640 | ename, value = entries[0].split("=", 1) |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1641 | return value.strip() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1642 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1643 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1644 | def hasEnvironmentEntry(key): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1645 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1646 | Module function to check, if the environment contains an entry. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1647 | |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1648 | @param key key of the requested environment entry |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1649 | @type str |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1650 | @return flag indicating the presence of the requested entry |
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1651 | @rtype bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1652 | """ |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1653 | pattern = "^{0}[ \t]*=".format(key) |
8260
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1654 | filterRe = ( |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1655 | re.compile(pattern, re.IGNORECASE) |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1656 | if isWindowsPlatform() else |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1657 | re.compile(pattern) |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8258
diff
changeset
|
1658 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1659 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1660 | entries = [e for e in QProcess.systemEnvironment() |
7775
4a1db75550bd
Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7729
diff
changeset
|
1661 | if filterRe.search(e) is not None] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1662 | return len(entries) > 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1663 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1664 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1665 | ## Qt utility functions below |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1666 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1667 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1668 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1669 | def generateQtToolName(toolname): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1670 | """ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1671 | Module function to generate the executable name for a Qt tool like |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1672 | designer. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1673 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1674 | @param toolname base name of the tool (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1675 | @return the Qt tool name without extension (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1676 | """ |
7198
684261ef2165
Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7196
diff
changeset
|
1677 | return "{0}{1}{2}".format(Preferences.getQt("QtToolsPrefix"), |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1678 | toolname, |
7198
684261ef2165
Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7196
diff
changeset
|
1679 | Preferences.getQt("QtToolsPostfix") |
3039
8dd0165d805d
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3030
diff
changeset
|
1680 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1681 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1682 | |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1683 | def getQtMacBundle(toolname): |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1684 | """ |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1685 | Module function to determine the correct Mac OS X bundle name for Qt tools. |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1686 | |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1687 | @param toolname plain name of the tool (e.g. "designer") (string) |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1688 | @return bundle name of the Qt tool (string) |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1689 | """ |
2619
55f6484ad1c3
Tested and completed the Qt binaries path stuff on Mac OS X.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2615
diff
changeset
|
1690 | qtDir = getQtBinariesPath() |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1691 | bundles = [ |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1692 | os.path.join( |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1693 | qtDir, 'bin', generateQtToolName(toolname.capitalize())) + ".app", |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1694 | os.path.join(qtDir, 'bin', generateQtToolName(toolname)) + ".app", |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1695 | os.path.join( |
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1696 | qtDir, generateQtToolName(toolname.capitalize())) + ".app", |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1697 | os.path.join(qtDir, generateQtToolName(toolname)) + ".app", |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1698 | ] |
7590
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1699 | if toolname == "designer": |
7595
5db6bfeff23e
MicroPython: added code to allow the user to select the flash mod for flashing the MicroPython firmware for ESP32/ESP8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7590
diff
changeset
|
1700 | # support the standalone Qt Designer installer from |
7590
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1701 | # https://build-system.fman.io/qt-designer-download |
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1702 | designer = "Qt Designer.app" |
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1703 | bundles.extend([ |
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1704 | os.path.join(qtDir, 'bin', designer), |
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1705 | os.path.join(qtDir, designer), |
2786c3af7a06
Utilities: extended the search for a designer macOS bundle to support a standalone installation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7586
diff
changeset
|
1706 | ]) |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1707 | for bundle in bundles: |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1708 | if os.path.exists(bundle): |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1709 | return bundle |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1710 | return "" |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1711 | |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1712 | |
7586
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1713 | def prepareQtMacBundle(toolname, args): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1714 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1715 | Module function for starting Qt tools that are Mac OS X bundles. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1716 | |
7586
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1717 | @param toolname plain name of the tool (e.g. "designer") |
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1718 | @type str |
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1719 | @param args name of input file for tool, if any |
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1720 | @type list of str |
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1721 | @return command-name and args for QProcess |
9ca5907d5ed3
UserInterface: Removed some obsolete code and enhanced error message for the case, where the Qt applications (designer, linguist, assistant) cannot be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7451
diff
changeset
|
1722 | @rtype tuple of (str, list of str) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1723 | """ |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1724 | fullBundle = getQtMacBundle(toolname) |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1725 | if fullBundle == "": |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1726 | return ("", []) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1727 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1728 | newArgs = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1729 | newArgs.append("-a") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1730 | newArgs.append(fullBundle) |
1368
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1731 | if args: |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1732 | newArgs.append("--args") |
4489ee4feb59
Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1348
diff
changeset
|
1733 | newArgs += args |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1734 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1735 | return ("open", newArgs) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1736 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1737 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1738 | ## PyQt utility functions below |
5696
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1739 | ############################################################################### |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1740 | |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1741 | |
5878
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1742 | def generatePyQtToolPath(toolname, alternatives=None): |
5696
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1743 | """ |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1744 | Module function to generate the executable path for a PyQt tool. |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1745 | |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1746 | @param toolname base name of the tool |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1747 | @type str |
5878
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1748 | @param alternatives list of alternative tool names to try |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1749 | @type list of str |
5696
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1750 | @return executable path name of the tool |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1751 | @rtype str |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1752 | """ |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1753 | pyqtVariant = int(toolname[-1]) |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1754 | pyqtToolsPath = getPyQtToolsPath(pyqtVariant) |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1755 | if pyqtToolsPath: |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1756 | exe = os.path.join(pyqtToolsPath, toolname) |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1757 | if isWindowsPlatform(): |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1758 | exe += ".exe" |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1759 | else: |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1760 | if isWindowsPlatform(): |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1761 | exe = getWindowsExecutablePath(toolname) |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1762 | else: |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1763 | exe = toolname |
5878
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1764 | |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1765 | if not isinpath(exe) and alternatives: |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1766 | ex_ = generatePyQtToolPath(alternatives[0], alternatives[1:]) |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1767 | if isinpath(ex_): |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1768 | exe = ex_ |
74d02cd37185
Extended the search for pyuic[45] to cope with the way openSUSE does it. They name it py[23]uic[45].
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
1769 | |
5696
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1770 | return exe |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1771 | |
68af0e9c57ad
Started implementing the capability to configure the path to the PyQt tools or determine it based on the current Python interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1772 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1773 | ## PySide2/PySide6 utility functions below |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1774 | ############################################################################### |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1775 | |
2770
fd5ee85f0450
Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2763
diff
changeset
|
1776 | |
7908
33afc8e96e19
Fixed a bug introduced with the recent changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7907
diff
changeset
|
1777 | def generatePySideToolPath(toolname, variant=2): |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1778 | """ |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1779 | Module function to generate the executable path for a PySide2/PySide6 tool. |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1780 | |
6291
94e0e688dcad
PySide2 support: started to implement support for PySide2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6289
diff
changeset
|
1781 | @param toolname base name of the tool |
94e0e688dcad
PySide2 support: started to implement support for PySide2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6289
diff
changeset
|
1782 | @type str |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1783 | @param variant indicator for the PySide variant |
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1784 | @type int or str |
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1785 | @return the PySide2/PySide6 tool path with extension |
6291
94e0e688dcad
PySide2 support: started to implement support for PySide2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6289
diff
changeset
|
1786 | @rtype str |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1787 | """ |
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1788 | if isWindowsPlatform(): |
7636
61566f35ab22
Utilities: fixed an issue determining the tools path for pyside2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7635
diff
changeset
|
1789 | hasPyside = checkPyside(variant) |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4225
diff
changeset
|
1790 | if not hasPyside: |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1791 | return "" |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1792 | |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1793 | venvName = Preferences.getQt("PySide{0}VenvName".format(variant)) |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1794 | if not venvName: |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1795 | venvName = Preferences.getDebugger("Python3VirtualEnv") |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1796 | interpreter = ericApp().getObject( |
7259
7c017076c12e
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1797 | "VirtualEnvManager").getVirtualenvInterpreter(venvName) |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1798 | if interpreter == "" or not isinpath(interpreter): |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1799 | interpreter = sys.executable |
6348
d6c0b8ab1fc6
Continued to remove all explicit references to Python interpreters and replace them by references to virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6303
diff
changeset
|
1800 | prefix = os.path.dirname(interpreter) |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1801 | return os.path.join(prefix, "Scripts", toolname + '.exe') |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1802 | else: |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1803 | # step 1: check, if the user has configured a tools path |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1804 | path = Preferences.getQt("PySide{0}ToolsDir".format(variant)) |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1805 | if path: |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1806 | return os.path.join(path, toolname) |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1807 | |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1808 | # step 2: determine from used Python interpreter |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1809 | dirName = os.path.dirname(sys.executable) |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1810 | if os.path.exists(os.path.join(dirName, toolname)): |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1811 | return os.path.join(dirName, toolname) |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1812 | |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1813 | return toolname |
1173
c826cd21e273
Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1167
diff
changeset
|
1814 | |
1841
2f9e28e56c1b
Change algo for determining the path of PySide tools on Windows to check for the Python3 variant first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1839
diff
changeset
|
1815 | |
8950
5644299d912e
Added the use of a cahe to return the result of the PySide2/6 check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
1816 | @functools.lru_cache() |
7908
33afc8e96e19
Fixed a bug introduced with the recent changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7907
diff
changeset
|
1817 | def checkPyside(variant=2): |
1841
2f9e28e56c1b
Change algo for determining the path of PySide tools on Windows to check for the Python3 variant first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1839
diff
changeset
|
1818 | """ |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1819 | Module function to check the presence of PySide2/PySide6. |
1841
2f9e28e56c1b
Change algo for determining the path of PySide tools on Windows to check for the Python3 variant first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1839
diff
changeset
|
1820 | |
7911
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1821 | @param variant indicator for the PySide variant |
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1822 | @type int or str |
4621c9082a43
Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7908
diff
changeset
|
1823 | @return flags indicating the presence of PySide2/PySide6 |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1824 | @rtype bool |
1841
2f9e28e56c1b
Change algo for determining the path of PySide tools on Windows to check for the Python3 variant first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1839
diff
changeset
|
1825 | """ |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1826 | venvName = Preferences.getQt("PySide{0}VenvName".format(variant)) |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1827 | if not venvName: |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1828 | venvName = Preferences.getDebugger("Python3VirtualEnv") |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1829 | interpreter = ericApp().getObject( |
7635
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1830 | "VirtualEnvManager").getVirtualenvInterpreter(venvName) |
0cdead130a81
Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
1831 | if interpreter == "" or not isinpath(interpreter): |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1832 | interpreter = sys.executable |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1833 | |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1834 | checker = os.path.join( |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1835 | getConfig('ericDir'), "Utilities", "PySideImporter.py") |
7908
33afc8e96e19
Fixed a bug introduced with the recent changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7907
diff
changeset
|
1836 | args = [checker, "--variant={0}".format(variant)] |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1837 | proc = QProcess() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
1838 | proc.setProcessChannelMode(QProcess.ProcessChannelMode.MergedChannels) |
7907
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1839 | proc.start(interpreter, args) |
7991ea245c20
Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7900
diff
changeset
|
1840 | finished = proc.waitForFinished(30000) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1841 | return finished and proc.exitCode() == 0 |
1841
2f9e28e56c1b
Change algo for determining the path of PySide tools on Windows to check for the Python3 variant first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1839
diff
changeset
|
1842 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1843 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1844 | ## Other utility functions below |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
1845 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1846 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1847 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1848 | def generateVersionInfo(linesep='\n'): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1849 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1850 | Module function to generate a string with various version infos. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1851 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1852 | @param linesep string to be used to separate lines |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1853 | @type str |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1854 | @return string with version infos |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1855 | @rtype str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1856 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1857 | try: |
6364
6a496f0886ad
Prepared the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6348
diff
changeset
|
1858 | try: |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8314
diff
changeset
|
1859 | from PyQt6 import sip |
6364
6a496f0886ad
Prepared the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6348
diff
changeset
|
1860 | except ImportError: |
6365
85f8745427a6
Redid the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6364
diff
changeset
|
1861 | import sip |
3628
deb5973080a9
Added code to prevent possible segfaults when closing down.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3621
diff
changeset
|
1862 | sip_version_str = sip.SIP_VERSION_STR |
deb5973080a9
Added code to prevent possible segfaults when closing down.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3621
diff
changeset
|
1863 | except (ImportError, AttributeError): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1864 | sip_version_str = "sip version not available" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1865 | |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1866 | sizeStr = "64-Bit" if sys.maxsize > 2**32 else "32-Bit" |
6477
096fefd24a26
UserInterface, Utilities: amended the version information of Python to include the bitness of the interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6365
diff
changeset
|
1867 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1868 | info = ["Version Numbers:"] |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1869 | |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1870 | info.append(" Python {0}, {1}".format(sys.version.split()[0], sizeStr)) |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1871 | info.append(" Qt {0}".format(qVersion())) |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1872 | info.append(" PyQt6 {0}".format(PYQT_VERSION_STR)) |
7329
72f3c9fdefeb
Added some code to show the version info for PyQtChart and PyQtWebEngine, if this is available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7259
diff
changeset
|
1873 | try: |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1874 | from PyQt6 import QtCharts |
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1875 | info.append(" PyQt6-Charts {0}".format( |
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1876 | QtCharts.PYQT_CHART_VERSION_STR)) |
7329
72f3c9fdefeb
Added some code to show the version info for PyQtChart and PyQtWebEngine, if this is available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7259
diff
changeset
|
1877 | except (ImportError, AttributeError): |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1878 | info.append(" PyQt6-Charts not installed") |
7329
72f3c9fdefeb
Added some code to show the version info for PyQtChart and PyQtWebEngine, if this is available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7259
diff
changeset
|
1879 | try: |
8553
10d31e5ce9e5
First batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8459
diff
changeset
|
1880 | from PyQt6 import QtWebEngineCore |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1881 | info.append(" PyQt6-WebEngine {0}".format( |
8553
10d31e5ce9e5
First batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8459
diff
changeset
|
1882 | QtWebEngineCore.PYQT_WEBENGINE_VERSION_STR)) |
7329
72f3c9fdefeb
Added some code to show the version info for PyQtChart and PyQtWebEngine, if this is available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7259
diff
changeset
|
1883 | except (ImportError, AttributeError): |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
1884 | info.append(" PyQt6-WebEngine not installed") |
8438
639e7e8fde84
Corrected the version info included in error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8377
diff
changeset
|
1885 | info.append(" PyQt6-QScintilla {0}".format(QSCINTILLA_VERSION_STR)) |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1886 | info.append(" sip {0}".format(sip_version_str)) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
1887 | with contextlib.suppress(ImportError): |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8314
diff
changeset
|
1888 | from PyQt6 import QtWebEngineWidgets # __IGNORE_WARNING__ |
7201
6b42677d7043
Modified sources to be in line with the minimum Qt/PyQt requirement (v 5.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7198
diff
changeset
|
1889 | from WebBrowser.Tools import WebBrowserTools |
6b42677d7043
Modified sources to be in line with the minimum Qt/PyQt requirement (v 5.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7198
diff
changeset
|
1890 | chromeVersion = WebBrowserTools.getWebEngineVersions()[0] |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1891 | info.append(" WebEngine {0}".format(chromeVersion)) |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1892 | info.append(" {0} {1}".format(Program, Version)) |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1893 | info.append("") |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1894 | info.append("Platform: {0}".format(sys.platform)) |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1895 | info.append(sys.version) |
6289
f481df37413c
Extended the error report to send the desktop environment in use (Linux only).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6247
diff
changeset
|
1896 | desktop = desktopName() |
f481df37413c
Extended the error report to send the desktop environment in use (Linux only).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6247
diff
changeset
|
1897 | if desktop: |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1898 | info.append("") |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1899 | info.append("Desktop: {0}".format(desktop)) |
8958
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
1900 | session = sessionType() |
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
1901 | if session: |
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
1902 | info.append("") |
ba80dceeb560
Extended the version information to include the desktop and session type (although these are not versions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8950
diff
changeset
|
1903 | info.append("Session Type: {0}".format(session)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1904 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1905 | return linesep.join(info) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1906 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1907 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1908 | def generatePluginsVersionInfo(linesep='\n'): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1909 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1910 | Module function to generate a string with plugins version infos. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1911 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1912 | @param linesep string to be used to separate lines |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1913 | @type str |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1914 | @return string with plugins version infos |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1915 | @rtype str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1916 | """ |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1917 | info = [] |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8346
diff
changeset
|
1918 | app = ericApp() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1919 | if app is not None: |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
1920 | with contextlib.suppress(KeyError): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1921 | pm = app.getObject("PluginManager") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1922 | versions = {} |
7729
f2f7b7b24879
Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7725
diff
changeset
|
1923 | for pinfo in pm.getPluginInfos(): |
f2f7b7b24879
Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7725
diff
changeset
|
1924 | versions[pinfo["module_name"]] = pinfo["version"] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1925 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1926 | info.append("Plugins Version Numbers:") |
6080
436ac20f7639
Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6075
diff
changeset
|
1927 | for pluginModuleName in sorted(versions.keys()): |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1928 | info.append(" {0} {1}".format( |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1929 | pluginModuleName, versions[pluginModuleName])) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1930 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1931 | return linesep.join(info) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1932 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1933 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1934 | def generateDistroInfo(linesep='\n'): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1935 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1936 | Module function to generate a string with distribution infos. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1937 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1938 | @param linesep string to be used to separate lines |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1939 | @type str |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1940 | @return string with distribution infos |
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1941 | @rtype str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1942 | """ |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1943 | info = [] |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
1944 | if isLinuxPlatform(): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1945 | releaseList = glob.glob("/etc/*-release") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1946 | if releaseList: |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1947 | info.append("Distribution Info:") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1948 | for rfile in releaseList: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1949 | try: |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
1950 | with open(rfile, "r") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7775
diff
changeset
|
1951 | lines = f.read().splitlines() |
7836
2f0d208b8137
Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7835
diff
changeset
|
1952 | except OSError: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1953 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1954 | |
7729
f2f7b7b24879
Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7725
diff
changeset
|
1955 | info.append(' {0}'.format(rfile)) |
f2f7b7b24879
Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7725
diff
changeset
|
1956 | info.extend([' {0}'.format(line) for line in lines]) |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1957 | info.append("") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1958 | |
7725
2648f2c894df
Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
1959 | return linesep.join(info) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1960 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
1961 | |
2030
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1962 | def toBool(dataStr): |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1963 | """ |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1964 | Module function to convert a string to a boolean value. |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1965 | |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1966 | @param dataStr string to be converted (string) |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1967 | @return converted boolean value (boolean) |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1968 | """ |
2194
0fce40af66b8
Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2087
diff
changeset
|
1969 | if dataStr in ["True", "true", "1", "Yes", "yes"]: |
2030
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1970 | return True |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1971 | elif dataStr in ["False", "false", "0", "No", "no"]: |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1972 | return False |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1973 | else: |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1974 | return bool(dataStr) |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1914
diff
changeset
|
1975 | |
6545
f669c4c0d39b
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6544
diff
changeset
|
1976 | |
6544
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1977 | def getSysPath(interpreter): |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1978 | """ |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1979 | Module function to get the Python path (sys.path) of a specific |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1980 | interpreter. |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1981 | |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1982 | @param interpreter Python interpreter executable to get sys.path for |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1983 | @type str |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1984 | @return list containing sys.path of the interpreter; an empty list |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1985 | is returned, if the interpreter is the one used to run eric itself |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1986 | @rtype list of str |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1987 | """ |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1988 | import json |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1989 | |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1990 | sysPath = [] |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1991 | |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1992 | getSysPath = os.path.join( |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1993 | getConfig('ericDir'), "Utilities", "GetSysPath.py") |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1994 | args = [getSysPath] |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1995 | proc = QProcess() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8100
diff
changeset
|
1996 | proc.setProcessChannelMode(QProcess.ProcessChannelMode.MergedChannels) |
6544
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1997 | proc.start(interpreter, args) |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
1998 | finished = proc.waitForFinished(30000) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
1999 | if finished and proc.exitCode() == 0: |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
2000 | text = proc.readAllStandardOutput() |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
2001 | sysPathResult = str(text, "utf-8", "replace").strip() |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
2002 | with contextlib.suppress(TypeError, ValueError): |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
2003 | sysPath = json.loads(sysPathResult) |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
2004 | if "" in sysPath: |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
2005 | sysPath.remove("") |
6544
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
2006 | |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
2007 | return sysPath |
51996454f89f
CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6495
diff
changeset
|
2008 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
2009 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
2010 | ## posix compatibility functions below |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
2011 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2012 | |
114
f6e7cec11168
Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
97
diff
changeset
|
2013 | # None right now |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2014 | |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
2015 | ############################################################################### |
8346
c2b5cca019a1
Removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
2016 | ## win32 compatibility functions below |
2997
7f0ef975da9e
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2965
diff
changeset
|
2017 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2018 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
2019 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2020 | def win32_Kill(pid): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2021 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2022 | Function to provide an os.kill equivalent for Win32. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2023 | |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
2024 | @param pid process id (integer) |
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
2025 | @return result of the kill (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2026 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2027 | import win32api |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2028 | handle = win32api.OpenProcess(1, 0, pid) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2029 | return (0 != win32api.TerminateProcess(handle, 0)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2030 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
2031 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2032 | def win32_GetUserName(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2033 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2034 | Function to get the user name under Win32. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2035 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2036 | @return user name (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2037 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2038 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2039 | import win32api |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2040 | return win32api.GetUserName() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2041 | except ImportError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2042 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2043 | u = getEnvironmentEntry('USERNAME') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2044 | except KeyError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2045 | u = getEnvironmentEntry('username', None) |
69
2e78b0aab87e
Fixed a problem in Utilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
56
diff
changeset
|
2046 | return u |
2239
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2047 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2048 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2049 | def win32_getRealName(): |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2050 | """ |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2051 | Function to get the user's real name (aka. display name) under Win32. |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2052 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2053 | @return real name of the current user (string) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2054 | """ |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2055 | import ctypes |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2056 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2057 | GetUserNameEx = ctypes.windll.secur32.GetUserNameExW |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2058 | NameDisplay = 3 |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2059 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2060 | size = ctypes.pointer(ctypes.c_ulong(0)) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2061 | GetUserNameEx(NameDisplay, None, size) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2062 | |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2063 | nameBuffer = ctypes.create_unicode_buffer(size.contents.value) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2064 | GetUserNameEx(NameDisplay, nameBuffer, size) |
a47b50e80a20
Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2227
diff
changeset
|
2065 | return nameBuffer.value |