eric6/Utilities/__init__.py

Wed, 14 Apr 2021 19:59:16 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 14 Apr 2021 19:59:16 +0200
changeset 8240
93b8a353c4bf
parent 8221
0572a215bd2f
child 8243
cc717c2ae956
permissions
-rw-r--r--

Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7911
diff changeset
3 # Copyright (c) 2003 - 2021 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
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import sys
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
12 import codecs
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import re
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import fnmatch
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import glob
114
f6e7cec11168 Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
16 import getpass
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
17 import ctypes
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
18 import subprocess # secok
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
19 import shlex
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
20 import contextlib
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
22
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
23 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
24 """
c76f1ec28766 Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
25 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
26
c76f1ec28766 Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
27 @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
28 @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
29 @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
30 @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
31 @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
32 @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
33 @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
34 """
141
c76f1ec28766 Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
35 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
36 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
37 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
38 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
39 raise err
c76f1ec28766 Added code to handle syntax warnings during the compile much better.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
40
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 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
42 warnings.showwarning = __showwarning
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 from codecs import BOM_UTF8, BOM_UTF16, BOM_UTF32
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
46 from PyQt5.QtCore import (
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
47 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
48 QCryptographicHash
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
49 )
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3628
diff changeset
50 from PyQt5.Qsci import QSCINTILLA_VERSION_STR, QsciScintilla
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
882
34b86be88bf0 Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 832
diff changeset
52 # 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
53 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
54 isWindowsPlatform, isLinuxPlatform, isMacPlatform, 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
55 getConfigDir, setConfigDir, getPythonModulesDirectory,
f481df37413c Extended the error report to send the desktop environment in use (Linux only).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6247
diff changeset
56 getPyQt5ModulesDirectory, getQtBinariesPath, getPyQtToolsPath,
f481df37413c Extended the error report to send the desktop environment in use (Linux only).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6247
diff changeset
57 qVersionTuple)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
55
b5c84934de9c Renamed E4Gui to E5Gui.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
59 from E5Gui.E5Application import e5App
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 from UI.Info import Program, Version
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 import Preferences
5616
adcffadf4962 Reworked some __IGNORE_WARNING__ comments to be more specific.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5604
diff changeset
64 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
65 # __IGNORE_WARNING__
3484
645c12de6b0c Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3456 3446
diff changeset
66 normalizeCode)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
3670
f0cb7579c0b4 Finished renaming eric5 for PyQt5 to eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
68 from eric6config import getConfig
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
69
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 configDir = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
72 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
73 (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
74 (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
75 ]
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
76 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
77 (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
78 (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
79 ]
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
80
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
81 supportedCodecs = [
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
82 'utf-8',
7841
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
83
7843
0a569bf8ca45 Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7841
diff changeset
84 '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
85 '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
86 '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
87 '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
88 'latin-1',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
89
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
90 'koi8-r', 'koi8-t', 'koi8-u',
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 'utf-7',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
93 '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
94 '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
95
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
96 'cp037', 'cp273', 'cp424', 'cp437', 'cp500', 'cp720',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
97 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
98 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
99 'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
100 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026', 'cp1125',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
101 'cp1140',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
102
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
103 '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
104 '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
105 'windows-1258',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
106
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
107 'gb2312', 'hz', 'gb18030', 'gbk',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
108
7843
0a569bf8ca45 Utilities: fine tuned the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7841
diff changeset
109 '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
110 '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
111
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
112 '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
113 'mac-roman', 'mac-turkish',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
114
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
115 'ascii',
1bb64cb3c4a8 Utilities: extended the list of supported codecs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
116 'big5-tw', 'big5-hkscs',
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
117 ]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
119
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
120 class CodingError(Exception):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
121 """
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2770
diff changeset
122 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
123 incorrect.
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
124 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
125 def __init__(self, coding):
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 Constructor
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2770
diff changeset
128
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2770
diff changeset
129 @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
130 """
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
131 self.errorMessage = QCoreApplication.translate(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
132 "CodingError",
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
133 "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
134
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
135 def __repr__(self):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
136 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3525
diff changeset
137 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
138
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
139 @return string representing the error message
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 str(self.errorMessage)
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 def __str__(self):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
144 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3525
diff changeset
145 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
146
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
147 @return string representing the error message
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 str(self.errorMessage)
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
150
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
151
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
152 def get_codingBytes(text):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
153 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
154 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
155
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
156 @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
157 @return coding string
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
158 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
159 lines = text.splitlines()
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
160 for coding in codingBytes_regexps:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
161 coding_re = coding[1]
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
162 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
163 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
164 m = coding_re.search(line)
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
165 if m:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
166 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
167 return None
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
168
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
169
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
170 def get_coding(text):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
171 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
172 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
173
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
174 @param text text to inspect (string)
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
175 @return coding string
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
176 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
177 lines = text.splitlines()
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
178 for coding in coding_regexps:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
179 coding_re = coding[1]
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
180 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
181 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
182 m = coding_re.search(line)
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
183 if m:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
184 return m.group(1).lower()
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
185 return None
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
186
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
187
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
188 def readEncodedFile(filename):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
189 """
2763
e4794166ad70 Fixed a serious typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
190 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
191
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
192 @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
193 @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
194 """
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
195 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
196 text = f.read()
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
197 return decode(text)
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
198
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
199
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
200 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
201 """
2763
e4794166ad70 Fixed a serious typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
202 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
203 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
204
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 @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
206 @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
207 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
208 """
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
209 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
210 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
211 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
212 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
213 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
214 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
215
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
216
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
217 def decode(text):
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
218 """
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
219 Function to decode some byte text into a string.
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 @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
222 @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
223 """
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
224 try:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
225 if text.startswith(BOM_UTF8):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
226 # UTF-8 with BOM
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
227 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
228 elif text.startswith(BOM_UTF16):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
229 # UTF-16 with BOM
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
230 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
231 elif text.startswith(BOM_UTF32):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
232 # UTF-32 with BOM
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
233 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
234 coding = get_codingBytes(text)
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
235 if coding:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
236 return str(text, coding), coding
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
237 except (UnicodeError, LookupError):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
238 pass
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
2e79b9c72e59 Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
241 try:
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 except (UnicodeError, LookupError):
2e79b9c72e59 Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
244 pass
2e79b9c72e59 Changed order of encodings detection to give UTF-8 a chance first.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 141
diff changeset
245
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
246 guess = None
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
247 if Preferences.getEditor("AdvancedEncodingDetection"):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
248 # Try the universal character encoding detector
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
249 try:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
250 import ThirdParty.CharDet.chardet
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
251 guess = ThirdParty.CharDet.chardet.detect(text)
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
252 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
253 guess and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
254 guess['confidence'] > 0.95 and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
255 guess['encoding'] is not None
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
256 ):
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
257 codec = guess['encoding'].lower()
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
258 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
259 except (UnicodeError, LookupError):
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 except ImportError:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
262 pass
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
263
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
264 # Try default encoding
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
265 try:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
266 codec = Preferences.getEditor("DefaultEncoding")
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
267 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
268 except (UnicodeError, LookupError):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
269 pass
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
270
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
271 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
272 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
273 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
274 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
275 ):
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
276 # Use the guessed one even if confidence level is low
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
277 try:
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
278 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
279 return str(text, codec), '{0}-guessed'.format(codec)
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
280 except (UnicodeError, LookupError):
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
281 pass
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
282
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
283 # Assume UTF-8 loosing information
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
284 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
285
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
286
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 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
288 """
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
289 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
290
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 @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
292 @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
293 @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
294 """
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
295 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
296 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
297 if 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
298 try:
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
299 return str(text, encoding), '{0}-selected'.format(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
300 except (UnicodeError, LookupError):
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 pass
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 # Try default 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
303 try:
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 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
305 return str(text, codec), '{0}-default'.format(codec)
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
306 except (UnicodeError, LookupError):
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
307 pass
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
308 # 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
309 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
310 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
311 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
312
d1d4d79b4f11 Added a context menu entry to reload a file with a given encoding.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3206
diff changeset
313
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
314 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
315 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
316 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
317
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
318 @param filename name of the file to read
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
319 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
320 @param text text to be written
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
321 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
322 @param origEncoding type of the original encoding
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
323 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
324 @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
325 line is present
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
326 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
327 @return encoding used for writing the file
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
328 @rtype str
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
329 """
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
330 etext, encoding = encode(text, origEncoding, forcedEncoding=forcedEncoding)
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
331
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
332 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
333 f.write(etext)
46
b09750fd2a06 Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
334
b09750fd2a06 Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
335 return encoding
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
336
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
337
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
338 def encode(text, origEncoding, forcedEncoding=""):
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
339 """
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
340 Function to encode text into a byte text.
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
341
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
342 @param text text to be encoded
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
343 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
344 @param origEncoding type of the original encoding
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
345 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
346 @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
347 is present
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
348 @type str
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
349 @return tuple of encoded text and encoding used
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
350 @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
351 @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
352 """
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
353 encoding = None
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
354 if origEncoding == 'utf-8-bom':
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
355 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
356 else:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
357 # Try declared coding spec
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
358 coding = get_coding(text)
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
359 if coding:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
360 try:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
361 etext, encoding = text.encode(coding), coding
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
362 except (UnicodeError, LookupError):
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
363 # Error: Declared encoding is incorrect
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
364 raise CodingError(coding)
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
365 else:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
366 if forcedEncoding:
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
367 try:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
368 etext, encoding = (
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
369 text.encode(forcedEncoding), forcedEncoding)
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
370 except (UnicodeError, LookupError):
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
371 # Error: 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
372 pass
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
373
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
374 if encoding is None:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
375 # Try the original encoding
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
376 if origEncoding and origEncoding.endswith(
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
377 ('-selected', '-default', '-guessed', '-ignore')):
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
378 coding = (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
379 origEncoding
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
380 .replace("-selected", "")
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
381 .replace("-default", "")
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
382 .replace("-guessed", "")
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
383 .replace("-ignore", "")
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
384 )
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
385 try:
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
386 etext, encoding = text.encode(coding), coding
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
387 except (UnicodeError, LookupError):
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
388 pass
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
389
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
390 if encoding is None:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
391 # Try configured default
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
392 try:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
393 codec = Preferences.getEditor("DefaultEncoding")
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
394 etext, encoding = text.encode(codec), codec
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
395 except (UnicodeError, LookupError):
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
396 pass
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
397
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
398 if encoding is None:
6099
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
399 # Try saving as ASCII
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
400 try:
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
401 etext, encoding = text.encode('ascii'), 'ascii'
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
402 except UnicodeError:
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
403 pass
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
404
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
405 if encoding is None:
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
406 # Save as UTF-8 without BOM
a7fecbc392d7 Started implementing support for EditorConfig.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
407 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
408
46
b09750fd2a06 Added utility functions to encode/decode some text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
409 return etext, encoding
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
410
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
411
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
412 def decodeString(text):
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
413 """
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
414 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
415
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
416 @param text text containing encoded chars (string)
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
417 @return decoded text (string)
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
418 """
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
419 buf = b""
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
420 index = 0
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
421 while index < len(text):
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
422 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
423 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
424 buf += bytes(qb)
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
425 index += 4
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
426 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
427 buf += codecs.encode(text[index], "utf-8")
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
428 index += 1
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
429 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
430 return decodeBytes(buf)
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
431
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
432
1109
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
433 def decodeBytes(buffer):
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
434 """
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
435 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
436
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
437 @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
438 @return decoded text (string)
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
439 """
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
440 # try UTF with BOM
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
441 try:
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
442 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
443 # UTF-8 with BOM
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
444 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
445 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
446 # UTF-16 with BOM
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
447 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
448 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
449 # UTF-32 with BOM
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
450 return str(buffer[len(BOM_UTF32):], encoding='utf-32')
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
451 except (UnicodeError, LookupError):
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
452 pass
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
453
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
454 # try UTF-8
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
455 try:
1109
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
456 return str(buffer, encoding="utf-8")
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
457 except UnicodeError:
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
458 pass
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
459
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
460 # try codec detection
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
461 try:
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
462 import ThirdParty.CharDet.chardet
1109
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
463 guess = ThirdParty.CharDet.chardet.detect(buffer)
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
464 if guess and guess['encoding'] is not None:
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
465 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
466 return str(buffer, encoding=codec)
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
467 except (UnicodeError, LookupError):
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
468 pass
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
469 except ImportError:
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
470 pass
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 682
diff changeset
471
1109
9552b5e16a07 Added some more search engines to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 988
diff changeset
472 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
473
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
474
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
475 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
476 """
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
477 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
478
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
479 @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
480 @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
481 """
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
482 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
483 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
484 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
485 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
486
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
487
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
488 _escape = re.compile("[&<>\"'\u0080-\uffff]")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 _escape_map = {
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 "&": "&amp;",
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 "<": "&lt;",
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 ">": "&gt;",
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 '"': "&quot;",
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
495 "'": "&#x27;",
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 }
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
498
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5587
diff changeset
499 def escape_entities(m, escmap=_escape_map):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 Function to encode html entities.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 @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
504 @param escmap the map of entities to encode
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 @return the converted text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 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
508 text = escmap.get(char)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 if text is None:
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
510 text = "&#{0:d};".format(ord(char))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 return text
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
513
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 def html_encode(text, pattern=_escape):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 Function to correctly encode a text for html.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 @param text text to be encoded (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 @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
520 @return the encoded text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 if not text:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 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
525 return text
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526
56
3bd61d38c924 Fixed a problem in Utilities related to HTML encoding of unicode characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
527 _uescape = re.compile('[\u0080-\uffff]')
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
529
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 def escape_uentities(m):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 Function to encode html entities.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 @param m the match object
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 @return the converted text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 char = m.group()
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
538 text = "&#{0:d};".format(ord(char))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 return text
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
541
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 def html_uencode(text, pattern=_uescape):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 Function to correctly encode a unicode text for html.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 @param text text to be encoded (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 @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
548 @return the encoded text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 if not text:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 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
553 return text
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554
6247
5c677a7f7d51 Corrected some code style issues detected by the new pycodestyle version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6105
diff changeset
555 _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
556
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 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
559 """
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 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
561
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 @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
563 @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
564 """
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
565 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
566 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
567 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
568
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
569
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
570 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
571 """
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
572 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
573
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
574 @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
575 @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
576 @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
577 """
b140a24e147a Rewrote the reader for HTML bookmark files to cope with the various dates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1659
diff changeset
578 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
579 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
580 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
581 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
582
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
583
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 def convertLineEnds(text, eol):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 Function to convert the end of line characters.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 @param text text to be converted (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 @param eol new eol setting (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 @return text with converted eols (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 if eol == '\r\n':
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 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
594 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
595 elif eol == '\n':
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 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
597 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
598 elif eol == '\r':
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 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
600 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
601 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 return text
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
604
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 def linesep():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 """
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
607 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
608
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 @return line separator used by the editor (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 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
612 if eolMode == QsciScintilla.EolMode.EolUnix:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 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
614 elif eolMode == QsciScintilla.EolMode.EolMac:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 return "\r"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 return "\r\n"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
619
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
620 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
621 """
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 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
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 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
625 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
626 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
627 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
628 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
629 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
630 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
631
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 @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
633 @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
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 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
636 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
637 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
638 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
639 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
640 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
641 # 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
642 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
643
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 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
645 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
646 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
647 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
648 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
649
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
650 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
651 # 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
652 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
653 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
654
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
655 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
656 # 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
657 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
658 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
659 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
660 # 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
661 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
662
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
663 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
664 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
665 # 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
666 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
667 # 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
668 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
669 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
670 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
671
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
672 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
673
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
674
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
675 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
676 """
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
677 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
678
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
679 @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
680 @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
681 """
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
682 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
683 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
684 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
685 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
686
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
687 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
688
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
689
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
690 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
691 """
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
692 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
693 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
694
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 @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
696 @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
697 @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
698 @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
699 @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
700 """
2b602a1521e7 Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1190
diff changeset
701 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
702
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
703 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
704 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
705 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
706 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
707 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
708 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
709 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
710 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
711 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
712 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
713 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
714 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
715
2b602a1521e7 Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1190
diff changeset
716
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
717 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
718 """
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
719 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
720
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
721 @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
722 @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
723 @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
724 @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
725 """
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
726 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
727 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
728 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
729 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
730 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
731 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
732 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
733 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
734 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
735
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
736 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
737
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
738
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 def toNativeSeparators(path):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 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
742
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 @param path path to be converted (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 @return path with converted separator characters (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746 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
747
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
748
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 def fromNativeSeparators(path):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 Function returning a path, that is using "/" separator characters.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 @param path path to be converted (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 @return path with converted separator characters (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 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
757
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
758
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 def normcasepath(path):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 """
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
761 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
762 and references.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 @param path file path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 @return case normalized path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 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
768
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
769
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 def normcaseabspath(path):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 """
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
772 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
773 its case and references.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 @param path file path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 @return absolute, normalized path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778 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
779
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
780
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 def normjoinpath(a, *p):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 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
784
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 @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
786 @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
787 @return normalized path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 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
790
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
791
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 def normabsjoinpath(a, *p):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 """
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
794 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
795 into it.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 @param a first path to be joined (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 @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
799 @return absolute, normalized path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 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
802
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
803
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 def isinpath(file):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 Function to check for an executable file.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 @param file filename of the executable to check (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 @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
810 via the searchpath defined by the PATH environment variable.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 if os.path.isabs(file):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 return os.access(file, os.X_OK)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
814
1329
ac21bb9cf8b9 Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1316
diff changeset
815 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
816 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
817
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 path = getEnvironmentEntry('PATH')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
820 # environment variable not defined
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
821 if path is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 return False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
823
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
824 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
825 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
826 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
827
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 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
830 """
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 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
832
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
833 @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
834 @type str
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
835 @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
836 @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
837 @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
838 path
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
839 @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
840 """
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
841 return (
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
842 bool(start) and
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
843 (
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
844 path == start or
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
845 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
846 )
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
847 )
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
848
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
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 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
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 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
853 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
854
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 @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
856 @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
857 @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
858 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
859 """
7849
70e464748aaa Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7843
diff changeset
860 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
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
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 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
864 """
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 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
866 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
867
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 @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
869 @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
870 @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
871 """
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
872 if not os.path.isabs(path):
7849
70e464748aaa Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7843
diff changeset
873 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
874 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
875
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
876
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
877 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
878 """
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
879 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
880 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
881
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
882 @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
883 @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
884 @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
885 """
64b5f5fa3b00 Changed multi project files to contain relative paths to the contained project files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
886 if not os.path.isabs(path):
7849
70e464748aaa Utilities: removed some obsolete functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7843
diff changeset
887 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
888 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
889
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
890
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
891 def getExecutablePath(file):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
892 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 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
894
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 @param file filename of the executable to check (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896 @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
897 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
898 empty string otherwise.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
899 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
900 if os.path.isabs(file):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
901 if os.access(file, os.X_OK):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
902 return file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905
1329
ac21bb9cf8b9 Ammended 'isinpath' and 'getExecutablePath' to check the current directory as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1316
diff changeset
906 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
907 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
908 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
909
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910 path = os.getenv('PATH')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 # environment variable not defined
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
913 if path is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
915
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 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
917 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
918 exe = os.path.join(directory, file)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
919 if os.access(exe, os.X_OK):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
920 return exe
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
921
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
923
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
924
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 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
926 """
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 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
928
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 @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
930 @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
931 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
932 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
933 """
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 = []
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 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
937 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
938 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
939 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
940 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
941
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
942 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
943 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
944 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
945
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
946 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
947
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
948 # 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
949 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
950 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
951 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
952 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
953 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
954 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
955
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
956 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
957
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
958
5331
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
959 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
960 """
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
961 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
962 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
963
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
964 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
965 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
966 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
967
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
968 @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
969 @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
970 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
971 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
972 """
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
973 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
974 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
975 return file
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
976 else:
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
977 return ""
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
978
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
979 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
980
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
981 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
982 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
983 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
984 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
985
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
986 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
987
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
988 # 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
989 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
990 return ""
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
991
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
992 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
993 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
994 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
995 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
996 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
997 return exe
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
998
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
999 return ""
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
1000
8d607cd52f26 Fixed an issue locating the right PyQt5 tools executables on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5020
diff changeset
1001
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1002 def isExecutable(exe):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1003 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1004 Function to check, if a file is executable.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1005
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1006 @param exe filename of the executable to check (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1007 @return flag indicating executable status (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1008 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1009 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
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
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
1012 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
1013 """
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
1014 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
1015
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
1016 @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
1017 @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
1018 @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
1019 @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
1020 """
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
1021 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
1022 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
1023 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1024 drive and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1025 len(drive) == 2 and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1026 drive.endswith(":") and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1027 directory in ["", "\\", "/"]
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1028 ):
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
1029 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
1030
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
1031 return isDrive
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1032
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1033
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1034 def samepath(f1, f2):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1035 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1036 Function to compare two paths.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1037
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1038 @param f1 first path for the compare (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1039 @param f2 second path for the compare (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1040 @return flag indicating whether the two paths represent the
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 same path on disk.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1042 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1043 if f1 is None or f2 is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1044 return False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1045
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1046 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1047 normcaseabspath(os.path.realpath(f1)) ==
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1048 normcaseabspath(os.path.realpath(f2))
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1049 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1050 return True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1051
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1052 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
1053
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1054
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1055 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
1056 """
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1057 Function to compare two paths. Strips the filename.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1058
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
1059 @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
1060 @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
1061 @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
1062 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
1063 """
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1064 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
1065 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
1066
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1067 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
1068 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
1069 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
1070
e6bb19eb87ea Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
1071 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
1072
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1073 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1074 EXTSEP = os.extsep
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1075 except AttributeError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1076 EXTSEP = "."
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1077
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1078
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1079 def splitPath(name):
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 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
1082
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1083 @param name path name (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1084 @return a tuple of 2 strings (dirname, filename).
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1085 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1086 if os.path.isdir(name):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1087 dn = os.path.abspath(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1088 fn = "."
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1089 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1090 dn, fn = os.path.split(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1091 return (dn, fn)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1092
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1093
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1094 def joinext(prefix, ext):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1095 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1096 Function to join a file extension to a path.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1097
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1098 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
1099 separator if necessary.
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 @param prefix the basepart of the filename (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1102 @param ext the extension part (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1103 @return the complete filename (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1104 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1105 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
1106 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
1107 # require leading separator to match os.path.splitext
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1108 return prefix + EXTSEP + ext[1:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1109
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1110
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1111 def compactPath(path, width, measure=len):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1112 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1113 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
1114
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1115 @param path path to be compacted (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1116 @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
1117 @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
1118 string
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1119 @return compacted path (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1120 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1121 if measure(path) <= width:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1122 return path
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1123
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1124 ellipsis = '...'
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1125
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1126 head, tail = os.path.split(path)
343
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1127 mid = len(head) // 2
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1128 head1 = head[:mid]
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1129 head2 = head[mid:]
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1130 while head1:
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1131 # 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
1132 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
1133 if measure(path) <= width:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1134 return path
343
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1135 head1 = head1[:-1]
f23d1272de6b Changed algorithm for compactPath() slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
1136 head2 = head2[1:]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1137 path = os.path.join(ellipsis, tail)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1138 if measure(path) <= width:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1139 return path
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1140 while tail:
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
1141 path = "{0}{1}".format(ellipsis, tail)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1142 if measure(path) <= width:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1143 return path
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1144 tail = tail[1:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1145 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1146
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1147
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1148 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
1149 checkStop=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1151 Function returning a list of all files and directories.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1152
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1153 @param path root of the tree to check
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1154 @param filesonly flag indicating that only files are wanted
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1155 @param pattern a filename pattern to check against
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1156 @param followsymlinks flag indicating whether symbolic links
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1157 should be followed
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1158 @param checkStop function to be called to check for a stop
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1159 @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
1160 at path. The names are expanded to start with path.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1161 """
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
1162 files = [] if filesonly else [path]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1163 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1164 entries = os.listdir(path)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1165 for entry in entries:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1166 if checkStop and checkStop():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1167 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1168
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
1169 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
1170 '.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
1171 '.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
1172 '.ropeproject',
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
1173 '.eric6project']:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1174 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1175
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1176 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
1177 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1178 pattern and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1179 not os.path.isdir(fentry) and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1180 not fnmatch.fnmatch(entry, pattern)
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1181 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1182 # entry doesn't fit the given pattern
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1183 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1184
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1185 if os.path.isdir(fentry):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1186 if os.path.islink(fentry) and not followsymlinks:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1187 continue
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1188 files += direntries(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1189 fentry, filesonly, pattern, followsymlinks, checkStop)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1190 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1191 files.append(fentry)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1192 except OSError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1193 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1194 except UnicodeDecodeError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1195 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1196 return files
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1197
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1198
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1199 def getDirs(path, excludeDirs):
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 Function returning a list of all directories below path.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1202
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1203 @param path root of the tree to check
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1204 @param excludeDirs basename of directories to ignore
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1205 @return list of all directories found
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1206 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1207 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1208 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
1209 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
1210 return []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1211
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1212 dirs = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1213 for name in names:
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1214 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1215 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
1216 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
1217 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1218 exclude = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1219 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
1220 if name.split(os.sep, 1)[0] == e:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1221 exclude = 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1222 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1223 if not exclude:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1224 dirs.append(os.path.join(path, name))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1225
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1226 for name in dirs[:]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1227 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
1228 dirs += getDirs(name, excludeDirs)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1229
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1230 return dirs
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1231
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1232
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
1233 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
1234 """
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1235 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
1236
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 @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
1238 @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
1239 @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
1240 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
1241 @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
1242 @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
1243 name
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1244 @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
1245 """
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1246 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
1247 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
1248
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 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
1250 # 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
1251 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
1252 """
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 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
1254
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 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
1256 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
1257 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
1258
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 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
1260 """
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 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
1262 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
1263 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
1264 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
1265 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
1266
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1267 #
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1268 # 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
1269 # 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
1270 # 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
1271 # 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
1272 #
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1273 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
1274 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
1275 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
1276 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
1277 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
1278 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
1279 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
1280 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
1281 else:
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1282 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
1283 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
1284 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
1285 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
1286 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
1287 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
1288 # 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
1289 for mountCommand in ["mount", "/sbin/mount", "/usr/sbin/mount"]:
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1290 try:
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
1291 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
1292 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
1293 )
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
1294 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
1295 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
1296 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
1297 ]
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
1298 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
1299 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
1300 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
1301 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
1302 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
1303 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
1304 else:
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1305 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
1306 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
1307 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
1308 break
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1309 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
1310 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
1311 except FileNotFoundError:
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1312 pass
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1313
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
1314 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
1315 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
1316 else:
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
1317 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
1318
fbdf76af88ed Utilities: added a function to search the directory of a given volume name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1319
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1320 def getTestFileName(fn):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1321 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1322 Function to build the filename of a unittest file.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1323
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1324 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
1325 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
1326
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1327 @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
1328 @return filename of the corresponding unittest file (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1329 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1330 dn, fn = os.path.split(fn)
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
1331 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
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 parseOptionString(s):
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 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
1337
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1338 @param s option string
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1339 @type str
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1340 @return list of options
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1341 @rtype list of str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1342 """
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1343 s = re.sub(r"%[A-Z%]", _percentReplacementFunc, s)
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1344 return shlex.split(s)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1345
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1346
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1347 def _percentReplacementFunc(matchobj):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1348 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1349 Protected function called for replacing % codes.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1350
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1351 @param matchobj match object for the code
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1352 @type re.Match
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1353 @return replacement string
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1354 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1355 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1356 return getPercentReplacement(matchobj.group(0))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1357
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1358
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1359 def getPercentReplacement(code):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1360 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1361 Function to get the replacement for code.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1362
8075
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1363 @param code code indicator
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1364 @type str
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1365 @return replacement string
6774034a1e0f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1366 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1367 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1368 if code in ["C", "%C"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1369 # column of the cursor of the current editor
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1370 aw = e5App().getObject("ViewManager").activeWindow()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1371 if aw is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1372 column = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1373 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1374 column = aw.getCursorPosition()[1]
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
1375 return "{0:d}".format(column)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1376 elif code in ["D", "%D"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1377 # directory of active editor
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1378 aw = e5App().getObject("ViewManager").activeWindow()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1379 if aw is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1380 dn = "not_available"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1381 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1382 fn = aw.getFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1383 if fn is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1384 dn = "not_available"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1385 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1386 dn = os.path.dirname(fn)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1387 return dn
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1388 elif code in ["F", "%F"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1389 # filename (complete) of active editor
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1390 aw = e5App().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 fn = "not_available"
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 fn = aw.getFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1395 if fn is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1396 fn = "not_available"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1397 return fn
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1398 elif code in ["H", "%H"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1399 # home directory
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1400 return getHomeDir()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1401 elif code in ["L", "%L"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1402 # line of the cursor of the current editor
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1403 aw = e5App().getObject("ViewManager").activeWindow()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1404 if aw is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1405 line = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1406 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1407 line = aw.getCursorPosition()[0] + 1
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
1408 return "{0:d}".format(line)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1409 elif code in ["P", "%P"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1410 # project path
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1411 projectPath = e5App().getObject("Project").getProjectPath()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1412 if not projectPath:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1413 projectPath = "not_available"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1414 return projectPath
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1415 elif code in ["S", "%S"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1416 # selected text of the current editor
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1417 aw = e5App().getObject("ViewManager").activeWindow()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1418 if aw is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1419 text = "not_available"
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 text = aw.selectedText()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1422 return text
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1423 elif code in ["U", "%U"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1424 # username
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1425 un = getUserName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1426 if un is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1427 return code
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1428 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1429 return un
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1430 elif code in ["%", "%%"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1431 # the percent sign
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1432 return "%"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1433 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1434 # unknown code, just return it
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1435 return code
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1436
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1437
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1438 def getPercentReplacementHelp():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1439 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1440 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
1441
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1442 @returns help text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1443 """
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
1444 return QCoreApplication.translate(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
1445 "Utilities",
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1446 """<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
1447 """ Supported codes are:"""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1448 """<table>"""
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1449 """<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
1450 """</td></tr>"""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1451 """<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
1452 """<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
1453 """<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
1454 """<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
1455 """</td></tr>"""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1456 """<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
1457 """<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
1458 """<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
1459 """<tr><td>%%</td><td>the percent sign</td></tr>"""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1460 """</table>"""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1461 """</p>""")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1462
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1463
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1464 def getUserName():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1465 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1466 Function to get the user name.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1467
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1468 @return user name (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1469 """
114
f6e7cec11168 Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1470 user = getpass.getuser()
f6e7cec11168 Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1471
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
1472 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
1473 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
1474
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
1475 return user
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1476
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1477
2239
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1478 def getRealName():
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1479 """
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1480 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
1481
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1482 @return real name of the user (string)
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1483 """
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1484 if isWindowsPlatform():
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1485 return win32_getRealName()
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1486 else:
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1487 import pwd
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1488 user = getpass.getuser()
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1489 return pwd.getpwnam(user).pw_gecos
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1490
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
1491
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1492 def getHomeDir():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1493 """
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2770
diff changeset
1494 Function to get a users home directory.
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 @return home directory (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1497 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1498 return QDir.homePath()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1499
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1500
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1501 def getPythonLibPath():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1502 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1503 Function to determine the path to Python's library.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1504
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1505 @return path to the Python library (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1506 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1507 pyFullVers = sys.version.split()[0]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1508
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1509 vl = re.findall("[0-9.]*", pyFullVers)[0].split(".")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1510 major = vl[0]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1511 minor = vl[1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1512
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1513 pyVers = major + "." + minor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1514
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1515 if isWindowsPlatform():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1516 libDir = sys.prefix + "\\Lib"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1517 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1518 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1519 syslib = sys.lib
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1520 except AttributeError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1521 syslib = "lib"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1522 libDir = sys.prefix + "/" + syslib + "/python" + pyVers
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1523
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1524 return libDir
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1525
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1526
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1527 def getPythonVersion():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1528 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1529 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
1530
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1531 @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
1532 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1533 return sys.hexversion >> 16
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1534
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1535
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
1536 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
1537 """
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 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
1539
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
1540 @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
1541 @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
1542 @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
1543 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
1544 @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
1545 """
7186
ccd55666e9d2 Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7098
diff changeset
1546 pyAssignment = {
ccd55666e9d2 Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7098
diff changeset
1547 "Python3": 3,
ccd55666e9d2 Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7098
diff changeset
1548 "MicroPython": 3,
ccd55666e9d2 Utilities, MicrobitDevices: added MicroPython to the known Python Variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7098
diff changeset
1549 }
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
1550
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
1551 if not editor:
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
1552 viewManager = e5App().getObject('ViewManager')
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
1553 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
1554
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
1555 # 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
1556 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
1557 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
1558
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
1559 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
1560 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
1561 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
1562 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
1563 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
1564 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
1565 py3Ext = Preferences.getPython("Python3Extensions")
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 project = e5App().getObject('Project')
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 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
1568
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 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
1570 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
1571 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
1572 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
1573 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
1574 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
1575 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
1576 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
1577
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
1578 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
1579 # 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
1580 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
1581 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
1582 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
1583 project.isProjectFile(filename) and
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7636
diff changeset
1584 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
1585 pyVer = pyAssignment.get(project.getProjectLanguage(), 0)
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7636
diff changeset
1586 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
1587 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
1588 elif source:
7192
a22eee00b052 Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7186
diff changeset
1589 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
1590 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
1591 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
1592 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
1593 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
1594 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
1595 (("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
1596 ):
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
1597 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
1598
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7636
diff changeset
1599 if pyVer == 0 and ext in py3Ext:
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7636
diff changeset
1600 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
1601
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
1602 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
1603
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
1604
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1605 def rxIndex(rx, txt):
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1606 """
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1607 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
1608 within some text.
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1609
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1610 @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
1611 @type re.Pattern
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1612 @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
1613 @type str
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1614 @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
1615 @rtype int
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1616 """
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1617 match = rx.search(txt)
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1618 if match is None:
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1619 return -1
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1620 else:
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1621 return match.start()
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1622
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1623
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1624 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1625 # 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
1626 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1627
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1628
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1629 def getEnvironmentEntry(key, default=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1630 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1631 Module function to get an environment entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1632
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1633 @param key key of the requested environment entry (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1634 @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
1635 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
1636 @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
1637 found (string or None)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1638 """
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1639 pattern = "^{0}[ \t]*=".format(key)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1640 if isWindowsPlatform():
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1641 filterRe = re.compile(pattern, re.IGNORECASE)
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1642 else:
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1643 filterRe = re.compile(pattern)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1644
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1645 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
1646 if filterRe.search(e) is not None]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1647 if not entries:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1648 return default
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1649
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1650 # 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
1651 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
1652 return value.strip()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1653
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1654
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1655 def hasEnvironmentEntry(key):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1656 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1657 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
1658
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1659 @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
1660 @type str
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1661 @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
1662 @rtype bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1663 """
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1664 pattern = "^{0}[ \t]*=".format(key)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1665 if isWindowsPlatform():
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1666 filterRe = re.compile(pattern, re.IGNORECASE)
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1667 else:
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7729
diff changeset
1668 filterRe = re.compile(pattern)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1669
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1670 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
1671 if filterRe.search(e) is not None]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1672 return len(entries) > 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1673
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1674 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1675 # 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
1676 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1677
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
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1679 def generateQtToolName(toolname):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1680 """
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1681 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
1682 designer.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1683
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1684 @param toolname base name of the tool (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1685 @return the Qt tool name without extension (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1686 """
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7196
diff changeset
1687 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
1688 toolname,
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7196
diff changeset
1689 Preferences.getQt("QtToolsPostfix")
3039
8dd0165d805d Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
1690 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1691
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1692
1368
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1693 def getQtMacBundle(toolname):
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1694 """
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1695 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
1696
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1697 @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
1698 @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
1699 """
2619
55f6484ad1c3 Tested and completed the Qt binaries path stuff on Mac OS X.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2615
diff changeset
1700 qtDir = getQtBinariesPath()
1368
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1701 bundles = [
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1702 os.path.join(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1703 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
1704 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
1705 os.path.join(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1706 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
1707 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
1708 ]
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
1709 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
1710 # 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
1711 # 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
1712 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
1713 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
1714 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
1715 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
1716 ])
1368
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1717 for bundle in bundles:
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1718 if os.path.exists(bundle):
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1719 return bundle
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1720 return ""
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1721
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1722
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
1723 def prepareQtMacBundle(toolname, args):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1724 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1725 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
1726
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
1727 @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
1728 @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
1729 @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
1730 @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
1731 @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
1732 @rtype tuple of (str, list of str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1733 """
1368
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1734 fullBundle = getQtMacBundle(toolname)
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1735 if fullBundle == "":
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1736 return ("", [])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1737
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1738 newArgs = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1739 newArgs.append("-a")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1740 newArgs.append(fullBundle)
1368
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1741 if args:
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1742 newArgs.append("--args")
4489ee4feb59 Fixed a few Mac OS X related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1348
diff changeset
1743 newArgs += args
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1744
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1745 return ("open", newArgs)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1746
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1747 ###############################################################################
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
1748 # PyQt utility functions below
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
1749 ###############################################################################
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
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
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
1752 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
1753 """
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 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
1755
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 @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
1757 @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
1758 @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
1759 @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
1760 @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
1761 @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
1762 """
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 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
1764 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
1765 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
1766 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
1767 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
1768 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
1769 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
1770 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
1771 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
1772 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
1773 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
1774
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
1775 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
1776 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
1777 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
1778 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
1779
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
1780 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
1781
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
1782 ###############################################################################
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1783 # 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
1784 ###############################################################################
1173
c826cd21e273 Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1167
diff changeset
1785
2770
fd5ee85f0450 Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
1786
7908
33afc8e96e19 Fixed a bug introduced with the recent changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
1787 def generatePySideToolPath(toolname, variant=2):
1173
c826cd21e273 Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1167
diff changeset
1788 """
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1789 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
1790
6291
94e0e688dcad PySide2 support: started to implement support for PySide2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6289
diff changeset
1791 @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
1792 @type str
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1793 @param variant indicator for the PySide variant
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1794 @type int or str
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1795 @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
1796 @rtype str
1173
c826cd21e273 Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1167
diff changeset
1797 """
c826cd21e273 Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1167
diff changeset
1798 if isWindowsPlatform():
7636
61566f35ab22 Utilities: fixed an issue determining the tools path for pyside2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7635
diff changeset
1799 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
1800 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
1801 return ""
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
1802
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1803 venvName = Preferences.getQt("PySide{0}VenvName".format(variant))
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1804 if not venvName:
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1805 venvName = Preferences.getDebugger("Python3VirtualEnv")
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1806 interpreter = e5App().getObject(
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1807 "VirtualEnvManager").getVirtualenvInterpreter(venvName)
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1808 if interpreter == "" or not isinpath(interpreter):
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1809 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
1810 prefix = os.path.dirname(interpreter)
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1811 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
1812 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
1813 # 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
1814 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
1815 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
1816 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
1817
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
1818 # 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
1819 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
1820 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
1821 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
1822
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1823 return toolname
1173
c826cd21e273 Adjustments for PySide on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1167
diff changeset
1824
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
7908
33afc8e96e19 Fixed a bug introduced with the recent changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
1826 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
1827 """
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1828 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
1829
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1830 @param variant indicator for the PySide variant
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1831 @type int or str
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7908
diff changeset
1832 @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
1833 @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
1834 """
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1835 venvName = Preferences.getQt("PySide{0}VenvName".format(variant))
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1836 if not venvName:
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1837 venvName = Preferences.getDebugger("Python3VirtualEnv")
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
1838 interpreter = e5App().getObject(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
1839 "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
1840 if interpreter == "" or not isinpath(interpreter):
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1841 interpreter = sys.executable
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1842
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1843 checker = os.path.join(
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1844 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
1845 args = [checker, "--variant={0}".format(variant)]
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1846 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
1847 proc.setProcessChannelMode(QProcess.ProcessChannelMode.MergedChannels)
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1848 proc.start(interpreter, args)
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
1849 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
1850 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
1851
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
1852 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1853 # 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
1854 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1855
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1856
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1857 def generateVersionInfo(linesep='\n'):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1858 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1859 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
1860
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1861 @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
1862 @type str
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1863 @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
1864 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1865 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1866 try:
6364
6a496f0886ad Prepared the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6348
diff changeset
1867 try:
6365
85f8745427a6 Redid the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6364
diff changeset
1868 from PyQt5 import sip
6364
6a496f0886ad Prepared the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6348
diff changeset
1869 except ImportError:
6365
85f8745427a6 Redid the "import sip" statements for PyQt 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6364
diff changeset
1870 import sip
3628
deb5973080a9 Added code to prevent possible segfaults when closing down.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3621
diff changeset
1871 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
1872 except (ImportError, AttributeError):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1873 sip_version_str = "sip version not available"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1874
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
1875 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
1876
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1877 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
1878
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1879 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
1880 info.append(" Qt {0}".format(qVersion()))
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1881 info.append(" PyQt {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
1882 try:
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 from PyQt5 import QtChart
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1884 info.append(" PyQtChart {0}".format(QtChart.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
1885 except (ImportError, AttributeError):
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(" PyQtChart 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
1887 try:
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
1888 from PyQt5 import QtWebEngine
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1889 info.append(" PyQtWebEngine {0}".format(
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1890 QtWebEngine.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
1891 except (ImportError, AttributeError):
7725
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(" PyQtWebEngine not installed")
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(" QScintilla {0}".format(QSCINTILLA_VERSION_STR))
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(" sip {0}".format(sip_version_str))
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
1895 try:
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
1896 from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__
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
1897 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
1898 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
1899 info.append(" WebEngine {0}".format(chromeVersion))
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
1900 except ImportError:
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
1901 pass
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1902 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
1903 info.append("")
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1904 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
1905 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
1906 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
1907 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
1908 info.append("")
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1909 info.append("Desktop: {0}".format(desktop))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1910
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1911 return linesep.join(info)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1912
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1913
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1914 def generatePluginsVersionInfo(linesep='\n'):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1915 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1916 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
1917
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1918 @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
1919 @type str
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1920 @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
1921 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1922 """
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1923 info = []
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1924 app = e5App()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1925 if app is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1926 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1927 pm = app.getObject("PluginManager")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1928 versions = {}
7729
f2f7b7b24879 Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7725
diff changeset
1929 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
1930 versions[pinfo["module_name"]] = pinfo["version"]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1931
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1932 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
1933 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
1934 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
1935 pluginModuleName, versions[pluginModuleName]))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1936 except KeyError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1937 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1938
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1939 return linesep.join(info)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1940
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1941
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1942 def generateDistroInfo(linesep='\n'):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1943 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1944 Module function to generate a string with distribution infos.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1945
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1946 @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
1947 @type str
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1948 @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
1949 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1950 """
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1951 info = []
882
34b86be88bf0 Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 832
diff changeset
1952 if isLinuxPlatform():
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1953 releaseList = glob.glob("/etc/*-release")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1954 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
1955 info.append("Distribution Info:")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1956 for rfile in releaseList:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1957 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
1958 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
1959 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
1960 except OSError:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1961 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1962
7729
f2f7b7b24879 Utilities: optimized and fixed the assembly of version information.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7725
diff changeset
1963 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
1964 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
1965 info.append("")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1966
7725
2648f2c894df Utilities: changed code to make assembly of version information more maintainable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
1967 return linesep.join(info)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1968
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
1969
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1970 def toBool(dataStr):
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1971 """
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1972 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
1973
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1974 @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
1975 @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
1976 """
2194
0fce40af66b8 Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2087
diff changeset
1977 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
1978 return True
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1979 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
1980 return False
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1981 else:
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1982 return bool(dataStr)
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1914
diff changeset
1983
6545
f669c4c0d39b Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
1984
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
1985 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
1986 """
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 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
1988 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
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 @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
1991 @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
1992 @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
1993 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
1994 @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
1995 """
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
1996 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
1997
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 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
1999
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
2000 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
2001 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
2002 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
2003 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
2004 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
2005 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
2006 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
2007 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
2008 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
2009 sysPathResult = str(text, "utf-8", "replace").strip()
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
2010 try:
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
2011 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
2012 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
2013 sysPath.remove("")
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
2014 except (TypeError, ValueError):
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
2015 # ignore faulty results and return empty list
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
2016 pass
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
2017
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
2018 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
2019
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
2020 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2021 # 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
2022 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2023
114
f6e7cec11168 Changed the getUserName() function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
2024 # None right now
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2025
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
2026 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2027 # 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
2028 ###############################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2029
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
2030
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2031 def win32_Kill(pid):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2032 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2033 Function to provide an os.kill equivalent for Win32.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2034
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2770
diff changeset
2035 @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
2036 @return result of the kill (boolean)
0
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 import win32api
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2039 handle = win32api.OpenProcess(1, 0, pid)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2040 return (0 != win32api.TerminateProcess(handle, 0))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2041
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
2042
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2043 def win32_GetUserName():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2044 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2045 Function to get the user name under Win32.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2046
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2047 @return user name (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2048 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2049 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2050 import win32api
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2051 return win32api.GetUserName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2052 except ImportError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2053 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2054 u = getEnvironmentEntry('USERNAME')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2055 except KeyError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2056 u = getEnvironmentEntry('username', None)
69
2e78b0aab87e Fixed a problem in Utilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
2057 return u
2239
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2058
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 def win32_getRealName():
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2061 """
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2062 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
2063
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2064 @return real name of the current user (string)
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2065 """
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2066 import ctypes
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2067
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2068 GetUserNameEx = ctypes.windll.secur32.GetUserNameExW
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2069 NameDisplay = 3
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2070
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2071 size = ctypes.pointer(ctypes.c_ulong(0))
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2072 GetUserNameEx(NameDisplay, None, size)
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2073
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2074 nameBuffer = ctypes.create_unicode_buffer(size.contents.value)
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2075 GetUserNameEx(NameDisplay, nameBuffer, size)
a47b50e80a20 Continued with the IRC management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2227
diff changeset
2076 return nameBuffer.value

eric ide

mercurial