15 |
15 |
16 from PyQt5.QtCore import pyqtSlot |
16 from PyQt5.QtCore import pyqtSlot |
17 from PyQt5.QtGui import QColor |
17 from PyQt5.QtGui import QColor |
18 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QColorDialog |
18 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QColorDialog |
19 |
19 |
20 from E5Gui.E5Completers import E5DirCompleter |
20 from E5Gui.E5PathPicker import E5PathPickerModes |
21 from E5Gui import E5FileDialog |
|
22 |
21 |
23 from .Ui_EricdocConfigDialog import Ui_EricdocConfigDialog |
22 from .Ui_EricdocConfigDialog import Ui_EricdocConfigDialog |
24 from DocumentationTools.Config import eric6docDefaultColors, \ |
23 from DocumentationTools.Config import eric6docDefaultColors, \ |
25 eric6docColorParameterNames |
24 eric6docColorParameterNames |
26 import Utilities |
25 import Utilities |
27 import UI.PixmapCache |
|
28 |
26 |
29 from eric6config import getConfig |
27 from eric6config import getConfig |
30 |
28 |
31 |
29 |
32 class EricdocConfigDialog(QDialog, Ui_EricdocConfigDialog): |
30 class EricdocConfigDialog(QDialog, Ui_EricdocConfigDialog): |
42 @param parent parent widget of this dialog |
40 @param parent parent widget of this dialog |
43 """ |
41 """ |
44 super(EricdocConfigDialog, self).__init__(parent) |
42 super(EricdocConfigDialog, self).__init__(parent) |
45 self.setupUi(self) |
43 self.setupUi(self) |
46 |
44 |
47 self.outputDirButton.setIcon(UI.PixmapCache.getIcon("open.png")) |
45 self.outputDirPicker.setMode(E5PathPickerModes.DirectoryMode) |
48 self.ignoreDirButton.setIcon(UI.PixmapCache.getIcon("open.png")) |
46 self.outputDirPicker.setDefaultDirectory(project.getProjectPath()) |
49 self.cssButton.setIcon(UI.PixmapCache.getIcon("open.png")) |
47 |
50 self.qtHelpDirButton.setIcon(UI.PixmapCache.getIcon("open.png")) |
48 self.ignoreDirPicker.setMode(E5PathPickerModes.DirectoryMode) |
|
49 self.ignoreDirPicker.setDefaultDirectory(project.getProjectPath()) |
|
50 |
|
51 self.cssPicker.setMode(E5PathPickerModes.OpenFileMode) |
|
52 self.cssPicker.setDefaultDirectory(getConfig('ericCSSDir')) |
|
53 self.cssPicker.setFilters(self.tr( |
|
54 "Style sheet (*.css);;All files (*)")) |
|
55 |
|
56 self.qtHelpDirPicker.setMode(E5PathPickerModes.DirectoryMode) |
|
57 self.qtHelpDirPicker.setDefaultDirectory(project.getProjectPath()) |
51 |
58 |
52 self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok) |
59 self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok) |
53 |
60 |
54 self.__initializeDefaults() |
61 self.__initializeDefaults() |
55 |
62 |
98 "%PYTHON%", Utilities.getPythonModulesDirectory()) |
105 "%PYTHON%", Utilities.getPythonModulesDirectory()) |
99 |
106 |
100 self.ppath = project.getProjectPath() |
107 self.ppath = project.getProjectPath() |
101 self.project = project |
108 self.project = project |
102 |
109 |
103 self.outputDirCompleter = E5DirCompleter(self.outputDirEdit) |
|
104 self.ignoreDirCompleter = E5DirCompleter(self.ignoreDirEdit) |
|
105 self.qtHelpDirCompleter = E5DirCompleter(self.qtHelpDirEdit) |
|
106 |
|
107 self.recursionCheckBox.setChecked(self.parameters['useRecursion']) |
110 self.recursionCheckBox.setChecked(self.parameters['useRecursion']) |
108 self.noindexCheckBox.setChecked(self.parameters['noindex']) |
111 self.noindexCheckBox.setChecked(self.parameters['noindex']) |
109 self.noemptyCheckBox.setChecked(self.parameters['noempty']) |
112 self.noemptyCheckBox.setChecked(self.parameters['noempty']) |
110 self.outputDirEdit.setText(self.parameters['outputDirectory']) |
113 self.outputDirPicker.setText(self.parameters['outputDirectory']) |
111 self.ignoreDirsList.clear() |
114 self.ignoreDirsList.clear() |
112 for d in self.parameters['ignoreDirectories']: |
115 for d in self.parameters['ignoreDirectories']: |
113 self.ignoreDirsList.addItem(d) |
116 self.ignoreDirsList.addItem(d) |
114 self.cssEdit.setText(self.parameters['cssFile']) |
117 self.cssPicker.setText(self.parameters['cssFile']) |
115 self.sourceExtEdit.setText( |
118 self.sourceExtEdit.setText( |
116 ", ".join(self.parameters['sourceExtensions'])) |
119 ", ".join(self.parameters['sourceExtensions'])) |
117 self.excludeFilesEdit.setText( |
120 self.excludeFilesEdit.setText( |
118 ", ".join(self.parameters['ignoreFilePatterns'])) |
121 ", ".join(self.parameters['ignoreFilePatterns'])) |
119 self.sample.setHtml(self.sampleText.format(**self.colors)) |
122 self.sample.setHtml(self.sampleText.format(**self.colors)) |
120 |
123 |
121 self.qtHelpGroup.setChecked(self.parameters['qtHelpEnabled']) |
124 self.qtHelpGroup.setChecked(self.parameters['qtHelpEnabled']) |
122 self.qtHelpDirEdit.setText(self.parameters['qtHelpOutputDirectory']) |
125 self.qtHelpDirPicker.setText(self.parameters['qtHelpOutputDirectory']) |
123 self.qtHelpNamespaceEdit.setText(self.parameters['qtHelpNamespace']) |
126 self.qtHelpNamespaceEdit.setText(self.parameters['qtHelpNamespace']) |
124 self.qtHelpFolderEdit.setText(self.parameters['qtHelpVirtualFolder']) |
127 self.qtHelpFolderEdit.setText(self.parameters['qtHelpVirtualFolder']) |
125 self.qtHelpFilterNameEdit.setText(self.parameters['qtHelpFilterName']) |
128 self.qtHelpFilterNameEdit.setText(self.parameters['qtHelpFilterName']) |
126 self.qtHelpFilterAttributesEdit.setText( |
129 self.qtHelpFilterAttributesEdit.setText( |
127 self.parameters['qtHelpFilterAttributes']) |
130 self.parameters['qtHelpFilterAttributes']) |
288 parms['qtHelpCreateCollection'] = \ |
291 parms['qtHelpCreateCollection'] = \ |
289 self.parameters['qtHelpCreateCollection'] |
292 self.parameters['qtHelpCreateCollection'] |
290 args.append('--create-qhc') |
293 args.append('--create-qhc') |
291 |
294 |
292 return (args, parms) |
295 return (args, parms) |
293 |
296 |
294 @pyqtSlot() |
297 @pyqtSlot(str) |
295 def on_outputDirButton_clicked(self): |
298 def on_outputDirPicker_pathSelected(self, path): |
296 """ |
299 """ |
297 Private slot to select the output directory. |
300 Private slot handling the selection of an output directory. |
298 |
301 |
299 It displays a directory selection dialog to |
302 @param path path of the output directory |
300 select the directory the documentations is written to. |
303 @type str |
301 """ |
304 """ |
302 startDir = Utilities.fromNativeSeparators(self.outputDirEdit.text()) |
305 # make it relative, if it is in a subdirectory of the project path |
303 if not startDir: |
306 dn = self.project.getRelativePath(path) |
304 startDir = Utilities.fromNativeSeparators(self.ppath) |
307 while dn.endswith(os.sep): |
305 directory = E5FileDialog.getExistingDirectory( |
308 dn = dn[:-1] |
306 self, |
309 self.outputDirPicker.setText(dn) |
307 self.tr("Select output directory"), |
310 |
308 startDir, |
311 @pyqtSlot(str) |
309 E5FileDialog.Options(E5FileDialog.ShowDirsOnly)) |
312 def on_ignoreDirPicker_pathSelected(self, path): |
310 |
313 """ |
311 if directory: |
314 Private slot handling the selection of a directory to be ignored. |
312 # make it relative, if it is a subdirectory of the project path |
315 |
313 dn = Utilities.toNativeSeparators(directory) |
316 @param path path of the directory to be ignored |
314 dn = self.project.getRelativePath(dn) |
317 @type str |
315 while dn.endswith(os.sep): |
318 """ |
316 dn = dn[:-1] |
319 # make it relative, if it is in a subdirectory of the project path |
317 self.outputDirEdit.setText(dn) |
320 dn = self.project.getRelativePath(path) |
318 |
321 while dn.endswith(os.sep): |
319 @pyqtSlot() |
322 dn = dn[:-1] |
320 def on_ignoreDirButton_clicked(self): |
323 self.ignoreDirPicker.setText(dn) |
321 """ |
|
322 Private slot to select a directory to be ignored. |
|
323 |
|
324 It displays a directory selection dialog to |
|
325 select a directory to be ignored. |
|
326 """ |
|
327 startDir = Utilities.fromNativeSeparators(self.ignoreDirEdit.text()) |
|
328 if not startDir: |
|
329 startDir = self.ppath |
|
330 directory = E5FileDialog.getExistingDirectory( |
|
331 self, |
|
332 self.tr("Select directory to exclude"), |
|
333 startDir, |
|
334 E5FileDialog.Options(E5FileDialog.ShowDirsOnly)) |
|
335 |
|
336 if directory: |
|
337 # make it relative, if it is a subdirectory of the project path |
|
338 dn = Utilities.toNativeSeparators(directory) |
|
339 dn = self.project.getRelativePath(dn) |
|
340 while dn.endswith(os.sep): |
|
341 dn = dn[:-1] |
|
342 self.ignoreDirEdit.setText(dn) |
|
343 |
324 |
344 @pyqtSlot() |
325 @pyqtSlot() |
345 def on_addButton_clicked(self): |
326 def on_addButton_clicked(self): |
346 """ |
327 """ |
347 Private slot to add the directory displayed to the listview. |
328 Private slot to add the directory displayed to the listview. |
348 |
329 |
349 The directory in the ignore directories |
330 The directory in the ignore directories |
350 line edit is moved to the listbox above and the edit is cleared. |
331 line edit is moved to the listbox above and the edit is cleared. |
351 """ |
332 """ |
352 basename = os.path.basename(self.ignoreDirEdit.text()) |
333 basename = os.path.basename(self.ignoreDirPicker.text()) |
353 if basename: |
334 if basename: |
354 self.ignoreDirsList.addItem(basename) |
335 self.ignoreDirsList.addItem(basename) |
355 self.ignoreDirEdit.clear() |
336 self.ignoreDirPicker.clear() |
356 |
337 |
357 @pyqtSlot() |
338 @pyqtSlot() |
358 def on_deleteButton_clicked(self): |
339 def on_deleteButton_clicked(self): |
359 """ |
340 """ |
360 Private slot to delete the currently selected directory of the listbox. |
341 Private slot to delete the currently selected directory of the listbox. |
361 """ |
342 """ |
362 itm = self.ignoreDirsList.takeItem(self.ignoreDirsList.currentRow()) |
343 itm = self.ignoreDirsList.takeItem(self.ignoreDirsList.currentRow()) |
363 del itm |
344 del itm |
364 |
345 |
365 @pyqtSlot() |
346 @pyqtSlot(str) |
366 def on_cssButton_clicked(self): |
347 def on_cssPicker_pathSelected(self, path): |
367 """ |
348 """ |
368 Private slot to select a css style sheet. |
349 Private slot handling the selection of a css style sheet. |
369 """ |
350 |
370 cssFile = E5FileDialog.getOpenFileName( |
351 @param path path of the css style sheet |
371 self, |
352 @type str |
372 self.tr("Select CSS style sheet"), |
353 """ |
373 getConfig('ericCSSDir'), |
354 # make it relative, if it is in a subdirectory of the project path |
374 self.tr("Style sheet (*.css);;All files (*)")) |
355 cf = self.project.getRelativePath(path) |
375 |
356 self.cssPicker.setText(cf) |
376 if cssFile: |
|
377 # make it relative, if it is in a subdirectory of the project path |
|
378 cf = Utilities.toNativeSeparators(cssFile) |
|
379 cf = self.project.getRelativePath(cf) |
|
380 self.cssEdit.setText(cf) |
|
381 |
357 |
382 def __selectColor(self, colorKey): |
358 def __selectColor(self, colorKey): |
383 """ |
359 """ |
384 Private method to select a color. |
360 Private method to select a color. |
385 |
361 |
506 |
482 |
507 @param txt text of the line edit (string) |
483 @param txt text of the line edit (string) |
508 """ |
484 """ |
509 self.__checkQtHelpOptions() |
485 self.__checkQtHelpOptions() |
510 |
486 |
511 @pyqtSlot() |
487 @pyqtSlot(str) |
512 def on_qtHelpDirButton_clicked(self): |
488 def on_qtHelpDirPicker_pathSelected(self, path): |
513 """ |
489 """ |
514 Private slot to select the output directory for the QtHelp files. |
490 Private slot handling the selection of the output directory for the |
515 |
491 QtHelp files. |
516 It displays a directory selection dialog to |
492 |
517 select the directory the QtHelp files are written to. |
493 @param path path of the the output directory for the QtHelp files |
518 """ |
494 @type str |
519 directory = E5FileDialog.getExistingDirectory( |
495 """ |
520 self, |
496 # make it relative, if it is in a subdirectory of the project path |
521 self.tr("Select output directory for QtHelp files"), |
497 dn = self.project.getRelativePath(path) |
522 self.qtHelpDirEdit.text(), |
498 while dn.endswith(os.sep): |
523 E5FileDialog.Options(E5FileDialog.ShowDirsOnly)) |
499 dn = dn[:-1] |
524 |
500 self.qtHelpDirPicker.setText(dn) |
525 if directory: |
|
526 # make it relative, if it is a subdirectory of the project path |
|
527 dn = Utilities.toNativeSeparators(directory) |
|
528 dn = self.project.getRelativePath(dn) |
|
529 while dn.endswith(os.sep): |
|
530 dn = dn[:-1] |
|
531 self.qtHelpDirEdit.setText(dn) |
|
532 |
501 |
533 def accept(self): |
502 def accept(self): |
534 """ |
503 """ |
535 Public slot called by the Ok button. |
504 Public slot called by the Ok button. |
536 |
505 |
537 It saves the values in the parameters dictionary. |
506 It saves the values in the parameters dictionary. |
538 """ |
507 """ |
539 self.parameters['useRecursion'] = self.recursionCheckBox.isChecked() |
508 self.parameters['useRecursion'] = self.recursionCheckBox.isChecked() |
540 self.parameters['noindex'] = self.noindexCheckBox.isChecked() |
509 self.parameters['noindex'] = self.noindexCheckBox.isChecked() |
541 self.parameters['noempty'] = self.noemptyCheckBox.isChecked() |
510 self.parameters['noempty'] = self.noemptyCheckBox.isChecked() |
542 outdir = self.outputDirEdit.text() |
511 outdir = self.outputDirPicker.text() |
543 if outdir != '': |
512 if outdir != '': |
544 outdir = os.path.normpath(outdir) |
513 outdir = os.path.normpath(outdir) |
545 if outdir.endswith(os.sep): |
514 if outdir.endswith(os.sep): |
546 outdir = outdir[:-1] |
515 outdir = outdir[:-1] |
547 self.parameters['outputDirectory'] = outdir |
516 self.parameters['outputDirectory'] = outdir |
548 self.parameters['ignoreDirectories'] = [] |
517 self.parameters['ignoreDirectories'] = [] |
549 for row in range(0, self.ignoreDirsList.count()): |
518 for row in range(0, self.ignoreDirsList.count()): |
550 itm = self.ignoreDirsList.item(row) |
519 itm = self.ignoreDirsList.item(row) |
551 self.parameters['ignoreDirectories'].append( |
520 self.parameters['ignoreDirectories'].append( |
552 os.path.normpath(itm.text())) |
521 os.path.normpath(itm.text())) |
553 cssFile = self.cssEdit.text() |
522 cssFile = self.cssPicker.text() |
554 if cssFile != '': |
523 if cssFile != '': |
555 cssFile = os.path.normpath(cssFile) |
524 cssFile = os.path.normpath(cssFile) |
556 self.parameters['cssFile'] = cssFile |
525 self.parameters['cssFile'] = cssFile |
557 extensions = self.sourceExtEdit.text().split(',') |
526 extensions = self.sourceExtEdit.text().split(',') |
558 self.parameters['sourceExtensions'] = \ |
527 self.parameters['sourceExtensions'] = \ |
560 patterns = self.excludeFilesEdit.text().split(',') |
529 patterns = self.excludeFilesEdit.text().split(',') |
561 self.parameters['ignoreFilePatterns'] = \ |
530 self.parameters['ignoreFilePatterns'] = \ |
562 [pattern.strip() for pattern in patterns] |
531 [pattern.strip() for pattern in patterns] |
563 |
532 |
564 self.parameters['qtHelpEnabled'] = self.qtHelpGroup.isChecked() |
533 self.parameters['qtHelpEnabled'] = self.qtHelpGroup.isChecked() |
565 self.parameters['qtHelpOutputDirectory'] = self.qtHelpDirEdit.text() |
534 self.parameters['qtHelpOutputDirectory'] = self.qtHelpDirPicker.text() |
566 self.parameters['qtHelpNamespace'] = self.qtHelpNamespaceEdit.text() |
535 self.parameters['qtHelpNamespace'] = self.qtHelpNamespaceEdit.text() |
567 self.parameters['qtHelpVirtualFolder'] = self.qtHelpFolderEdit.text() |
536 self.parameters['qtHelpVirtualFolder'] = self.qtHelpFolderEdit.text() |
568 self.parameters['qtHelpFilterName'] = self.qtHelpFilterNameEdit.text() |
537 self.parameters['qtHelpFilterName'] = self.qtHelpFilterNameEdit.text() |
569 self.parameters['qtHelpFilterAttributes'] = \ |
538 self.parameters['qtHelpFilterAttributes'] = \ |
570 self.qtHelpFilterAttributesEdit.text() |
539 self.qtHelpFilterAttributesEdit.text() |