ProjectPyramid/DistributionTypeSelectionDialog.py

Wed, 21 Dec 2022 10:12:45 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Dec 2022 10:12:45 +0100
branch
eric7
changeset 164
277a93891db9
parent 160
41b23683d5a1
child 166
8b0cc7528c70
permissions
-rw-r--r--

Adapted some import statements to eric 23.1 and newer.

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
156
62170c2682a3 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 148
diff changeset
3 # Copyright (c) 2012 - 2022 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
164
277a93891db9 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
10 from PyQt6.QtCore import QProcess, Qt
147
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
11 from PyQt6.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
160
41b23683d5a1 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 159
diff changeset
13 from eric7 import Preferences
41b23683d5a1 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 159
diff changeset
14 from eric7.EricWidgets import EricMessageBox
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
16 from .Ui_DistributionTypeSelectionDialog import Ui_DistributionTypeSelectionDialog
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
19 class DistributionTypeSelectionDialog(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
20 """
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 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
22 """
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
23
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 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
25 """
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
27
54
71c83a661c83 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
28 @param project reference to the project object
147
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
29 @type Project
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
30 @param projectPath path of the Pyramid project
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
31 @type str
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
32 @param parent reference to the parent widget
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
33 @type QWidget
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
144
5c3684ee818e - removed support for obsolete eric6 versions
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 143
diff changeset
35 super().__init__(parent)
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.setupUi(self)
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
37
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 errMsg = ""
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 proc = QProcess()
148
dcbd3a96f03c Ported the plug-in to PyQt6 for eric7 and adopted it for Pyramid 2.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
40 cmd = project.getPyramidCommand(
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
41 "python", virtualEnv=project.getProjectVirtualEnvironment()
148
dcbd3a96f03c Ported the plug-in to PyQt6 for eric7 and adopted it for Pyramid 2.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
42 )
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 args = []
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 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
45 args.append("sdist")
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 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
47 proc.setWorkingDirectory(projectPath)
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 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
49 procStarted = proc.waitForStarted()
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 if procStarted:
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 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
52 if finished and proc.exitCode() == 0:
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
53 output = str(
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
54 proc.readAllStandardOutput(),
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
55 Preferences.getSystem("IOEncoding"),
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
56 "replace",
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
57 )
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 else:
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 if not finished:
74
11587ae1122f Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 71
diff changeset
60 errMsg = self.tr(
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
61 "The python setup.py command did not finish within" " 30s."
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
62 )
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 else:
95
2b0933087db9 Made these changes:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 83
diff changeset
64 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
65 if not errMsg:
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 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
67 line = line.strip()
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if line.startswith("--formats="):
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
69 fileFormat, description = line.replace("--formats=", "").split(
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
70 None, 1
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
71 )
54
71c83a661c83 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
72 itm = QListWidgetItem(
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
73 "{0} ({1})".format(fileFormat, description), self.formatsList
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
74 )
147
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
75 itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
76 itm.setCheckState(Qt.CheckState.Unchecked)
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 else:
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
78 EricMessageBox.critical(None, self.tr("Process Generation Error"), errMsg)
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
79
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 def getFormats(self):
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 Public method to retrieve the checked formats.
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
83
147
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
84 @return list of selected formats
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
85 @rtype list of str
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 formats = []
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 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
89 itm = self.formatsList.item(row)
147
eb28b4b6f7f5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
90 if itm.checkState() == Qt.CheckState.Checked:
106
2086bda4a893 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
91 fileFormat = itm.text().split(None, 1)[0].strip()
2086bda4a893 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
92 if fileFormat:
2086bda4a893 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
93 formats.append(fileFormat)
159
d4e7f5a389e6 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
94
2
e691c51ab655 Implemented the required command actions for supporting development of Pyramid projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 return formats

eric ide

mercurial