Sat, 02 Jul 2022 18:53:56 +0200
setup Wizard
- added support for 'project_urls'
- added support for 'entry_points'
- added a variant to create a 'setup.cfg' file
- added a variant to create a 'pyproject.toml' file
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
8881
54e42bc2437a
Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8862
diff
changeset
|
3 | # Copyright (c) 2013 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the setup.py wizard dialog. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9201 | 10 | import configparser |
11 | import datetime | |
12 | import io | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import os |
9201 | 14 | import pathlib |
15 | ||
16 | import tomlkit | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
18 | import trove_classifiers |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
19 | |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
20 | from PyQt6.QtCore import pyqtSlot, Qt |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
21 | from PyQt6.QtWidgets import ( |
7771
787a6b3f8c9f
Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
22 | QDialog, QDialogButtonBox, QTreeWidgetItem, QListWidgetItem |
7258
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
23 | ) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
8358
144a6b854f70
Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8356
diff
changeset
|
25 | from EricWidgets.EricApplication import ericApp |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
26 | from EricWidgets import EricFileDialog |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
27 | from EricWidgets.EricPathPicker import EricPathPickerModes |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
9201 | 29 | from .AddEntryPointDialog import AddEntryPointDialog |
30 | from .AddProjectUrlDialog import AddProjectUrlDialog | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | from .Ui_SetupWizardDialog import Ui_SetupWizardDialog |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | import Utilities |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | import Preferences |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | class SetupWizardDialog(QDialog, Ui_SetupWizardDialog): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | Class implementing the setup.py wizard dialog. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
41 | It displays a dialog for entering the parameters for the setup.py code |
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
42 | generator. |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | """ |
9201 | 44 | def __init__(self, category, parent=None): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Constructor |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
9201 | 48 | @param category category of setup file to create |
49 | @type str | |
50 | @param parent reference to the parent widget (defaults to None) | |
51 | @type QWidget (optional) | |
52 | @exception ValueError raised for an illegal setup file category | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | """ |
9201 | 54 | if category not in ("setup.py", "setup.cfg", "pyproject.toml"): |
55 | raise ValueError("illegal setup file category given") | |
56 | ||
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
57 | super().__init__(parent) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | self.setupUi(self) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
7005
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
60 | self.__replies = [] |
9201 | 61 | self.__category = category |
62 | ||
63 | if category != "setup.py": | |
64 | self.introCheckBox.setVisible(False) | |
65 | self.importCheckBox.setVisible(False) | |
66 | self.metaDataCheckBox.setVisible(False) | |
7005
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
67 | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self.dataTabWidget.setCurrentIndex(0) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
70 | self.packageRootPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
71 | self.sourceDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
8862
99459beb81b1
Adapted some style sheet usages to observe the palette lightness (dark/light).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8838
diff
changeset
|
73 | self.__mandatoryStyleSheet = ( |
99459beb81b1
Adapted some style sheet usages to observe the palette lightness (dark/light).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8838
diff
changeset
|
74 | "QLineEdit {border: 2px solid; border-color: #dd8888}" |
99459beb81b1
Adapted some style sheet usages to observe the palette lightness (dark/light).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8838
diff
changeset
|
75 | if ericApp().usesDarkPalette() else |
99459beb81b1
Adapted some style sheet usages to observe the palette lightness (dark/light).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8838
diff
changeset
|
76 | "QLineEdit {border: 2px solid; border-color: #800000}" |
99459beb81b1
Adapted some style sheet usages to observe the palette lightness (dark/light).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8838
diff
changeset
|
77 | ) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | for lineEdit in [self.nameEdit, self.versionEdit, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | self.homePageUrlEdit, self.authorEdit, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | self.authorEmailEdit, self.maintainerEdit, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.maintainerEmailEdit]: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | lineEdit.setStyleSheet(self.__mandatoryStyleSheet) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
84 | self.__populateClassifiers() |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
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:
7923
diff
changeset
|
86 | self.__okButton = self.buttonBox.button( |
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:
7923
diff
changeset
|
87 | QDialogButtonBox.StandardButton.Ok) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self.__okButton.setEnabled(False) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
90 | projectOpen = ericApp().getObject("Project").isOpen() |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.projectButton.setEnabled(projectOpen) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
9201 | 93 | self.projectUrlsList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder) |
94 | self.entryPointsList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder) | |
95 | ||
96 | self.descriptionContentTypeComboBox.addItem("", "") | |
97 | for contentType, mimetype in sorted([ | |
98 | (self.tr("Plain Text"), "text/plain"), | |
99 | (self.tr("Markdown"), "text/markdown"), | |
100 | (self.tr("reStructuredText"), "text/x-rst") | |
101 | ||
102 | ]): | |
103 | self.descriptionContentTypeComboBox.addItem(contentType, mimetype) | |
104 | ||
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | self.homePageUrlEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | self.nameEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | self.versionEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.authorEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | self.authorEmailEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | self.maintainerEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | self.maintainerEmailEdit.textChanged.connect(self.__enableOkButton) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | def __enableOkButton(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | Private slot to set the state of the OK button. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | enable = ( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | bool(self.nameEdit.text()) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | bool(self.versionEdit.text()) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | bool(self.homePageUrlEdit.text()) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | ((bool(self.authorEdit.text()) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | bool(self.authorEmailEdit.text())) or |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | (bool(self.maintainerEdit.text()) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | bool(self.maintainerEmailEdit.text()))) and |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | self.homePageUrlEdit.text().startswith(("http://", "https://")) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | ) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | self.__okButton.setEnabled(enable) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
130 | def __populateClassifiers(self): |
7005
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
131 | """ |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
132 | Private method to populate the classifiers. |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
133 | """ |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
134 | self.licenseClassifierComboBox.clear() |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
135 | self.classifiersList.clear() |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
136 | self.developmentStatusComboBox.clear() |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
137 | |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
138 | self.developmentStatusComboBox.addItem("", "") |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
139 | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.__classifiersDict = {} |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
141 | for classifier in trove_classifiers.sorted_classifiers: |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
142 | if classifier.startswith("License ::"): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | self.licenseClassifierComboBox.addItem( |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
144 | "/".join(classifier.split(" :: ")[1:]), |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
145 | classifier |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | ) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
147 | elif classifier.startswith("Development Status ::"): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | self.developmentStatusComboBox.addItem( |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
149 | classifier.split(" :: ")[1], classifier) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | else: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
151 | self.__addClassifierEntry(classifier) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | self.__classifiersDict = {} |
7005
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
153 | |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
154 | self.licenseClassifierComboBox.setCurrentIndex( |
342819f05839
setup.py Wizard:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
155 | self.licenseClassifierComboBox.findText( |
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:
7923
diff
changeset
|
156 | "(GPLv3)", |
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:
7923
diff
changeset
|
157 | Qt.MatchFlag.MatchContains | Qt.MatchFlag.MatchCaseSensitive |
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:
7923
diff
changeset
|
158 | ) |
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:
7923
diff
changeset
|
159 | ) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
161 | def __addClassifierEntry(self, classifier): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | Private method to add a new entry to the list of trove classifiers. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
165 | @param classifier classifier containing the data for the entry |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
166 | @type str |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | itm = None |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | pitm = None |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
170 | dataList = classifier.split(" :: ") |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | for index in range(len(dataList)): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | key = " :: ".join(dataList[:index + 1]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | if key not in self.__classifiersDict: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | if pitm is None: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | itm = QTreeWidgetItem( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | self.classifiersList, [dataList[index]]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | pitm = itm |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | else: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | itm = QTreeWidgetItem(pitm, [dataList[index]]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | itm.setExpanded(True) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | self.__classifiersDict[key] = itm |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | else: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | pitm = self.__classifiersDict[key] |
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:
7923
diff
changeset
|
184 | itm.setCheckState(0, Qt.CheckState.Unchecked) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
185 | itm.setData(0, Qt.ItemDataRole.UserRole, classifier) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | def __getLicenseText(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | Private method to get the license text. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
191 | @return license text |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
192 | @rtype str |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | if not self.licenseClassifierCheckBox.isChecked(): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | return self.licenseEdit.text() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | else: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | lic = self.licenseClassifierComboBox.currentText() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | if "(" in lic: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | lic = lic.rsplit("(", 1)[1].split(")", 1)[0] |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | return lic |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
9201 | 202 | def __getSetupPyCode(self, indLevel, indString): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | """ |
9201 | 204 | Private method to get the source code for a 'setup.py' file. |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
206 | @param indLevel indentation level |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
207 | @type int |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
208 | @param indString string used for indentation (space or tab) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
209 | @type str |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
210 | @return generated code |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
211 | @rtype str |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | # Note: all paths are created with '/'; setup will do the right thing |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | # calculate our indentation level and the indentation string |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | il = indLevel + 1 |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | istring = il * indString |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | i1string = (il + 1) * indString |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | i2string = (il + 2) * indString |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | estring = os.linesep + indLevel * indString |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | # now generate the code |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | if self.introCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
224 | sourceCode = "#!/usr/bin/env python3{0}".format(os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
225 | sourceCode += "# -*- coding: utf-8 -*-{0}{0}".format(os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | else: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
227 | sourceCode = "" |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | if self.metaDataCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
230 | sourceCode += '# metadata{0}'.format(os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
231 | sourceCode += '"{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | self.summaryEdit.text() or "Setup routine", |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | os.linesep |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | ) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
235 | sourceCode += '__version__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | self.versionEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
237 | sourceCode += '__license__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | self.__getLicenseText(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
239 | sourceCode += '__author__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | self.authorEdit.text() or self.maintainerEdit.text(), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
242 | sourceCode += '__email__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | self.authorEmailEdit.text() or self.maintainerEmailEdit.text(), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
245 | sourceCode += '__url__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | self.homePageUrlEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
247 | sourceCode += '__date__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | datetime.datetime.now().isoformat().split('.')[0], os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
249 | sourceCode += '__prj__ = "{0}"{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | self.nameEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
251 | sourceCode += os.linesep |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | if self.importCheckBox.isChecked(): |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
254 | additionalImport = ", find_packages" |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
255 | sourceCode += "from setuptools import setup{0}{1}".format( |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
256 | additionalImport, os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
257 | if sourceCode: |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
258 | sourceCode += "{0}{0}".format(os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | if self.descriptionFromFilesCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
261 | sourceCode += 'def get_long_description():{0}'.format(os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
262 | sourceCode += '{0}descr = []{1}'.format(istring, os.linesep) |
9201 | 263 | sourceCode += '{0}for fname in ("{1})":{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | istring, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | '", "'.join(self.descriptionEdit.toPlainText().splitlines()), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | os.linesep) |
9201 | 267 | sourceCode += ( |
268 | '{0}with open(fname, "r", encoding="utf-8") as f:{1}' | |
269 | ).format(i1string, os.linesep) | |
270 | sourceCode += '{0}descr.append(f.read()){1}'.format( | |
271 | i2string, os.linesep) | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
272 | sourceCode += '{0}return "\\n\\n".join(descr){1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | istring, os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
274 | sourceCode += "{0}{0}".format(os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
276 | sourceCode += 'setup({0}'.format(os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
277 | sourceCode += '{0}name="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | istring, self.nameEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
279 | sourceCode += '{0}version="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | istring, self.versionEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | if self.summaryEdit.text(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
283 | sourceCode += '{0}description="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | istring, self.summaryEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | if self.descriptionFromFilesCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
287 | sourceCode += '{0}long_description=get_long_description(),{1}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | istring, os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | elif self.descriptionEdit.toPlainText(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
290 | sourceCode += '{0}long_description="""{1}""",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | istring, self.descriptionEdit.toPlainText(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | |
9201 | 293 | if self.descriptionContentTypeComboBox.currentData(): |
294 | sourceCode += '{0}long_description_content_type="{1}",{2}'.format( | |
295 | istring, self.descriptionContentTypeComboBox.currentData(), os.linesep) | |
296 | ||
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | if self.authorEdit.text(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
298 | sourceCode += '{0}author="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | istring, self.authorEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
300 | sourceCode += '{0}author_email="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | istring, self.authorEmailEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | if self.maintainerEdit.text(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
304 | sourceCode += '{0}maintainer="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | istring, self.maintainerEdit.text(), os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
306 | sourceCode += '{0}maintainer_email="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | istring, self.maintainerEmailEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
309 | sourceCode += '{0}url="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | istring, self.homePageUrlEdit.text(), os.linesep) |
9201 | 311 | if self.downloadUrlEdit.text(): |
312 | sourceCode += '{0}download_url="{1}",{2}'.format( | |
313 | istring, self.downloadUrlEdit.text(), os.linesep) | |
314 | ||
315 | if self.projectUrlsList.topLevelItemCount(): | |
316 | sourceCode += '{0}project_urls={{{1}'.format(istring, os.linesep) | |
317 | for row in range(self.projectUrlsList.topLevelItemCount()): | |
318 | urlItem = self.projectUrlsList.topLevelItem(row) | |
319 | sourceCode += '{0}"{1}": "{2}",{3}'.format( | |
320 | i1string, urlItem.text(0), urlItem.text(1), os.linesep) | |
321 | sourceCode += '{0}}},{1}'.format(istring, os.linesep) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | classifiers = [] |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | if not self.licenseClassifierCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
325 | sourceCode += '{0}license="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | istring, self.licenseEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | else: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | classifiers.append( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | self.licenseClassifierComboBox.itemData( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | self.licenseClassifierComboBox.currentIndex())) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | platforms = self.platformsEdit.toPlainText().splitlines() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | if platforms: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
334 | sourceCode += '{0}platforms=[{1}'.format(istring, os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
335 | sourceCode += '{0}"{1}"{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | i1string, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | '",{0}{1}"'.format(os.linesep, i1string).join(platforms), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
339 | sourceCode += '{0}],{1}'.format(istring, os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | if self.developmentStatusComboBox.currentIndex() != 0: |
9201 | 342 | classifiers.append(self.developmentStatusComboBox.currentData()) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | itm = self.classifiersList.topLevelItem(0) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | while itm: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | itm.setExpanded(True) |
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:
7923
diff
changeset
|
347 | if itm.checkState(0) == Qt.CheckState.Checked: |
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:
7923
diff
changeset
|
348 | classifiers.append(itm.data(0, Qt.ItemDataRole.UserRole)) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | itm = self.classifiersList.itemBelow(itm) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | |
6940
12ed1a714527
SetupWizardDialog: change setup default method to 'setuptools' and fixed an issue causing an exception, if no classifiers were selected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
351 | # cleanup classifiers list - remove all invalid entries |
12ed1a714527
SetupWizardDialog: change setup default method to 'setuptools' and fixed an issue causing an exception, if no classifiers were selected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
352 | classifiers = [c for c in classifiers if bool(c)] |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | if classifiers: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
354 | sourceCode += '{0}classifiers=[{1}'.format(istring, os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
355 | sourceCode += '{0}"{1}"{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | i1string, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | '",{0}{1}"'.format(os.linesep, i1string).join(classifiers), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
359 | sourceCode += '{0}],{1}'.format(istring, os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | del classifiers |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | if self.keywordsEdit.text(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
363 | sourceCode += '{0}keywords="{1}",{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | istring, self.keywordsEdit.text(), os.linesep) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | |
9201 | 366 | if self.pyVersionEdit.text(): |
367 | sourceCode += '{0}python_requires="{1}",{2}'.format( | |
368 | istring, self.pyVersionEdit.text(), os.linesep) | |
369 | ||
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
370 | sourceCode += '{0}packages=find_packages('.format(istring) |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
371 | src = Utilities.fromNativeSeparators( |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
372 | self.sourceDirectoryPicker.text()) |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
373 | excludePatterns = [] |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
374 | for row in range(self.excludePatternList.count()): |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
375 | excludePatterns.append( |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
376 | self.excludePatternList.item(row).text()) |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
377 | if src: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
378 | sourceCode += '{0}{1}"{2}"'.format(os.linesep, i1string, src) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | if excludePatterns: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
380 | sourceCode += ',' |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
381 | else: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
382 | sourceCode += '{0}{1}'.format(os.linesep, istring) |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
383 | if excludePatterns: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
384 | sourceCode += '{0}{1}exclude=[{0}'.format(os.linesep, i1string) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
385 | sourceCode += '{0}"{1}"{2}'.format( |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
386 | i2string, |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
387 | '",{0}{1}"'.format(os.linesep, i2string) |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
388 | .join(excludePatterns), |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
389 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
390 | sourceCode += '{0}]{1}{2}'.format(i1string, os.linesep, istring) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
391 | sourceCode += '),{0}'.format(os.linesep) |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
392 | |
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
393 | if self.includePackageDataCheckBox.isChecked(): |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
394 | sourceCode += '{0}include_package_data = True,{1}'.format( |
8501
7b5f10581c35
Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
395 | istring, os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | modules = [] |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | for row in range(self.modulesList.count()): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | modules.append(self.modulesList.item(row).text()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | if modules: |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
401 | sourceCode += '{0}py_modules=[{1}'.format(istring, os.linesep) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
402 | sourceCode += '{0}"{1}"{2}'.format( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | i1string, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | '",{0}{1}"'.format(os.linesep, i1string).join(modules), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | os.linesep) |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
406 | sourceCode += '{0}],{1}'.format(istring, os.linesep) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407 | del modules |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | |
9201 | 409 | if self.entryPointsList.topLevelItemCount(): |
410 | entryPoints = { | |
411 | "console_scripts": [], | |
412 | "gui_scripts": [], | |
413 | } | |
414 | for row in range(self.entryPointsList.topLevelItemCount()): | |
415 | itm = self.entryPointsList.topLevelItem(row) | |
416 | entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)].append( | |
417 | "{0} = {1}".format(itm.text(1), itm.text(2)) | |
418 | ) | |
419 | sourceCode += '{0}entry_points={{{1}'.format(istring, os.linesep) | |
420 | for epCategory in entryPoints: | |
421 | if entryPoints[epCategory]: | |
422 | sourceCode += '{0}"{1}": [{2}'.format( | |
423 | i1string, epCategory, os.linesep) | |
424 | for entryPoint in entryPoints[epCategory]: | |
425 | sourceCode += '{0}"{1}",{2}'.format( | |
426 | i2string, entryPoint, os.linesep) | |
427 | sourceCode += '{0}],{1}'.format(i1string, os.linesep) | |
428 | sourceCode += '{0}}},{1}'.format(istring, os.linesep) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
429 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
430 | sourceCode += "){0}".format(estring) |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
431 | return sourceCode |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | |
9201 | 433 | def __getSetupCfgCode(self): |
434 | """ | |
435 | Private method to get the source code for a 'setup.cfg' file. | |
436 | ||
437 | @return generated code | |
438 | @rtype str | |
439 | """ | |
440 | from . import SetupCfgUtilities | |
441 | metadata = { | |
442 | "name": self.nameEdit.text(), | |
443 | "version": self.versionEdit.text(), | |
444 | } | |
445 | ||
446 | if self.summaryEdit.text(): | |
447 | metadata["description"] = self.summaryEdit.text() | |
448 | ||
449 | if self.descriptionEdit.toPlainText(): | |
450 | metadata["long_description"] = ( | |
451 | "file: {0}".format( | |
452 | ", ".join(self.descriptionEdit.toPlainText().splitlines()) | |
453 | ) | |
454 | if self.descriptionFromFilesCheckBox.isChecked() else | |
455 | self.descriptionEdit.toPlainText() | |
456 | ) | |
457 | ||
458 | if self.descriptionContentTypeComboBox.currentData(): | |
459 | metadata["long_description_content_type"] = ( | |
460 | self.descriptionContentTypeComboBox.currentData() | |
461 | ) | |
462 | ||
463 | if self.authorEdit.text(): | |
464 | metadata["author"] = self.authorEdit.text() | |
465 | metadata["author_email"] = self.authorEmailEdit.text() | |
466 | ||
467 | if self.maintainerEdit.text(): | |
468 | metadata["maintainer"] = self.maintainerEdit.text() | |
469 | metadata["maintainer_email"] = self.maintainerEmailEdit.text() | |
470 | ||
471 | metadata["url"] = self.homePageUrlEdit.text() | |
472 | if self.downloadUrlEdit.text(): | |
473 | metadata["download_url"] = self.downloadUrlEdit.text() | |
474 | ||
475 | if self.projectUrlsList.topLevelItemCount(): | |
476 | projectURLs = {} | |
477 | for row in range(self.projectUrlsList.topLevelItemCount()): | |
478 | urlItem = self.projectUrlsList.topLevelItem(row) | |
479 | projectURLs[urlItem.text(0)] = urlItem.text(1) | |
480 | metadata["project_urls"] = SetupCfgUtilities.toString(projectURLs) | |
481 | ||
482 | classifiers = [] | |
483 | if not self.licenseClassifierCheckBox.isChecked(): | |
484 | metadata["license"] = self.licenseEdit.text() | |
485 | else: | |
486 | classifiers.append( | |
487 | self.licenseClassifierComboBox.itemData( | |
488 | self.licenseClassifierComboBox.currentIndex())) | |
489 | ||
490 | platforms = self.platformsEdit.toPlainText().splitlines() | |
491 | if platforms: | |
492 | metadata["platforms"] = SetupCfgUtilities.toString(platforms) | |
493 | ||
494 | if self.developmentStatusComboBox.currentIndex() != 0: | |
495 | classifiers.append(self.developmentStatusComboBox.currentData()) | |
496 | ||
497 | itm = self.classifiersList.topLevelItem(0) | |
498 | while itm: | |
499 | itm.setExpanded(True) | |
500 | if itm.checkState(0) == Qt.CheckState.Checked: | |
501 | classifiers.append(itm.data(0, Qt.ItemDataRole.UserRole)) | |
502 | itm = self.classifiersList.itemBelow(itm) | |
503 | ||
504 | # cleanup classifiers list - remove all invalid entries | |
505 | classifiers = [c for c in classifiers if bool(c)] | |
506 | if classifiers: | |
507 | metadata["classifiers"] = SetupCfgUtilities.toString(classifiers) | |
508 | ||
509 | if self.keywordsEdit.text(): | |
510 | metadata["keywords"] = SetupCfgUtilities.toString( | |
511 | self.keywordsEdit.text().split()) | |
512 | ||
513 | options = { | |
514 | "packages": "find:" | |
515 | } | |
516 | ||
517 | if self.pyVersionEdit.text(): | |
518 | options["python_requires"] = self.pyVersionEdit.text() | |
519 | ||
520 | findOptions = {} | |
521 | src = Utilities.fromNativeSeparators(self.sourceDirectoryPicker.text()) | |
522 | excludePatterns = [] | |
523 | for row in range(self.excludePatternList.count()): | |
524 | excludePatterns.append( | |
525 | self.excludePatternList.item(row).text()) | |
526 | if src: | |
527 | options["package_dir"] = SetupCfgUtilities.toString({"": src}) | |
528 | findOptions["where"] = src | |
529 | if excludePatterns: | |
530 | findOptions["exclude"] = SetupCfgUtilities.toString(excludePatterns) | |
531 | ||
532 | if self.includePackageDataCheckBox.isChecked(): | |
533 | options["include_package_data"] = SetupCfgUtilities.toString(True) | |
534 | packageData = {} # placeholder section | |
535 | else: | |
536 | packageData = None | |
537 | ||
538 | modules = [] | |
539 | for row in range(self.modulesList.count()): | |
540 | modules.append(self.modulesList.item(row).text()) | |
541 | if modules: | |
542 | options["py_modules"] = SetupCfgUtilities.toString(modules) | |
543 | ||
544 | if self.entryPointsList.topLevelItemCount(): | |
545 | entryPoints = { | |
546 | "console_scripts": {}, | |
547 | "gui_scripts": {}, | |
548 | } | |
549 | for row in range(self.entryPointsList.topLevelItemCount()): | |
550 | itm = self.entryPointsList.topLevelItem(row) | |
551 | entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)][ | |
552 | itm.text(1)] = itm.text(2) | |
553 | for epType in list(entryPoints.keys()): | |
554 | if entryPoints[epType]: | |
555 | entryPoints[epType] = SetupCfgUtilities.toString( | |
556 | entryPoints[epType]) | |
557 | else: | |
558 | del entryPoints[epType] | |
559 | else: | |
560 | entryPoints = {} | |
561 | ||
562 | configDict = { | |
563 | "metadata": metadata, | |
564 | "options": options, | |
565 | "options.packages.find": findOptions, | |
566 | } | |
567 | if packageData is not None: | |
568 | configDict["options.package_data"] = packageData | |
569 | if entryPoints: | |
570 | configDict["options.entry_points"] = entryPoints | |
571 | ||
572 | cparser = configparser.ConfigParser() | |
573 | cparser.read_dict(configDict) | |
574 | sio = io.StringIO() | |
575 | cparser.write(sio) | |
576 | sourceCode = sio.getvalue() | |
577 | return sourceCode | |
578 | ||
579 | def __getPyprojectCode(self): | |
580 | """ | |
581 | Private method to get the source code for a 'pyproject.toml' file. | |
582 | ||
583 | @return generated code | |
584 | @rtype str | |
585 | """ | |
586 | doc = tomlkit.document() | |
587 | ||
588 | buildSystem = tomlkit.table() | |
589 | buildSystem["requires"] = ["setuptools>=61.0.0", "wheel"] | |
590 | buildSystem["build-backend"] = "setuptools.build_meta" | |
591 | doc["build-system"] = buildSystem | |
592 | ||
593 | project = tomlkit.table() | |
594 | project["name"] = self.nameEdit.text() | |
595 | project["version"] = self.versionEdit.text() | |
596 | ||
597 | if self.summaryEdit.text(): | |
598 | project["description"] = self.summaryEdit.text() | |
599 | ||
600 | if self.descriptionEdit.toPlainText(): | |
601 | if self.descriptionFromFilesCheckBox.isChecked(): | |
602 | project["readme"] = self.descriptionEdit.toPlainText().splitlines()[0] | |
603 | else: | |
604 | readme = tomlkit.table() | |
605 | readme["text"] = self.descriptionEdit.toPlainText() | |
606 | readme["content-type"] = ( | |
607 | self.descriptionContentTypeComboBox.currentData() | |
608 | ) | |
609 | project["readme"] = readme | |
610 | ||
611 | if self.authorEdit.text(): | |
612 | authors = tomlkit.array() | |
613 | author = tomlkit.inline_table() | |
614 | author["name"] = self.authorEdit.text() | |
615 | author["email"] = self.authorEmailEdit.text() | |
616 | authors.append(author) | |
617 | project["authors"] = authors | |
618 | ||
619 | if self.maintainerEdit.text(): | |
620 | maintainers = tomlkit.array() | |
621 | maintainer = tomlkit.inline_table() | |
622 | maintainer["name"] = self.maintainerEdit.text() | |
623 | maintainer["email"] = self.maintainerEmailEdit.text() | |
624 | maintainers.append(maintainer) | |
625 | project["maintainers"] = maintainers | |
626 | ||
627 | urls = tomlkit.table() | |
628 | urls["Homepage"] = self.homePageUrlEdit.text() | |
629 | if self.downloadUrlEdit.text(): | |
630 | urls["Download"] = self.downloadUrlEdit.text() | |
631 | ||
632 | if self.projectUrlsList.topLevelItemCount(): | |
633 | for row in range(self.projectUrlsList.topLevelItemCount()): | |
634 | urlItem = self.projectUrlsList.topLevelItem(row) | |
635 | urls[urlItem.text(0)] = urlItem.text(1) | |
636 | project["urls"] = urls | |
637 | ||
638 | classifiers = [] | |
639 | if not self.licenseClassifierCheckBox.isChecked(): | |
640 | license = tomlkit.table() | |
641 | license["text"] = self.licenseEdit.text() | |
642 | project["license"] = license | |
643 | else: | |
644 | classifiers.append( | |
645 | self.licenseClassifierComboBox.itemData( | |
646 | self.licenseClassifierComboBox.currentIndex())) | |
647 | ||
648 | if self.developmentStatusComboBox.currentIndex() != 0: | |
649 | classifiers.append(self.developmentStatusComboBox.currentData()) | |
650 | ||
651 | itm = self.classifiersList.topLevelItem(0) | |
652 | while itm: | |
653 | itm.setExpanded(True) | |
654 | if itm.checkState(0) == Qt.CheckState.Checked: | |
655 | classifiers.append(itm.data(0, Qt.ItemDataRole.UserRole)) | |
656 | itm = self.classifiersList.itemBelow(itm) | |
657 | ||
658 | # cleanup classifiers list - remove all invalid entries | |
659 | classifiers = [c for c in classifiers if bool(c)] | |
660 | if classifiers: | |
661 | classifiersArray = tomlkit.array() | |
662 | for classifier in classifiers: | |
663 | classifiersArray.add_line(classifier) | |
664 | classifiersArray.append(tomlkit.nl()) | |
665 | project["classifiers"] = classifiersArray | |
666 | ||
667 | if self.keywordsEdit.text(): | |
668 | keywords = tomlkit.array() | |
669 | for kw in self.keywordsEdit.text().split(): | |
670 | keywords.add_line(kw) | |
671 | keywords.append(tomlkit.nl()) | |
672 | project["keywords"] = keywords | |
673 | ||
674 | if self.pyVersionEdit.text(): | |
675 | project["requires-python"] = self.pyVersionEdit.text() | |
676 | ||
677 | if self.entryPointsList.topLevelItemCount(): | |
678 | entryPoints = { | |
679 | "console_scripts": {}, | |
680 | "gui_scripts": {}, | |
681 | } | |
682 | for row in range(self.entryPointsList.topLevelItemCount()): | |
683 | itm = self.entryPointsList.topLevelItem(row) | |
684 | entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)][ | |
685 | itm.text(1)] = itm.text(2) | |
686 | ||
687 | if entryPoints["console_scripts"]: | |
688 | scripts = tomlkit.table() | |
689 | for name, function in entryPoints["console_scripts"].items(): | |
690 | scripts[name] = function | |
691 | project["scripts"] = scripts | |
692 | ||
693 | if entryPoints["gui_scripts"]: | |
694 | guiScripts = tomlkit.table() | |
695 | for name, function in entryPoints["gui_scripts"].items(): | |
696 | guiScripts[name] = function | |
697 | project["gui-scripts"] = guiScripts | |
698 | ||
699 | # placeholder | |
700 | dependencies = tomlkit.array() | |
701 | dependencies.append(tomlkit.comment( | |
702 | "TODO: enter project dependencies " # __NO-TASK__ | |
703 | )) | |
704 | project["dependencies"] = dependencies | |
705 | ||
706 | doc["project"] = project | |
707 | ||
708 | setuptools = tomlkit.table() | |
709 | ||
710 | platforms = self.platformsEdit.toPlainText().splitlines() | |
711 | if platforms: | |
712 | platformsArray = tomlkit.array() | |
713 | for plt in platforms: | |
714 | platformsArray.add_line(plt) | |
715 | platformsArray.append(tomlkit.nl()) | |
716 | setuptools["platforms"] = platformsArray | |
717 | ||
718 | setuptools["include-package-data"] = self.includePackageDataCheckBox.isChecked() | |
719 | if self.includePackageDataCheckBox.isChecked(): | |
720 | # placeholder | |
721 | setuptools["package-data"] = tomlkit.table() | |
722 | setuptools["package-data"].add(tomlkit.comment( | |
723 | "TODO: enter package data patterns" # __NO-TASK__ | |
724 | )) | |
725 | ||
726 | if self.modulesList.count(): | |
727 | modulesArray = tomlkit.array() | |
728 | for row in range(self.modulesList.count()): | |
729 | modulesArray.add_line(self.modulesList.item(row).text()) | |
730 | modulesArray.append(tomlkit.nl()) | |
731 | setuptools["py-modules"] = modulesArray | |
732 | ||
733 | findspec = tomlkit.table() | |
734 | src = Utilities.fromNativeSeparators(self.sourceDirectoryPicker.text()) | |
735 | excludePatterns = [] | |
736 | for row in range(self.excludePatternList.count()): | |
737 | excludePatterns.append( | |
738 | self.excludePatternList.item(row).text()) | |
739 | if src: | |
740 | findspec["where"] = [ericApp().getObject("Project").getRelativePath(src)] | |
741 | if excludePatterns: | |
742 | excludePatternsArray = tomlkit.array() | |
743 | for pattern in excludePatterns: | |
744 | excludePatternsArray.add_line(pattern) | |
745 | excludePatternsArray.append(tomlkit.nl()) | |
746 | findspec["exclude"] = excludePatternsArray | |
747 | ||
748 | if bool(findspec): | |
749 | setuptools["packages"] = tomlkit.table(is_super_table=True) | |
750 | setuptools["packages"]["find"] = findspec | |
751 | ||
752 | doc["tool"] = tomlkit.table(is_super_table=True) | |
753 | doc["tool"]["setuptools"] = setuptools | |
754 | ||
755 | sourceCode = tomlkit.dumps(doc) | |
756 | return sourceCode | |
757 | ||
758 | def getCode(self, indLevel, indString): | |
759 | """ | |
760 | Public method to get the source code. | |
761 | ||
762 | @param indLevel indentation level | |
763 | @type int | |
764 | @param indString string used for indentation (space or tab) | |
765 | @type str | |
766 | @return generated code | |
767 | @rtype str | |
768 | """ | |
769 | if self.__category == "setup.py": | |
770 | return self.__getSetupPyCode(indLevel, indString) | |
771 | elif self.__category == "setup.cfg": | |
772 | return self.__getSetupCfgCode() | |
773 | elif self.__category == "pyproject.toml": | |
774 | return self.__getPyprojectCode() | |
775 | else: | |
776 | # should not happen, but play it safe | |
777 | return "" | |
778 | ||
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780 | def on_projectButton_clicked(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
782 | Private slot to populate some fields with data retrieved from the |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
783 | current project. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784 | """ |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
785 | project = ericApp().getObject("Project") |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787 | self.nameEdit.setText(project.getProjectName()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | try: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | self.versionEdit.setText(project.getProjectVersion()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | self.authorEdit.setText(project.getProjectAuthor()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | self.authorEmailEdit.setText(project.getProjectAuthorEmail()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | description = project.getProjectDescription() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793 | except AttributeError: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
794 | self.versionEdit.setText(project.pdata["VERSION"][0]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
795 | self.authorEdit.setText(project.pdata["AUTHOR"][0]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
796 | self.authorEmailEdit.setText(project.pdata["EMAIL"][0]) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
797 | description = project.pdata["DESCRIPTION"][0] |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
798 | |
7258
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
799 | summary = ( |
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
800 | description.split(".", 1)[0].replace("\r", "").replace("\n", "") + |
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
801 | "." |
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
802 | ) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
803 | self.summaryEdit.setText(summary) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
804 | self.descriptionEdit.setPlainText(description) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
805 | |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
806 | self.packageRootPicker.setText(project.getProjectPath()) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
807 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
808 | # prevent overwriting of entries by disabling the button |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
809 | self.projectButton.setEnabled(False) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
810 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
811 | def __getStartDir(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
812 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
813 | Private method to get the start directory for selection dialogs. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
814 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
815 | @return start directory |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
816 | @rtype str |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
817 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
818 | return (Preferences.getMultiProject("Workspace") or |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
819 | Utilities.getHomeDir()) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
820 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
821 | @pyqtSlot() |
9201 | 822 | def on_entryPointsList_itemSelectionChanged(self): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
823 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
824 | Private slot to handle a change of selected items of the |
9201 | 825 | entry points list. |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
826 | """ |
9201 | 827 | self.deleteEntryPointButton.setEnabled( |
828 | bool(self.entryPointsList.selectedItems())) | |
829 | self.editEntryPointButton.setEnabled( | |
830 | len(self.entryPointsList.selectedItems()) == 1) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
831 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
832 | @pyqtSlot() |
9201 | 833 | def on_deleteEntryPointButton_clicked(self): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
834 | """ |
9201 | 835 | Private slot to delete the selected entry point items. |
836 | """ | |
837 | for itm in self.entryPointsList.selectedItems(): | |
838 | self.entryPointsList.takeTopLevelItem(self.entryPointsList.row(itm)) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
839 | del itm |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
840 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
841 | @pyqtSlot() |
9201 | 842 | def on_addEntryPointButton_clicked(self): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
843 | """ |
9201 | 844 | Private slot to add an entry point to the list. |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
845 | """ |
9201 | 846 | project = ericApp().getObject("Project") |
847 | rootDir = ( | |
848 | project.getProjectPath() | |
849 | if project.isOpen() else | |
850 | "" | |
851 | ) | |
852 | dlg = AddEntryPointDialog(rootDir, parent=self) | |
853 | if dlg.exec() == QDialog.DialogCode.Accepted: | |
854 | epType, epCategory, name, script = dlg.getEntryPoint() | |
855 | itm = QTreeWidgetItem(self.entryPointsList, [epType, name, script]) | |
856 | itm.setData(0, Qt.ItemDataRole.UserRole, epCategory) | |
857 | ||
858 | @pyqtSlot() | |
859 | def on_editEntryPointButton_clicked(self): | |
860 | """ | |
861 | Private slot to edit the selected entry point. | |
862 | """ | |
863 | project = ericApp().getObject("Project") | |
864 | rootDir = ( | |
865 | project.getProjectPath() | |
866 | if project.isOpen() else | |
867 | "" | |
868 | ) | |
869 | itm = self.entryPointsList.selectedItems()[0] | |
870 | dlg = AddEntryPointDialog(rootDir, epType=itm.text(0), name=itm.text(1), | |
871 | script=itm.text(2), parent=self) | |
872 | if dlg.exec() == QDialog.DialogCode.Accepted: | |
873 | epType, epCategory, name, script = dlg.getEntryPoint() | |
874 | itm.setText(0, epType) | |
875 | itm.setText(1, name) | |
876 | itm.setText(2, script) | |
877 | itm.setData(0, Qt.ItemDataRole.UserRole, epCategory) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
878 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
879 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
880 | def on_modulesList_itemSelectionChanged(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
881 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
882 | Private slot to handle a change of selected items of the |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
883 | modules list. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
884 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
885 | self.deleteModuleButton.setEnabled( |
9201 | 886 | bool(self.modulesList.selectedItems())) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
887 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
888 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
889 | def on_deleteModuleButton_clicked(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
890 | """ |
9201 | 891 | Private slot to delete the selected module items. |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
892 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
893 | for itm in self.modulesList.selectedItems(): |
9201 | 894 | self.modulesList.takeItem(self.modulesList.row(itm)) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
895 | del itm |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
896 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
897 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
898 | def on_addModuleButton_clicked(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
899 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
900 | Private slot to add Python modules to the list. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
901 | """ |
8757
23b2fe1cd863
Corrected the Setup wizard dialog and changed it to use the EricPathPicker widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8501
diff
changeset
|
902 | startDir = self.packageRootPicker.text() or self.__getStartDir() |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
903 | modulesList = EricFileDialog.getOpenFileNames( |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
904 | self, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
905 | self.tr("Add Python Modules"), |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
906 | startDir, |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
907 | self.tr("Python Files (*.py)")) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
908 | for module in modulesList: |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
909 | module = module.replace( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
910 | Utilities.toNativeSeparators(startDir), "") |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
911 | if module.startswith(("\\", "/")): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
912 | module = module[1:] |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
913 | if module: |
9201 | 914 | QListWidgetItem( |
915 | str(pathlib.Path(module).with_suffix("")) | |
916 | .replace("\\", ".") | |
917 | .replace("/", "."), | |
918 | self.modulesList | |
919 | ) | |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
920 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
921 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
922 | def on_excludePatternList_itemSelectionChanged(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
923 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
924 | Private slot to handle a change of selected items of the |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
925 | exclude pattern list. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
926 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
927 | self.deleteExcludePatternButton.setEnabled( |
9201 | 928 | bool(self.excludePatternList.selectedItems())) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
929 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
930 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
931 | def on_deleteExcludePatternButton_clicked(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
932 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
933 | Private slot to delete the selected exclude pattern items. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
934 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
935 | for itm in self.excludePatternList.selectedItems(): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
936 | self.excludePatternList.takeItem( |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
937 | self.excludePatternList.row(itm)) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
938 | del itm |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
939 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
940 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
941 | def on_addExludePatternButton_clicked(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
942 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
943 | Private slot to add an exclude pattern to the list. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
944 | """ |
7258
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
945 | pattern = ( |
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
946 | self.excludePatternEdit.text().replace("\\", ".").replace("/", ".") |
aff39db4dacc
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7248
diff
changeset
|
947 | ) |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
948 | if not self.excludePatternList.findItems( |
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:
7923
diff
changeset
|
949 | pattern, |
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:
7923
diff
changeset
|
950 | Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive |
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:
7923
diff
changeset
|
951 | ): |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
952 | QListWidgetItem(pattern, self.excludePatternList) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
953 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
954 | @pyqtSlot(str) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
955 | def on_excludePatternEdit_textChanged(self, txt): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
956 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
957 | Private slot to handle a change of the exclude pattern text. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
958 | |
9175
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
959 | @param txt text of the line edit |
21e2be5f0b41
Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
960 | @type str |
6015
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
961 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
962 | self.addExludePatternButton.setEnabled(bool(txt)) |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
963 | |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
964 | @pyqtSlot() |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
965 | def on_excludePatternEdit_returnPressed(self): |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
966 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
967 | Private slot handling a press of the return button of the |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
968 | exclude pattern edit. |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
969 | """ |
26fc8e08f4ac
Added the setup.py wizard plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
970 | self.on_addExludePatternButton_clicked() |
9201 | 971 | |
972 | @pyqtSlot() | |
973 | def on_urlDeleteButton_clicked(self): | |
974 | """ | |
975 | Private slot to delete the selected URL items. | |
976 | """ | |
977 | for itm in self.projectUrlsList.selectedItems(): | |
978 | self.projectUrlsList.takeTopLevelItem(self.projectUrlsList.row(itm)) | |
979 | del itm | |
980 | ||
981 | @pyqtSlot() | |
982 | def on_urlAddButton_clicked(self): | |
983 | """ | |
984 | Private slot to add a project URL to the list. | |
985 | """ | |
986 | dlg = AddProjectUrlDialog(parent=self) | |
987 | if dlg.exec() == QDialog.DialogCode.Accepted: | |
988 | name, url = dlg.getUrl() | |
989 | QTreeWidgetItem(self.projectUrlsList, [name, url]) | |
990 | ||
991 | @pyqtSlot() | |
992 | def on_urlEditButton_clicked(self): | |
993 | """ | |
994 | Private slot to edit the selected project URL. | |
995 | """ | |
996 | itm = self.projectUrlsList.selectedItems()[0] | |
997 | dlg = AddProjectUrlDialog(name=itm.text(0), url=itm.text(1), parent=self) | |
998 | if dlg.exec() == QDialog.DialogCode.Accepted: | |
999 | name, url = dlg.getUrl() | |
1000 | itm.setText(0, name) | |
1001 | itm.setText(1, url) | |
1002 | ||
1003 | @pyqtSlot() | |
1004 | def on_projectUrlsList_itemSelectionChanged(self): | |
1005 | """ | |
1006 | Private slot to handle a change of selected items of the | |
1007 | project URLs list. | |
1008 | """ | |
1009 | self.urlDeleteButton.setEnabled(bool(self.projectUrlsList.selectedItems())) | |
1010 | self.urlEditButton.setEnabled(len(self.projectUrlsList.selectedItems()) == 1) |