Project/ProjectFormsBrowser.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3178
f25fc1364c88
parent 3190
a9a94491c4fd
child 3515
1b8381afe38f
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
7 Module implementing a class used to display the forms part of the project. 7 Module implementing a class used to display the forms part of the project.
8 """ 8 """
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 try: 11 try:
12 str = unicode # __IGNORE_WARNING__ 12 str = unicode
13 except (NameError): 13 except NameError:
14 pass 14 pass
15 15
16 import os 16 import os
17 import sys 17 import sys
18 import shutil 18 import shutil
70 parent) 70 parent)
71 71
72 self.selectedItemsFilter = \ 72 self.selectedItemsFilter = \
73 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] 73 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem]
74 74
75 self.setWindowTitle(self.trUtf8('Forms')) 75 self.setWindowTitle(self.tr('Forms'))
76 76
77 self.setWhatsThis(self.trUtf8( 77 self.setWhatsThis(self.tr(
78 """<b>Project Forms Browser</b>""" 78 """<b>Project Forms Browser</b>"""
79 """<p>This allows to easily see all forms contained in the""" 79 """<p>This allows to easily see all forms contained in the"""
80 """ current project. Several actions can be executed via the""" 80 """ current project. Several actions can be executed via the"""
81 """ context menu.</p>""" 81 """ context menu.</p>"""
82 )) 82 ))
91 'qdockwidget4.tmpl', 'qframe4.tmpl', 'qgroupbox4.tmpl', 91 'qdockwidget4.tmpl', 'qframe4.tmpl', 'qgroupbox4.tmpl',
92 'qscrollarea4.tmpl', 'qmdiarea4.tmpl', 'qtabwidget4.tmpl', 92 'qscrollarea4.tmpl', 'qmdiarea4.tmpl', 'qtabwidget4.tmpl',
93 'qtoolbox4.tmpl', 'qstackedwidget4.tmpl' 93 'qtoolbox4.tmpl', 'qstackedwidget4.tmpl'
94 ] 94 ]
95 self.templateTypes4 = [ 95 self.templateTypes4 = [
96 self.trUtf8("Dialog"), 96 self.tr("Dialog"),
97 self.trUtf8("Widget"), 97 self.tr("Widget"),
98 self.trUtf8("Main Window"), 98 self.tr("Main Window"),
99 self.trUtf8("Dialog with Buttonbox (Bottom)"), 99 self.tr("Dialog with Buttonbox (Bottom)"),
100 self.trUtf8("Dialog with Buttonbox (Right)"), 100 self.tr("Dialog with Buttonbox (Right)"),
101 self.trUtf8("Dialog with Buttons (Bottom)"), 101 self.tr("Dialog with Buttons (Bottom)"),
102 self.trUtf8("Dialog with Buttons (Bottom-Center)"), 102 self.tr("Dialog with Buttons (Bottom-Center)"),
103 self.trUtf8("Dialog with Buttons (Right)"), 103 self.tr("Dialog with Buttons (Right)"),
104 '', 104 '',
105 self.trUtf8("QWizard"), 105 self.tr("QWizard"),
106 self.trUtf8("QWizardPage"), 106 self.tr("QWizardPage"),
107 self.trUtf8("QDockWidget"), 107 self.tr("QDockWidget"),
108 self.trUtf8("QFrame"), 108 self.tr("QFrame"),
109 self.trUtf8("QGroupBox"), 109 self.tr("QGroupBox"),
110 self.trUtf8("QScrollArea"), 110 self.tr("QScrollArea"),
111 self.trUtf8("QMdiArea"), 111 self.tr("QMdiArea"),
112 self.trUtf8("QTabWidget"), 112 self.tr("QTabWidget"),
113 self.trUtf8("QToolBox"), 113 self.tr("QToolBox"),
114 self.trUtf8("QStackedWidget"), 114 self.tr("QStackedWidget"),
115 ] 115 ]
116 116
117 self.compileProc = None 117 self.compileProc = None
118 118
119 def _createPopupMenus(self): 119 def _createPopupMenus(self):
129 129
130 self.menu = QMenu(self) 130 self.menu = QMenu(self)
131 if self.project.getProjectType() in \ 131 if self.project.getProjectType() in \
132 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 132 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
133 self.menu.addAction( 133 self.menu.addAction(
134 self.trUtf8('Compile form'), self.__compileForm) 134 self.tr('Compile form'), self.__compileForm)
135 self.menu.addAction( 135 self.menu.addAction(
136 self.trUtf8('Compile all forms'), 136 self.tr('Compile all forms'),
137 self.__compileAllForms) 137 self.__compileAllForms)
138 self.menu.addAction( 138 self.menu.addAction(
139 self.trUtf8('Generate Dialog Code...'), 139 self.tr('Generate Dialog Code...'),
140 self.__generateDialogCode) 140 self.__generateDialogCode)
141 self.menu.addSeparator() 141 self.menu.addSeparator()
142 self.menu.addAction( 142 self.menu.addAction(
143 self.trUtf8('Open in Qt-Designer'), self.__openFile) 143 self.tr('Open in Qt-Designer'), self.__openFile)
144 self.menu.addAction( 144 self.menu.addAction(
145 self.trUtf8('Open in Editor'), self.__openFileInEditor) 145 self.tr('Open in Editor'), self.__openFileInEditor)
146 self.menu.addSeparator() 146 self.menu.addSeparator()
147 self.menu.addAction(self.trUtf8('Preview form'), self.__UIPreview) 147 self.menu.addAction(self.tr('Preview form'), self.__UIPreview)
148 self.menu.addAction( 148 self.menu.addAction(
149 self.trUtf8('Preview translations'), self.__TRPreview) 149 self.tr('Preview translations'), self.__TRPreview)
150 else: 150 else:
151 if self.hooks["compileForm"] is not None: 151 if self.hooks["compileForm"] is not None:
152 self.menu.addAction( 152 self.menu.addAction(
153 self.hooksMenuEntries.get( 153 self.hooksMenuEntries.get(
154 "compileForm", 154 "compileForm",
155 self.trUtf8('Compile form')), self.__compileForm) 155 self.tr('Compile form')), self.__compileForm)
156 if self.hooks["compileAllForms"] is not None: 156 if self.hooks["compileAllForms"] is not None:
157 self.menu.addAction( 157 self.menu.addAction(
158 self.hooksMenuEntries.get( 158 self.hooksMenuEntries.get(
159 "compileAllForms", 159 "compileAllForms",
160 self.trUtf8('Compile all forms')), 160 self.tr('Compile all forms')),
161 self.__compileAllForms) 161 self.__compileAllForms)
162 if self.hooks["generateDialogCode"] is not None: 162 if self.hooks["generateDialogCode"] is not None:
163 self.menu.addAction( 163 self.menu.addAction(
164 self.hooksMenuEntries.get( 164 self.hooksMenuEntries.get(
165 "generateDialogCode", 165 "generateDialogCode",
166 self.trUtf8('Generate Dialog Code...')), 166 self.tr('Generate Dialog Code...')),
167 self.__generateDialogCode) 167 self.__generateDialogCode)
168 if self.hooks["compileForm"] is not None or \ 168 if self.hooks["compileForm"] is not None or \
169 self.hooks["compileAllForms"] is not None or \ 169 self.hooks["compileAllForms"] is not None or \
170 self.hooks["generateDialogCode"] is not None: 170 self.hooks["generateDialogCode"] is not None:
171 self.menu.addSeparator() 171 self.menu.addSeparator()
172 if self.hooks["open"] is not None: 172 if self.hooks["open"] is not None:
173 self.menu.addAction( 173 self.menu.addAction(
174 self.hooksMenuEntries.get("open", self.trUtf8('Open')), 174 self.hooksMenuEntries.get("open", self.tr('Open')),
175 self.__openFile) 175 self.__openFile)
176 self.menu.addAction(self.trUtf8('Open'), self.__openFileInEditor) 176 self.menu.addAction(self.tr('Open'), self.__openFileInEditor)
177 self.menu.addSeparator() 177 self.menu.addSeparator()
178 act = self.menu.addAction(self.trUtf8('Rename file'), self._renameFile) 178 act = self.menu.addAction(self.tr('Rename file'), self._renameFile)
179 self.menuActions.append(act) 179 self.menuActions.append(act)
180 act = self.menu.addAction( 180 act = self.menu.addAction(
181 self.trUtf8('Remove from project'), self._removeFile) 181 self.tr('Remove from project'), self._removeFile)
182 self.menuActions.append(act) 182 self.menuActions.append(act)
183 act = self.menu.addAction(self.trUtf8('Delete'), self.__deleteFile) 183 act = self.menu.addAction(self.tr('Delete'), self.__deleteFile)
184 self.menuActions.append(act) 184 self.menuActions.append(act)
185 self.menu.addSeparator() 185 self.menu.addSeparator()
186 if self.project.getProjectType() in \ 186 if self.project.getProjectType() in \
187 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 187 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
188 self.menu.addAction(self.trUtf8('New form...'), self.__newForm) 188 self.menu.addAction(self.tr('New form...'), self.__newForm)
189 else: 189 else:
190 if self.hooks["newForm"] is not None: 190 if self.hooks["newForm"] is not None:
191 self.menu.addAction( 191 self.menu.addAction(
192 self.hooksMenuEntries.get( 192 self.hooksMenuEntries.get(
193 "newForm", self.trUtf8('New form...')), self.__newForm) 193 "newForm", self.tr('New form...')), self.__newForm)
194 self.menu.addAction(self.trUtf8('Add forms...'), self.__addFormFiles) 194 self.menu.addAction(self.tr('Add forms...'), self.__addFormFiles)
195 self.menu.addAction( 195 self.menu.addAction(
196 self.trUtf8('Add forms directory...'), self.__addFormsDirectory) 196 self.tr('Add forms directory...'), self.__addFormsDirectory)
197 self.menu.addSeparator() 197 self.menu.addSeparator()
198 self.menu.addAction( 198 self.menu.addAction(
199 self.trUtf8('Copy Path to Clipboard'), self._copyToClipboard) 199 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
200 self.menu.addSeparator() 200 self.menu.addSeparator()
201 self.menu.addAction( 201 self.menu.addAction(
202 self.trUtf8('Expand all directories'), self._expandAllDirs) 202 self.tr('Expand all directories'), self._expandAllDirs)
203 self.menu.addAction( 203 self.menu.addAction(
204 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 204 self.tr('Collapse all directories'), self._collapseAllDirs)
205 self.menu.addSeparator() 205 self.menu.addSeparator()
206 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 206 self.menu.addAction(self.tr('Configure...'), self._configure)
207 207
208 self.backMenu = QMenu(self) 208 self.backMenu = QMenu(self)
209 if self.project.getProjectType() in \ 209 if self.project.getProjectType() in \
210 ["Qt4", "PyQt5", "E4Plugin", "PySide"] or \ 210 ["Qt4", "PyQt5", "E4Plugin", "PySide"] or \
211 self.hooks["compileAllForms"] is not None: 211 self.hooks["compileAllForms"] is not None:
212 self.backMenu.addAction( 212 self.backMenu.addAction(
213 self.trUtf8('Compile all forms'), self.__compileAllForms) 213 self.tr('Compile all forms'), self.__compileAllForms)
214 self.backMenu.addSeparator() 214 self.backMenu.addSeparator()
215 self.backMenu.addAction(self.trUtf8('New form...'), self.__newForm) 215 self.backMenu.addAction(self.tr('New form...'), self.__newForm)
216 else: 216 else:
217 if self.hooks["newForm"] is not None: 217 if self.hooks["newForm"] is not None:
218 self.backMenu.addAction( 218 self.backMenu.addAction(
219 self.hooksMenuEntries.get( 219 self.hooksMenuEntries.get(
220 "newForm", self.trUtf8('New form...')), self.__newForm) 220 "newForm", self.tr('New form...')), self.__newForm)
221 self.backMenu.addAction( 221 self.backMenu.addAction(
222 self.trUtf8('Add forms...'), self.project.addUiFiles) 222 self.tr('Add forms...'), self.project.addUiFiles)
223 self.backMenu.addAction( 223 self.backMenu.addAction(
224 self.trUtf8('Add forms directory...'), self.project.addUiDir) 224 self.tr('Add forms directory...'), self.project.addUiDir)
225 self.backMenu.addSeparator() 225 self.backMenu.addSeparator()
226 self.backMenu.addAction( 226 self.backMenu.addAction(
227 self.trUtf8('Expand all directories'), self._expandAllDirs) 227 self.tr('Expand all directories'), self._expandAllDirs)
228 self.backMenu.addAction( 228 self.backMenu.addAction(
229 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 229 self.tr('Collapse all directories'), self._collapseAllDirs)
230 self.backMenu.addSeparator() 230 self.backMenu.addSeparator()
231 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 231 self.backMenu.addAction(self.tr('Configure...'), self._configure)
232 self.backMenu.setEnabled(False) 232 self.backMenu.setEnabled(False)
233 233
234 # create the menu for multiple selected files 234 # create the menu for multiple selected files
235 self.multiMenu = QMenu(self) 235 self.multiMenu = QMenu(self)
236 if self.project.getProjectType() in \ 236 if self.project.getProjectType() in \
237 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 237 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
238 act = self.multiMenu.addAction( 238 act = self.multiMenu.addAction(
239 self.trUtf8('Compile forms'), self.__compileSelectedForms) 239 self.tr('Compile forms'), self.__compileSelectedForms)
240 self.multiMenu.addSeparator() 240 self.multiMenu.addSeparator()
241 self.multiMenu.addAction( 241 self.multiMenu.addAction(
242 self.trUtf8('Open in Qt-Designer'), self.__openFile) 242 self.tr('Open in Qt-Designer'), self.__openFile)
243 self.multiMenu.addAction( 243 self.multiMenu.addAction(
244 self.trUtf8('Open in Editor'), self.__openFileInEditor) 244 self.tr('Open in Editor'), self.__openFileInEditor)
245 self.multiMenu.addSeparator() 245 self.multiMenu.addSeparator()
246 self.multiMenu.addAction( 246 self.multiMenu.addAction(
247 self.trUtf8('Preview translations'), self.__TRPreview) 247 self.tr('Preview translations'), self.__TRPreview)
248 else: 248 else:
249 if self.hooks["compileSelectedForms"] is not None: 249 if self.hooks["compileSelectedForms"] is not None:
250 act = self.multiMenu.addAction( 250 act = self.multiMenu.addAction(
251 self.hooksMenuEntries.get( 251 self.hooksMenuEntries.get(
252 "compileSelectedForms", 252 "compileSelectedForms",
253 self.trUtf8('Compile forms')), 253 self.tr('Compile forms')),
254 self.__compileSelectedForms) 254 self.__compileSelectedForms)
255 self.multiMenu.addSeparator() 255 self.multiMenu.addSeparator()
256 if self.hooks["open"] is not None: 256 if self.hooks["open"] is not None:
257 self.multiMenu.addAction( 257 self.multiMenu.addAction(
258 self.hooksMenuEntries.get("open", self.trUtf8('Open')), 258 self.hooksMenuEntries.get("open", self.tr('Open')),
259 self.__openFile) 259 self.__openFile)
260 self.multiMenu.addAction( 260 self.multiMenu.addAction(
261 self.trUtf8('Open'), self.__openFileInEditor) 261 self.tr('Open'), self.__openFileInEditor)
262 self.multiMenu.addSeparator() 262 self.multiMenu.addSeparator()
263 act = self.multiMenu.addAction( 263 act = self.multiMenu.addAction(
264 self.trUtf8('Remove from project'), self._removeFile) 264 self.tr('Remove from project'), self._removeFile)
265 self.multiMenuActions.append(act) 265 self.multiMenuActions.append(act)
266 act = self.multiMenu.addAction( 266 act = self.multiMenu.addAction(
267 self.trUtf8('Delete'), self.__deleteFile) 267 self.tr('Delete'), self.__deleteFile)
268 self.multiMenuActions.append(act) 268 self.multiMenuActions.append(act)
269 self.multiMenu.addSeparator() 269 self.multiMenu.addSeparator()
270 self.multiMenu.addAction( 270 self.multiMenu.addAction(
271 self.trUtf8('Expand all directories'), self._expandAllDirs) 271 self.tr('Expand all directories'), self._expandAllDirs)
272 self.multiMenu.addAction( 272 self.multiMenu.addAction(
273 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 273 self.tr('Collapse all directories'), self._collapseAllDirs)
274 self.multiMenu.addSeparator() 274 self.multiMenu.addSeparator()
275 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 275 self.multiMenu.addAction(self.tr('Configure...'), self._configure)
276 276
277 self.dirMenu = QMenu(self) 277 self.dirMenu = QMenu(self)
278 if self.project.getProjectType() in \ 278 if self.project.getProjectType() in \
279 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 279 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
280 self.dirMenu.addAction( 280 self.dirMenu.addAction(
281 self.trUtf8('Compile all forms'), self.__compileAllForms) 281 self.tr('Compile all forms'), self.__compileAllForms)
282 self.dirMenu.addSeparator() 282 self.dirMenu.addSeparator()
283 else: 283 else:
284 if self.hooks["compileAllForms"] is not None: 284 if self.hooks["compileAllForms"] is not None:
285 self.dirMenu.addAction( 285 self.dirMenu.addAction(
286 self.hooksMenuEntries.get( 286 self.hooksMenuEntries.get(
287 "compileAllForms", 287 "compileAllForms",
288 self.trUtf8('Compile all forms')), 288 self.tr('Compile all forms')),
289 self.__compileAllForms) 289 self.__compileAllForms)
290 self.dirMenu.addSeparator() 290 self.dirMenu.addSeparator()
291 act = self.dirMenu.addAction( 291 act = self.dirMenu.addAction(
292 self.trUtf8('Remove from project'), self._removeDir) 292 self.tr('Remove from project'), self._removeDir)
293 self.dirMenuActions.append(act) 293 self.dirMenuActions.append(act)
294 act = self.dirMenu.addAction( 294 act = self.dirMenu.addAction(
295 self.trUtf8('Delete'), self._deleteDirectory) 295 self.tr('Delete'), self._deleteDirectory)
296 self.dirMenuActions.append(act) 296 self.dirMenuActions.append(act)
297 self.dirMenu.addSeparator() 297 self.dirMenu.addSeparator()
298 if self.project.getProjectType() in \ 298 if self.project.getProjectType() in \
299 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 299 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
300 self.dirMenu.addAction(self.trUtf8('New form...'), self.__newForm) 300 self.dirMenu.addAction(self.tr('New form...'), self.__newForm)
301 else: 301 else:
302 if self.hooks["newForm"] is not None: 302 if self.hooks["newForm"] is not None:
303 self.dirMenu.addAction( 303 self.dirMenu.addAction(
304 self.hooksMenuEntries.get( 304 self.hooksMenuEntries.get(
305 "newForm", 305 "newForm",
306 self.trUtf8('New form...')), self.__newForm) 306 self.tr('New form...')), self.__newForm)
307 self.dirMenu.addAction( 307 self.dirMenu.addAction(
308 self.trUtf8('Add forms...'), self.__addFormFiles) 308 self.tr('Add forms...'), self.__addFormFiles)
309 self.dirMenu.addAction( 309 self.dirMenu.addAction(
310 self.trUtf8('Add forms directory...'), self.__addFormsDirectory) 310 self.tr('Add forms directory...'), self.__addFormsDirectory)
311 self.dirMenu.addSeparator() 311 self.dirMenu.addSeparator()
312 self.dirMenu.addAction( 312 self.dirMenu.addAction(
313 self.trUtf8('Copy Path to Clipboard'), self._copyToClipboard) 313 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
314 self.dirMenu.addSeparator() 314 self.dirMenu.addSeparator()
315 self.dirMenu.addAction( 315 self.dirMenu.addAction(
316 self.trUtf8('Expand all directories'), self._expandAllDirs) 316 self.tr('Expand all directories'), self._expandAllDirs)
317 self.dirMenu.addAction( 317 self.dirMenu.addAction(
318 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 318 self.tr('Collapse all directories'), self._collapseAllDirs)
319 self.dirMenu.addSeparator() 319 self.dirMenu.addSeparator()
320 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 320 self.dirMenu.addAction(self.tr('Configure...'), self._configure)
321 321
322 self.dirMultiMenu = QMenu(self) 322 self.dirMultiMenu = QMenu(self)
323 if self.project.getProjectType() in \ 323 if self.project.getProjectType() in \
324 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 324 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
325 self.dirMultiMenu.addAction( 325 self.dirMultiMenu.addAction(
326 self.trUtf8('Compile all forms'), self.__compileAllForms) 326 self.tr('Compile all forms'), self.__compileAllForms)
327 self.dirMultiMenu.addSeparator() 327 self.dirMultiMenu.addSeparator()
328 else: 328 else:
329 if self.hooks["compileAllForms"] is not None: 329 if self.hooks["compileAllForms"] is not None:
330 self.dirMultiMenu.addAction( 330 self.dirMultiMenu.addAction(
331 self.hooksMenuEntries.get( 331 self.hooksMenuEntries.get(
332 "compileAllForms", 332 "compileAllForms",
333 self.trUtf8('Compile all forms')), 333 self.tr('Compile all forms')),
334 self.__compileAllForms) 334 self.__compileAllForms)
335 self.dirMultiMenu.addSeparator() 335 self.dirMultiMenu.addSeparator()
336 self.dirMultiMenu.addAction( 336 self.dirMultiMenu.addAction(
337 self.trUtf8('Add forms...'), self.project.addUiFiles) 337 self.tr('Add forms...'), self.project.addUiFiles)
338 self.dirMultiMenu.addAction( 338 self.dirMultiMenu.addAction(
339 self.trUtf8('Add forms directory...'), self.project.addUiDir) 339 self.tr('Add forms directory...'), self.project.addUiDir)
340 self.dirMultiMenu.addSeparator() 340 self.dirMultiMenu.addSeparator()
341 self.dirMultiMenu.addAction( 341 self.dirMultiMenu.addAction(
342 self.trUtf8('Expand all directories'), self._expandAllDirs) 342 self.tr('Expand all directories'), self._expandAllDirs)
343 self.dirMultiMenu.addAction( 343 self.dirMultiMenu.addAction(
344 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 344 self.tr('Collapse all directories'), self._collapseAllDirs)
345 self.dirMultiMenu.addSeparator() 345 self.dirMultiMenu.addSeparator()
346 self.dirMultiMenu.addAction( 346 self.dirMultiMenu.addAction(
347 self.trUtf8('Configure...'), self._configure) 347 self.tr('Configure...'), self._configure)
348 348
349 self.menu.aboutToShow.connect(self.__showContextMenu) 349 self.menu.aboutToShow.connect(self.__showContextMenu)
350 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 350 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
351 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 351 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
352 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 352 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
549 549
550 @param path full directory path for the new form file (string) 550 @param path full directory path for the new form file (string)
551 """ 551 """
552 selectedForm, ok = QInputDialog.getItem( 552 selectedForm, ok = QInputDialog.getItem(
553 None, 553 None,
554 self.trUtf8("New Form"), 554 self.tr("New Form"),
555 self.trUtf8("Select a form type:"), 555 self.tr("Select a form type:"),
556 self.templateTypes4, 556 self.templateTypes4,
557 0, False) 557 0, False)
558 if not ok or not selectedForm: 558 if not ok or not selectedForm:
559 # user pressed cancel 559 # user pressed cancel
560 return 560 return
563 templateFile = os.path.join( 563 templateFile = os.path.join(
564 getConfig('ericTemplatesDir'), self.templates4[templateIndex]) 564 getConfig('ericTemplatesDir'), self.templates4[templateIndex])
565 565
566 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( 566 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
567 self, 567 self,
568 self.trUtf8("New Form"), 568 self.tr("New Form"),
569 path, 569 path,
570 self.trUtf8("Qt User-Interface Files (*.ui);;All Files (*)"), 570 self.tr("Qt User-Interface Files (*.ui);;All Files (*)"),
571 "", 571 "",
572 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) 572 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
573 573
574 if not fname: 574 if not fname:
575 # user aborted or didn't enter a filename 575 # user aborted or didn't enter a filename
582 fname += ex 582 fname += ex
583 583
584 if os.path.exists(fname): 584 if os.path.exists(fname):
585 res = E5MessageBox.yesNo( 585 res = E5MessageBox.yesNo(
586 self, 586 self,
587 self.trUtf8("New Form"), 587 self.tr("New Form"),
588 self.trUtf8("The file already exists! Overwrite it?"), 588 self.tr("The file already exists! Overwrite it?"),
589 icon=E5MessageBox.Warning) 589 icon=E5MessageBox.Warning)
590 if not res: 590 if not res:
591 # user selected to not overwrite 591 # user selected to not overwrite
592 return 592 return
593 593
594 try: 594 try:
595 shutil.copy(templateFile, fname) 595 shutil.copy(templateFile, fname)
596 except IOError as e: 596 except IOError as e:
597 E5MessageBox.critical( 597 E5MessageBox.critical(
598 self, 598 self,
599 self.trUtf8("New Form"), 599 self.tr("New Form"),
600 self.trUtf8( 600 self.tr(
601 "<p>The new form file <b>{0}</b> could not be created.<br>" 601 "<p>The new form file <b>{0}</b> could not be created.<br>"
602 "Problem: {1}</p>").format(fname, str(e))) 602 "Problem: {1}</p>").format(fname, str(e)))
603 return 603 return
604 604
605 self.project.appendFile(fname) 605 self.project.appendFile(fname)
621 621
622 from UI.DeleteFilesConfirmationDialog import \ 622 from UI.DeleteFilesConfirmationDialog import \
623 DeleteFilesConfirmationDialog 623 DeleteFilesConfirmationDialog
624 dlg = DeleteFilesConfirmationDialog( 624 dlg = DeleteFilesConfirmationDialog(
625 self.parent(), 625 self.parent(),
626 self.trUtf8("Delete forms"), 626 self.tr("Delete forms"),
627 self.trUtf8( 627 self.tr(
628 "Do you really want to delete these forms from the project?"), 628 "Do you really want to delete these forms from the project?"),
629 files) 629 files)
630 630
631 if dlg.exec_() == QDialog.Accepted: 631 if dlg.exec_() == QDialog.Accepted:
632 for fn2, fn in zip(fullNames, files): 632 for fn2, fn in zip(fullNames, files):
692 if self.compiledFile not in self.project.pdata["SOURCES"]: 692 if self.compiledFile not in self.project.pdata["SOURCES"]:
693 self.project.appendFile(ofn) 693 self.project.appendFile(ofn)
694 if not self.noDialog and not ui.notificationsEnabled(): 694 if not self.noDialog and not ui.notificationsEnabled():
695 E5MessageBox.information( 695 E5MessageBox.information(
696 self, 696 self,
697 self.trUtf8("Form Compilation"), 697 self.tr("Form Compilation"),
698 self.trUtf8("The compilation of the form file" 698 self.tr("The compilation of the form file"
699 " was successful.")) 699 " was successful."))
700 else: 700 else:
701 ui.showNotification( 701 ui.showNotification(
702 UI.PixmapCache.getPixmap("designer48.png"), 702 UI.PixmapCache.getPixmap("designer48.png"),
703 self.trUtf8("Form Compilation"), 703 self.tr("Form Compilation"),
704 self.trUtf8("The compilation of the form file" 704 self.tr("The compilation of the form file"
705 " was successful.")) 705 " was successful."))
706 self.project.projectFormCompiled.emit(self.compiledFile) 706 self.project.projectFormCompiled.emit(self.compiledFile)
707 except IOError as msg: 707 except IOError as msg:
708 if not self.noDialog: 708 if not self.noDialog:
709 E5MessageBox.information( 709 E5MessageBox.information(
710 self, 710 self,
711 self.trUtf8("Form Compilation"), 711 self.tr("Form Compilation"),
712 self.trUtf8( 712 self.tr(
713 "<p>The compilation of the form file failed.</p>" 713 "<p>The compilation of the form file failed.</p>"
714 "<p>Reason: {0}</p>").format(str(msg))) 714 "<p>Reason: {0}</p>").format(str(msg)))
715 else: 715 else:
716 ui.showNotification( 716 ui.showNotification(
717 UI.PixmapCache.getPixmap("designer48.png"), 717 UI.PixmapCache.getPixmap("designer48.png"),
718 self.trUtf8("Form Compilation"), 718 self.tr("Form Compilation"),
719 self.trUtf8( 719 self.tr(
720 "<p>The compilation of the form file failed.</p>" 720 "<p>The compilation of the form file failed.</p>"
721 "<p>Reason: {0}</p>").format(str(msg))) 721 "<p>Reason: {0}</p>").format(str(msg)))
722 else: 722 else:
723 if not self.noDialog: 723 if not self.noDialog:
724 E5MessageBox.information( 724 E5MessageBox.information(
725 self, 725 self,
726 self.trUtf8("Form Compilation"), 726 self.tr("Form Compilation"),
727 self.trUtf8("The compilation of the form file failed.")) 727 self.tr("The compilation of the form file failed."))
728 else: 728 else:
729 ui.showNotification( 729 ui.showNotification(
730 UI.PixmapCache.getPixmap("designer48.png"), 730 UI.PixmapCache.getPixmap("designer48.png"),
731 self.trUtf8("Form Compilation"), 731 self.tr("Form Compilation"),
732 self.trUtf8("The compilation of the form file failed.")) 732 self.tr("The compilation of the form file failed."))
733 self.compileProc = None 733 self.compileProc = None
734 734
735 def __compileUI(self, fn, noDialog=False, progress=None): 735 def __compileUI(self, fn, noDialog=False, progress=None):
736 """ 736 """
737 Privat method to compile a .ui file to a .py/.rb file. 737 Privat method to compile a .ui file to a .py/.rb file.
804 self.compileRunning = False 804 self.compileRunning = False
805 if progress is not None: 805 if progress is not None:
806 progress.cancel() 806 progress.cancel()
807 E5MessageBox.critical( 807 E5MessageBox.critical(
808 self, 808 self,
809 self.trUtf8('Process Generation Error'), 809 self.tr('Process Generation Error'),
810 self.trUtf8( 810 self.tr(
811 'Could not start {0}.<br>' 811 'Could not start {0}.<br>'
812 'Ensure that it is in the search path.' 812 'Ensure that it is in the search path.'
813 ).format(self.uicompiler)) 813 ).format(self.uicompiler))
814 return None 814 return None
815 815
857 if self.hooks["compileAllForms"] is not None: 857 if self.hooks["compileAllForms"] is not None:
858 self.hooks["compileAllForms"](self.project.pdata["FORMS"]) 858 self.hooks["compileAllForms"](self.project.pdata["FORMS"])
859 else: 859 else:
860 numForms = len(self.project.pdata["FORMS"]) 860 numForms = len(self.project.pdata["FORMS"])
861 progress = E5ProgressDialog( 861 progress = E5ProgressDialog(
862 self.trUtf8("Compiling forms..."), 862 self.tr("Compiling forms..."),
863 self.trUtf8("Abort"), 0, numForms, 863 self.tr("Abort"), 0, numForms,
864 self.trUtf8("%v/%m Forms"), self) 864 self.tr("%v/%m Forms"), self)
865 progress.setModal(True) 865 progress.setModal(True)
866 progress.setMinimumDuration(0) 866 progress.setMinimumDuration(0)
867 i = 0 867 i = 0
868 868
869 for fn in self.project.pdata["FORMS"]: 869 for fn in self.project.pdata["FORMS"]:
894 if self.hooks["compileSelectedForms"] is not None: 894 if self.hooks["compileSelectedForms"] is not None:
895 self.hooks["compileSelectedForms"](files) 895 self.hooks["compileSelectedForms"](files)
896 else: 896 else:
897 numForms = len(files) 897 numForms = len(files)
898 progress = E5ProgressDialog( 898 progress = E5ProgressDialog(
899 self.trUtf8("Compiling forms..."), 899 self.tr("Compiling forms..."),
900 self.trUtf8("Abort"), 0, numForms, 900 self.tr("Abort"), 0, numForms,
901 self.trUtf8("%v/%m Forms"), self) 901 self.tr("%v/%m Forms"), self)
902 progress.setModal(True) 902 progress.setModal(True)
903 progress.setMinimumDuration(0) 903 progress.setMinimumDuration(0)
904 i = 0 904 i = 0
905 905
906 for fn in files: 906 for fn in files:
931 ["Qt4", "PyQt5", "E4Plugin", "PySide"]: 931 ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
932 # ignore the request for non Qt GUI projects 932 # ignore the request for non Qt GUI projects
933 return 933 return
934 934
935 progress = E5ProgressDialog( 935 progress = E5ProgressDialog(
936 self.trUtf8("Determining changed forms..."), 936 self.tr("Determining changed forms..."),
937 None, 0, 100, self.trUtf8("%v/%m Forms")) 937 None, 0, 100, self.tr("%v/%m Forms"))
938 progress.setMinimumDuration(0) 938 progress.setMinimumDuration(0)
939 i = 0 939 i = 0
940 940
941 # get list of changed forms 941 # get list of changed forms
942 changedForms = [] 942 changedForms = []
959 progress.setValue(i) 959 progress.setValue(i)
960 QApplication.processEvents() 960 QApplication.processEvents()
961 961
962 if changedForms: 962 if changedForms:
963 progress.setLabelText( 963 progress.setLabelText(
964 self.trUtf8("Compiling changed forms...")) 964 self.tr("Compiling changed forms..."))
965 progress.setMaximum(len(changedForms)) 965 progress.setMaximum(len(changedForms))
966 i = 0 966 i = 0
967 progress.setValue(i) 967 progress.setValue(i)
968 QApplication.processEvents() 968 QApplication.processEvents()
969 for fn in changedForms: 969 for fn in changedForms:

eric ide

mercurial