Fri, 02 Aug 2024 14:35:21 +0200
Changed the logic to setup the initial size of the editor outline widget. Somehow the width of the splitter did not get set correctly in certain situations (see issue 567).
2969
0e1af1313b8b
Regenerated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
1 | #!/usr/bin/env python3 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | # -*- coding: utf-8 -*- |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | |
10439
21c28b0f9e41
Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10420
diff
changeset
|
4 | # Copyright (c) 2009 - 2024 Detlev Offenbach <detlev@die-offenbachs.de> |
0
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 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | """ |
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
|
8 | Script for eric to compile all .ui files to Python source. |
0
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 | |
9209
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
11 | import os |
4435
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
12 | |
9986 | 13 | from functools import partial |
14 | ||
15 | from PyQt6.uic import compileUi | |
4435
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
16 | |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
17 | |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
18 | def __pyName(py_dir, py_file): |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
19 | """ |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
20 | Local function to create the Python source file name for the compiled |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
21 | .ui file. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
22 | |
10420
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
23 | @param py_dir suggested name of the directory |
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
24 | @type str |
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
25 | @param py_file suggested name for the compile source file |
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
26 | @type str |
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
27 | @return tuple of directory name (string) and source file name |
5ac83a87954d
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10331
diff
changeset
|
28 | @rtype str |
4435
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
29 | """ |
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
30 | return py_dir, "Ui_{0}".format(py_file) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
32 | |
9986 | 33 | def __compileOneUi(ui_path, mapFunc=None, execute=False, indent=4): |
34 | """ | |
35 | Function to compile a single form file to Python code. | |
36 | ||
37 | @param ui_path path of the Qt form file | |
38 | @type str | |
39 | @param mapFunc function to change directory and/or name of the resulting Python file | |
40 | (defaults to None) | |
41 | @type func (optional) | |
42 | @param execute flag indicating to generate code to execute the form in standalone | |
43 | mode (defaults to False) | |
44 | @type bool (optional) | |
45 | @param indent indentation width using spaces (defaults to 4) | |
46 | @type int (optional) | |
47 | """ | |
48 | py_dir, py_file = os.path.split(ui_path[:-3] + ".py") | |
49 | ||
50 | # Allow the caller to change the name of the .py file or generate | |
51 | # it in a different directory. | |
52 | if mapFunc is not None: | |
53 | py_dir, py_file = mapFunc(py_dir, py_file) | |
54 | ||
55 | # Make sure the destination directory exists. | |
56 | os.makedirs(py_dir, exist_ok=True) | |
57 | ||
58 | py_path = os.path.join(py_dir, py_file) | |
59 | ||
60 | with open(py_path, "w", encoding="utf-8") as py_file: | |
61 | compileUi(ui_path, py_file, execute=execute, indent=indent) | |
62 | ||
63 | ||
64 | def compileUiDir(root, recurse=False, mapFunc=None, workers=1, execute=False, indent=4): | |
65 | """ | |
66 | Function to compile all Qt form files of a directory or directory tree | |
67 | to Python code. | |
68 | ||
69 | @param root directory to scan for Qt form files (i.e. files ending with '.ui' | |
70 | @type str | |
71 | @param recurse flag indicating to recurse into sub-directories (defaults to False) | |
72 | @type bool (optional) | |
73 | @param mapFunc function to change directory and/or name of the resulting Python file | |
74 | (defaults to None) | |
75 | @type func (optional) | |
76 | @param workers number of worker processes to be used to compile (defaults to 1) | |
77 | @type int (optional) | |
78 | @param execute flag indicating to generate code to execute the form in standalone | |
79 | mode (defaults to False) | |
80 | @type bool (optional) | |
81 | @param indent indentation width using spaces (defaults to 4) | |
82 | @type int (optional) | |
83 | """ | |
84 | if recurse: | |
85 | ui_files = [] | |
86 | for rootDir, _, files in os.walk(root): | |
87 | ui_files.extend( | |
88 | os.path.join(rootDir, ui) for ui in files if ui.endswith(".ui") | |
89 | ) | |
90 | else: | |
91 | ui_files = [ | |
92 | os.path.join(root, ui) | |
93 | for ui in os.listdir(root) | |
94 | if os.path.isfile(os.path.join(root, ui) and ui.endswith(".ui")) | |
95 | ] | |
96 | ||
97 | ProcessPoolExecutor = None | |
98 | if workers != 1: | |
99 | try: | |
10331
c1a2ff7e3575
Modernized some code and corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10067
diff
changeset
|
100 | from concurrent.futures import ProcessPoolExecutor # noqa: I101, I103 |
9986 | 101 | except NotImplementedError: |
102 | workers = 1 | |
103 | ||
104 | if workers != 1 and ProcessPoolExecutor is not None: | |
105 | # If workers == 0, let ProcessPoolExecutor determine worker count. | |
106 | workers = workers or None | |
107 | with ProcessPoolExecutor(max_workers=workers) as executor: | |
108 | executor.map( | |
109 | partial( | |
110 | __compileOneUi, mapFunc=mapFunc, execute=execute, indent=indent | |
111 | ), | |
112 | ui_files, | |
113 | ) | |
114 | else: | |
115 | for ui_file in ui_files: | |
116 | __compileOneUi(ui_file, mapFunc=mapFunc, execute=execute, indent=indent) | |
117 | ||
118 | ||
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | def compileUiFiles(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | Compile the .ui files to Python sources. |
4435
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
122 | """ |
9209
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
123 | if os.path.exists("src"): |
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
124 | # eric7 with 'src' layout |
9986 | 125 | compileUiDir( |
126 | os.path.join("src", "eric7"), recurse=True, mapFunc=__pyName, workers=0 | |
127 | ) | |
9209
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
128 | elif os.path.exists("eric7"): |
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
129 | # old layout or invoked from within 'src' |
9986 | 130 | compileUiDir("eric7", recurse=True, mapFunc=__pyName, workers=0) |
9209
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
131 | else: |
b99e7fd55fd3
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
132 | print("No valid 'eric7' source layout could be found. Aborting...") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
134 | |
10065
de4ae767b0e3
Corrected and checked some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9986
diff
changeset
|
135 | def main(): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | The main function of the script. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | # Compile .ui files |
12
1d8dd9706f46
First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
140 | print("Compiling user interface files...") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | compileUiFiles() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
142 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
143 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if __name__ == "__main__": |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | try: |
10065
de4ae767b0e3
Corrected and checked some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9986
diff
changeset
|
146 | main() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | except SystemExit: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | raise |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4435
diff
changeset
|
149 | except Exception: |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
150 | print( |
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
151 | "\nAn internal error occured. Please report all the output of the" |
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
152 | " program, \nincluding the following traceback, to" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
153 | " eric-bugs@eric-ide.python-projects.org.\n" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
154 | ) |
428
58405c24aa09
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
15
diff
changeset
|
155 | raise |
4566
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4563
diff
changeset
|
156 | |
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4563
diff
changeset
|
157 | # |
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4563
diff
changeset
|
158 | # eflag: noqa = M801 |