13 from EricWidgets.EricApplication import ericApp |
13 from EricWidgets.EricApplication import ericApp |
14 |
14 |
15 from .Ui_PluginWizardDialog import Ui_PluginWizardDialog |
15 from .Ui_PluginWizardDialog import Ui_PluginWizardDialog |
16 |
16 |
17 from .Templates import ( |
17 from .Templates import ( |
18 mainTemplate, configTemplate0, configTemplate1, configTemplate2, |
18 mainTemplate, |
19 configTemplate3, onDemandTemplate, previewPixmapTemplate, |
19 configTemplate0, |
20 moduleSetupTemplate, exeDisplayDataTemplate, exeDisplayDataInfoTemplate, |
20 configTemplate1, |
21 exeDisplayDataListTemplate, apiFilesTemplate |
21 configTemplate2, |
|
22 configTemplate3, |
|
23 onDemandTemplate, |
|
24 previewPixmapTemplate, |
|
25 moduleSetupTemplate, |
|
26 exeDisplayDataTemplate, |
|
27 exeDisplayDataInfoTemplate, |
|
28 exeDisplayDataListTemplate, |
|
29 apiFilesTemplate, |
22 ) |
30 ) |
23 |
31 |
24 |
32 |
25 class PluginWizardDialog(QDialog, Ui_PluginWizardDialog): |
33 class PluginWizardDialog(QDialog, Ui_PluginWizardDialog): |
26 """ |
34 """ |
27 Class implementing the eric plug-in wizard dialog. |
35 Class implementing the eric plug-in wizard dialog. |
28 """ |
36 """ |
|
37 |
29 def __init__(self, parent=None): |
38 def __init__(self, parent=None): |
30 """ |
39 """ |
31 Constructor |
40 Constructor |
32 |
41 |
33 @param parent reference to the parent widget (QWidget) |
42 @param parent reference to the parent widget (QWidget) |
34 """ |
43 """ |
35 super().__init__(parent) |
44 super().__init__(parent) |
36 self.setupUi(self) |
45 self.setupUi(self) |
37 |
46 |
38 self.dataTabWidget.setCurrentIndex(0) |
47 self.dataTabWidget.setCurrentIndex(0) |
39 |
48 |
40 self.__okButton = self.buttonBox.button( |
49 self.__okButton = self.buttonBox.button(QDialogButtonBox.StandardButton.Ok) |
41 QDialogButtonBox.StandardButton.Ok) |
|
42 self.__okButton.setEnabled(False) |
50 self.__okButton.setEnabled(False) |
43 |
51 |
44 projectOpen = ericApp().getObject("Project").isOpen() |
52 projectOpen = ericApp().getObject("Project").isOpen() |
45 self.projectButton.setEnabled(projectOpen) |
53 self.projectButton.setEnabled(projectOpen) |
46 |
54 |
47 self.nameEdit.textChanged.connect(self.__enableOkButton) |
55 self.nameEdit.textChanged.connect(self.__enableOkButton) |
48 self.versionEdit.textChanged.connect(self.__enableOkButton) |
56 self.versionEdit.textChanged.connect(self.__enableOkButton) |
49 self.authorEdit.textChanged.connect(self.__enableOkButton) |
57 self.authorEdit.textChanged.connect(self.__enableOkButton) |
50 self.authorEmailEdit.textChanged.connect(self.__enableOkButton) |
58 self.authorEmailEdit.textChanged.connect(self.__enableOkButton) |
51 self.classNameEdit.textChanged.connect(self.__enableOkButton) |
59 self.classNameEdit.textChanged.connect(self.__enableOkButton) |
55 self.preferencesKeyEdit.textChanged.connect(self.__enableOkButton) |
63 self.preferencesKeyEdit.textChanged.connect(self.__enableOkButton) |
56 self.configurationGroup.toggled.connect(self.__enableOkButton) |
64 self.configurationGroup.toggled.connect(self.__enableOkButton) |
57 self.autoActivateCheckBox.toggled.connect(self.__enableOkButton) |
65 self.autoActivateCheckBox.toggled.connect(self.__enableOkButton) |
58 self.pluginTypeCombo.currentIndexChanged.connect(self.__enableOkButton) |
66 self.pluginTypeCombo.currentIndexChanged.connect(self.__enableOkButton) |
59 self.pluginTypeNameEdit.textChanged.connect(self.__enableOkButton) |
67 self.pluginTypeNameEdit.textChanged.connect(self.__enableOkButton) |
60 |
68 |
61 self.pluginTypeCombo.addItems(["", "viewmanager", "version_control"]) |
69 self.pluginTypeCombo.addItems(["", "viewmanager", "version_control"]) |
62 |
70 |
63 def __enableOkButton(self): |
71 def __enableOkButton(self): |
64 """ |
72 """ |
65 Private slot to set the state of the OK button. |
73 Private slot to set the state of the OK button. |
66 """ |
74 """ |
67 enable = ( |
75 enable = ( |
68 bool(self.nameEdit.text()) and |
76 bool(self.nameEdit.text()) |
69 bool(self.versionEdit.text()) and |
77 and bool(self.versionEdit.text()) |
70 bool(self.authorEdit.text()) and |
78 and bool(self.authorEdit.text()) |
71 bool(self.authorEmailEdit.text()) and |
79 and bool(self.authorEmailEdit.text()) |
72 bool(self.classNameEdit.text()) and |
80 and bool(self.classNameEdit.text()) |
73 bool(self.packageNameEdit.text()) and |
81 and bool(self.packageNameEdit.text()) |
74 bool(self.shortDescriptionEdit.text()) and |
82 and bool(self.shortDescriptionEdit.text()) |
75 bool(self.longDescriptionEdit.toPlainText()) |
83 and bool(self.longDescriptionEdit.toPlainText()) |
76 ) |
84 ) |
77 if self.configurationGroup.isChecked(): |
85 if self.configurationGroup.isChecked(): |
78 enable = enable and bool(self.preferencesKeyEdit.text()) |
86 enable = enable and bool(self.preferencesKeyEdit.text()) |
79 if not self.autoActivateCheckBox.isChecked(): |
87 if not self.autoActivateCheckBox.isChecked(): |
80 enable = (enable and |
88 enable = ( |
81 bool(self.pluginTypeCombo.currentText()) and |
89 enable |
82 bool(self.pluginTypeNameEdit.text()) |
90 and bool(self.pluginTypeCombo.currentText()) |
83 ) |
91 and bool(self.pluginTypeNameEdit.text()) |
84 |
92 ) |
|
93 |
85 self.__okButton.setEnabled(enable) |
94 self.__okButton.setEnabled(enable) |
86 |
95 |
87 @pyqtSlot() |
96 @pyqtSlot() |
88 def on_projectButton_clicked(self): |
97 def on_projectButton_clicked(self): |
89 """ |
98 """ |
90 Private slot to populate some fields with data retrieved from the |
99 Private slot to populate some fields with data retrieved from the |
91 current project. |
100 current project. |
92 """ |
101 """ |
93 project = ericApp().getObject("Project") |
102 project = ericApp().getObject("Project") |
94 |
103 |
95 try: |
104 try: |
96 self.versionEdit.setText(project.getProjectVersion()) |
105 self.versionEdit.setText(project.getProjectVersion()) |
97 self.authorEdit.setText(project.getProjectAuthor()) |
106 self.authorEdit.setText(project.getProjectAuthor()) |
98 self.authorEmailEdit.setText(project.getProjectAuthorEmail()) |
107 self.authorEmailEdit.setText(project.getProjectAuthorEmail()) |
99 description = project.getProjectDescription() |
108 description = project.getProjectDescription() |
100 except AttributeError: |
109 except AttributeError: |
101 self.versionEdit.setText(project.pdata["VERSION"][0]) |
110 self.versionEdit.setText(project.pdata["VERSION"][0]) |
102 self.authorEdit.setText(project.pdata["AUTHOR"][0]) |
111 self.authorEdit.setText(project.pdata["AUTHOR"][0]) |
103 self.authorEmailEdit.setText(project.pdata["EMAIL"][0]) |
112 self.authorEmailEdit.setText(project.pdata["EMAIL"][0]) |
104 description = project.pdata["DESCRIPTION"][0] |
113 description = project.pdata["DESCRIPTION"][0] |
105 |
114 |
106 # summary is max. 55 characters long |
115 # summary is max. 55 characters long |
107 summary = (description.split(".", 1)[0] |
116 summary = ( |
108 .replace("\r", "").replace("\n", "") + ".")[:55] |
117 description.split(".", 1)[0].replace("\r", "").replace("\n", "") + "." |
|
118 )[:55] |
109 self.shortDescriptionEdit.setText(summary) |
119 self.shortDescriptionEdit.setText(summary) |
110 self.longDescriptionEdit.setPlainText(description) |
120 self.longDescriptionEdit.setPlainText(description) |
111 |
121 |
112 # prevent overwriting of entries by disabling the button |
122 # prevent overwriting of entries by disabling the button |
113 self.projectButton.setEnabled(False) |
123 self.projectButton.setEnabled(False) |
114 |
124 |
115 def getCode(self): |
125 def getCode(self): |
116 """ |
126 """ |
117 Public method to get the source code. |
127 Public method to get the source code. |
118 |
128 |
119 @return generated code (string) |
129 @return generated code (string) |
120 """ |
130 """ |
121 templateData = { |
131 templateData = { |
122 "year": QDate.currentDate().year(), |
132 "year": QDate.currentDate().year(), |
123 "author": self.authorEdit.text(), |
133 "author": self.authorEdit.text(), |
130 "packageName": self.packageNameEdit.text(), |
140 "packageName": self.packageNameEdit.text(), |
131 "shortDescription": self.shortDescriptionEdit.text(), |
141 "shortDescription": self.shortDescriptionEdit.text(), |
132 "longDescription": self.longDescriptionEdit.toPlainText(), |
142 "longDescription": self.longDescriptionEdit.toPlainText(), |
133 "needsRestart": self.restartCheckBox.isChecked(), |
143 "needsRestart": self.restartCheckBox.isChecked(), |
134 } |
144 } |
135 |
145 |
136 if self.configurationGroup.isChecked(): |
146 if self.configurationGroup.isChecked(): |
137 templateData["config0"] = configTemplate0 |
147 templateData["config0"] = configTemplate0 |
138 templateData["config1"] = configTemplate1.format( |
148 templateData["config1"] = configTemplate1.format( |
139 className=self.classNameEdit.text()) |
149 className=self.classNameEdit.text() |
|
150 ) |
140 templateData["config2"] = configTemplate2.format( |
151 templateData["config2"] = configTemplate2.format( |
141 preferencesKey=self.preferencesKeyEdit.text()) |
152 preferencesKey=self.preferencesKeyEdit.text() |
|
153 ) |
142 templateData["config3"] = configTemplate3 |
154 templateData["config3"] = configTemplate3 |
143 else: |
155 else: |
144 templateData["config0"] = "" |
156 templateData["config0"] = "" |
145 templateData["config1"] = "" |
157 templateData["config1"] = "" |
146 templateData["config2"] = "" |
158 templateData["config2"] = "" |
147 templateData["config3"] = "" |
159 templateData["config3"] = "" |
148 |
160 |
149 if self.autoActivateCheckBox.isChecked(): |
161 if self.autoActivateCheckBox.isChecked(): |
150 templateData["onDemand"] = "" |
162 templateData["onDemand"] = "" |
151 else: |
163 else: |
152 templateData["onDemand"] = onDemandTemplate.format( |
164 templateData["onDemand"] = onDemandTemplate.format( |
153 pluginType=self.pluginTypeCombo.currentText(), |
165 pluginType=self.pluginTypeCombo.currentText(), |
154 pluginTypename=self.pluginTypeNameEdit.text() |
166 pluginTypename=self.pluginTypeNameEdit.text(), |
155 ) |
167 ) |
156 |
168 |
157 if self.pixmapCheckBox.isChecked(): |
169 if self.pixmapCheckBox.isChecked(): |
158 templateData["preview"] = previewPixmapTemplate |
170 templateData["preview"] = previewPixmapTemplate |
159 else: |
171 else: |
160 templateData["preview"] = "" |
172 templateData["preview"] = "" |
161 |
173 |
162 if self.moduleSetupCheckBox.isChecked(): |
174 if self.moduleSetupCheckBox.isChecked(): |
163 templateData["modulesetup"] = moduleSetupTemplate |
175 templateData["modulesetup"] = moduleSetupTemplate |
164 else: |
176 else: |
165 templateData["modulesetup"] = "" |
177 templateData["modulesetup"] = "" |
166 |
178 |
167 templateData["exeData"] = "" |
179 templateData["exeData"] = "" |
168 if self.exeGroup.isChecked(): |
180 if self.exeGroup.isChecked(): |
169 if self.exeRadioButton.isChecked(): |
181 if self.exeRadioButton.isChecked(): |
170 templateData["exeData"] = exeDisplayDataTemplate |
182 templateData["exeData"] = exeDisplayDataTemplate |
171 elif self.exeInfoRadioButton.isChecked(): |
183 elif self.exeInfoRadioButton.isChecked(): |
172 templateData["exeData"] = exeDisplayDataInfoTemplate |
184 templateData["exeData"] = exeDisplayDataInfoTemplate |
173 elif self.exeListRadioButton.isChecked(): |
185 elif self.exeListRadioButton.isChecked(): |
174 templateData["exeData"] = exeDisplayDataListTemplate |
186 templateData["exeData"] = exeDisplayDataListTemplate |
175 |
187 |
176 if self.apiFilesCheckBox.isChecked(): |
188 if self.apiFilesCheckBox.isChecked(): |
177 templateData["apiFiles"] = apiFilesTemplate |
189 templateData["apiFiles"] = apiFilesTemplate |
178 else: |
190 else: |
179 templateData["apiFiles"] = "" |
191 templateData["apiFiles"] = "" |
180 |
192 |
181 return mainTemplate.format(**templateData) |
193 return mainTemplate.format(**templateData) |
182 |
194 |
183 def packageName(self): |
195 def packageName(self): |
184 """ |
196 """ |
185 Public method to retrieve the plug-in package name. |
197 Public method to retrieve the plug-in package name. |
186 |
198 |
187 @return plug-in package name (string) |
199 @return plug-in package name (string) |
188 """ |
200 """ |
189 if self.createPackageCheckBox.isChecked(): |
201 if self.createPackageCheckBox.isChecked(): |
190 return self.packageNameEdit.text() |
202 return self.packageNameEdit.text() |
191 else: |
203 else: |
192 return "" |
204 return "" |
193 |
205 |
194 @pyqtSlot(str) |
206 @pyqtSlot(str) |
195 def on_pluginTypeCombo_currentTextChanged(self, txt): |
207 def on_pluginTypeCombo_currentTextChanged(self, txt): |
196 """ |
208 """ |
197 Private slot to react upon the selection of a plug-in type. |
209 Private slot to react upon the selection of a plug-in type. |
198 |
210 |
199 @param txt selected plug-in type (string) |
211 @param txt selected plug-in type (string) |
200 """ |
212 """ |
201 self.pixmapCheckBox.setChecked(txt == "viewmanager") |
213 self.pixmapCheckBox.setChecked(txt == "viewmanager") |