Plugins/DocumentationPlugins/Ericdoc/EricdocConfigDialog.py

changeset 4593
cc745fa6c914
parent 4021
195a471c327b
child 4631
5c1a96925da4
equal deleted inserted replaced
4590:9fdd473c68fb 4593:cc745fa6c914
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()

eric ide

mercurial