diff -r 15743bae8a50 -r 99eb1cb030a5 src/eric7/Plugins/DocumentationPlugins/Ericdoc/EricdocConfigDialog.py --- a/src/eric7/Plugins/DocumentationPlugins/Ericdoc/EricdocConfigDialog.py Thu Jul 07 15:02:00 2022 +0200 +++ b/src/eric7/Plugins/DocumentationPlugins/Ericdoc/EricdocConfigDialog.py Thu Jul 07 16:38:26 2022 +0200 @@ -42,6 +42,9 @@ super().__init__(parent) self.setupUi(self) + self.startDirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) + self.startDirPicker.setDefaultDirectory(project.getProjectPath()) + self.outputDirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) self.outputDirPicker.setDefaultDirectory(project.getProjectPath()) @@ -92,6 +95,9 @@ self.colors[key] = parms[key] else: self.parameters[key] = parms[key] + self.parameters["startDirectory"] = Utilities.toNativeSeparators( + self.parameters['startDirectory'] + ) self.parameters['outputDirectory'] = Utilities.toNativeSeparators( self.parameters['outputDirectory'] ) @@ -112,6 +118,7 @@ self.recursionCheckBox.setChecked(self.parameters['useRecursion']) self.noindexCheckBox.setChecked(self.parameters['noindex']) self.noemptyCheckBox.setChecked(self.parameters['noempty']) + self.startDirPicker.setText(self.parameters['startDirectory']) self.outputDirPicker.setText(self.parameters['outputDirectory']) self.ignoreDirsList.clear() for d in self.parameters['ignoreDirectories']: @@ -145,6 +152,7 @@ 'useRecursion': False, 'noindex': False, 'noempty': False, + 'startDirectory': '', 'outputDirectory': '', 'ignoreDirectories': [], 'ignoreFilePatterns': [], @@ -184,23 +192,23 @@ # 2. the commandline options # 2a. general commandline options - if ( - self.parameters['outputDirectory'] != - self.defaults['outputDirectory'] - ): - parms['outputDirectory'] = Utilities.fromNativeSeparators( - self.project.getRelativePath( - self.parameters['outputDirectory'])) + if self.parameters['startDirectory'] != self.defaults['startDirectory']: + parms['startDirectory'] = self.project.getRelativeUniversalPath( + self.parameters['startDirectory'] + ) + else: + self.parameters['startDirectory'] = self.defaults['startDirectory'] + parms['startDirectory'] = self.parameters['startDirectory'] + if self.parameters['outputDirectory'] != self.defaults['outputDirectory']: + parms['outputDirectory'] = self.project.getRelativeUniversalPath( + self.parameters['outputDirectory'] + ) args.append('-o') - if os.path.isabs(self.parameters['outputDirectory']): - args.append(self.parameters['outputDirectory']) - else: - args.append(os.path.join( - self.ppath, self.parameters['outputDirectory'])) + args.append( + self.project.getAbsolutePath(self.parameters['outputDirectory']) + ) else: - self.parameters['outputDirectory'] = ( - self.defaults['outputDirectory'] - ) + self.parameters['outputDirectory'] = self.defaults['outputDirectory'] parms['outputDirectory'] = self.parameters['outputDirectory'] if ( self.parameters['ignoreDirectories'] != @@ -267,16 +275,19 @@ self.parameters['qtHelpOutputDirectory'] != self.defaults['qtHelpOutputDirectory'] ): - parms['qtHelpOutputDirectory'] = Utilities.fromNativeSeparators( - self.project.getRelativePath( - self.parameters['qtHelpOutputDirectory'])) + parms['qtHelpOutputDirectory'] = self.project.getRelativeUniversalPath( + self.parameters['qtHelpOutputDirectory'] + ) if os.path.isabs(self.parameters['outputDirectory']): args.append("--qhp-outdir={0}".format( - self.parameters['qtHelpOutputDirectory'])) + self.parameters['qtHelpOutputDirectory']) + ) else: args.append("--qhp-outdir={0}".format( - os.path.join(self.ppath, - self.parameters['qtHelpOutputDirectory']))) + self.project.getAbsolutePath( + self.parameters['qtHelpOutputDirectory'] + ) + )) if ( self.parameters['qtHelpNamespace'] != self.defaults['qtHelpNamespace'] @@ -322,7 +333,26 @@ ) args.append('--create-qhc') - return (args, parms) + startDir = ( + self.project.getAbsolutePath(self.parameters['startDirectory']) + if self.parameters['startDirectory'] else + "" + ) + return args, parms, startDir + + @pyqtSlot(str) + def on_startDirPicker_pathSelected(self, path): + """ + Private slot handling the selection of a start directory. + + @param path path of the start directory + @type str + """ + # make it relative, if it is in a subdirectory of the project path + dn = self.project.getRelativePath(path) + while dn.endswith(os.sep): + dn = dn[:-1] + self.startDirPicker.setText(dn) @pyqtSlot(str) def on_outputDirPicker_pathSelected(self, path): @@ -538,12 +568,21 @@ self.parameters['useRecursion'] = self.recursionCheckBox.isChecked() self.parameters['noindex'] = self.noindexCheckBox.isChecked() self.parameters['noempty'] = self.noemptyCheckBox.isChecked() + + startdir = self.startDirPicker.text() + if startdir: + startdir = os.path.normpath(startdir) + if startdir.endswith(os.sep): + startdir = startdir[:-1] + self.parameters["startDirectory"] = startdir + outdir = self.outputDirPicker.text() - if outdir != '': + if outdir: outdir = os.path.normpath(outdir) if outdir.endswith(os.sep): outdir = outdir[:-1] self.parameters['outputDirectory'] = outdir + self.parameters['ignoreDirectories'] = [] for row in range(0, self.ignoreDirsList.count()): itm = self.ignoreDirsList.item(row)