Wed, 30 Dec 2020 11:02:09 +0100
Updated copyright for 2021.
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
143
4ef44e854b39
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
138
diff
changeset
|
3 | # Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to select the distribution file formats. |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
74
11587ae1122f
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
71
diff
changeset
|
10 | from PyQt5.QtCore import Qt, QProcess |
11587ae1122f
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
71
diff
changeset
|
11 | from PyQt5.QtWidgets import QDialog, QListWidgetItem |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from E5Gui import E5MessageBox |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
138
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
15 | from .Ui_DistributionTypeSelectionDialog import ( |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
16 | Ui_DistributionTypeSelectionDialog |
138
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
17 | ) |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | import Preferences |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
22 | class DistributionTypeSelectionDialog( |
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
23 | QDialog, Ui_DistributionTypeSelectionDialog): |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Class implementing a dialog to select the distribution file formats. |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | def __init__(self, project, projectPath, parent=None): |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Constructor |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
31 | @param project reference to the project object |
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
32 | (ProjectPyramid.Project.Project) |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @param projectPath path of the Pyramid project (string) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @param parent reference to the parent widget (QWidget) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
56
c7adc68350dd
Python 2 compatibility for Eric 5.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
34
diff
changeset
|
36 | super(DistributionTypeSelectionDialog, self).__init__(parent) |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.setupUi(self) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | errMsg = "" |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | proc = QProcess() |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | cmd = project.getPythonCommand() |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | args = [] |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | args.append("setup.py") |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | args.append("sdist") |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | args.append("--help-formats") |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | proc.setWorkingDirectory(projectPath) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | proc.start(cmd, args) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | procStarted = proc.waitForStarted() |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | if procStarted: |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | finished = proc.waitForFinished(30000) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | if finished and proc.exitCode() == 0: |
138
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
52 | output = str(proc.readAllStandardOutput(), |
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
53 | Preferences.getSystem("IOEncoding"), |
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
54 | 'replace') |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | else: |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | if not finished: |
74
11587ae1122f
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
71
diff
changeset
|
57 | errMsg = self.tr( |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
58 | "The python setup.py command did not finish within" |
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
59 | " 30s.") |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | else: |
95
2b0933087db9
Made these changes:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
83
diff
changeset
|
61 | errMsg = self.tr("Could not start the python executable.") |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | if not errMsg: |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | for line in output.splitlines(): |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | line = line.strip() |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | if line.startswith("--formats="): |
138
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
66 | fileFormat, description = ( |
72ebb74aa42d
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
132
diff
changeset
|
67 | line.replace("--formats=", "").split(None, 1)) |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
68 | itm = QListWidgetItem( |
106
2086bda4a893
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
99
diff
changeset
|
69 | "{0} ({1})".format(fileFormat, description), |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
70 | self.formatsList) |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | itm.setCheckState(Qt.Unchecked) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | else: |
54
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
74 | E5MessageBox.critical( |
71c83a661c83
Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
75 | None, |
74
11587ae1122f
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
71
diff
changeset
|
76 | self.tr('Process Generation Error'), |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | errMsg) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | def getFormats(self): |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | Public method to retrieve the checked formats. |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | @return list of selected formats (list of string) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | formats = [] |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | for row in range(self.formatsList.count()): |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | itm = self.formatsList.item(row) |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | if itm.checkState() == Qt.Checked: |
106
2086bda4a893
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
99
diff
changeset
|
89 | fileFormat = itm.text().split(None, 1)[0].strip() |
2086bda4a893
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
99
diff
changeset
|
90 | if fileFormat: |
2086bda4a893
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
99
diff
changeset
|
91 | formats.append(fileFormat) |
2
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
e691c51ab655
Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | return formats |