diff -r 99eb1cb030a5 -r 1c5cf2022c7e src/eric7/Plugins/DocumentationPlugins/Ericapi/EricapiConfigDialog.py --- a/src/eric7/Plugins/DocumentationPlugins/Ericapi/EricapiConfigDialog.py Thu Jul 07 16:38:26 2022 +0200 +++ b/src/eric7/Plugins/DocumentationPlugins/Ericapi/EricapiConfigDialog.py Thu Jul 07 17:08:18 2022 +0200 @@ -39,6 +39,9 @@ super().__init__(parent) self.setupUi(self) + self.startDirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) + self.startDirPicker.setDefaultDirectory(project.getProjectPath()) + self.outputFilePicker.setMode(EricPathPickerModes.SAVE_FILE_MODE) self.outputFilePicker.setDefaultDirectory(project.getProjectPath()) self.outputFilePicker.setFilters(self.tr( @@ -64,12 +67,16 @@ # combine it with the values of parms if parms is not None: self.parameters.update(parms) + self.parameters["startDirectory"] = Utilities.toNativeSeparators( + self.parameters['startDirectory'] + ) self.parameters['outputFile'] = Utilities.toNativeSeparators( self.parameters['outputFile']) self.recursionCheckBox.setChecked(self.parameters['useRecursion']) self.includePrivateCheckBox.setChecked( self.parameters['includePrivate']) + self.startDirPicker.setText(self.parameters['startDirectory']) self.outputFilePicker.setText(self.parameters['outputFile']) self.baseEdit.setText(self.parameters['basePackage']) self.ignoreDirsList.clear() @@ -97,6 +104,7 @@ self.defaults = { 'useRecursion': False, 'includePrivate': False, + 'startDirectory': '', 'outputFile': '', 'basePackage': '', 'ignoreDirectories': [], @@ -120,8 +128,9 @@ dictionary can be passed back upon object generation to overwrite the default settings. - @return a tuple of the commandline parameters and non default - parameters (list of strings, dictionary) + @return a tuple containing the commandline parameters, non default + parameters and the start directory + @rtype tuple of (list of str, dict, str) """ parms = {} args = [] @@ -132,15 +141,21 @@ Utilities.normabsjoinpath(getConfig('ericDir'), "eric7_api.py")) # 2. the commandline options + 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['outputFile'] != self.defaults['outputFile']: - parms['outputFile'] = Utilities.fromNativeSeparators( - self.project.getRelativePath(self.parameters['outputFile'])) + parms['outputFile'] = self.project.getRelativeUniversalPath( + self.parameters['outputFile'] + ) args.append('-o') - if os.path.isabs(self.parameters['outputFile']): - args.append(self.parameters['outputFile']) - else: - args.append( - os.path.join(self.ppath, self.parameters['outputFile'])) + args.append( + self.project.getAbsolutePath(self.parameters['outputFile']) + ) else: self.parameters['outputFile'] = self.defaults['outputFile'] if self.parameters['basePackage'] != self.defaults['basePackage']: @@ -187,8 +202,27 @@ for lang in self.parameters['languages']: args.append('--language={0}'.format(lang)) - 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() def on_outputFilePicker_aboutToShowPathPickerDialog(self): """ @@ -265,10 +299,19 @@ self.parameters['includePrivate'] = ( self.includePrivateCheckBox.isChecked() ) + + startdir = self.startDirPicker.text() + if startdir: + startdir = os.path.normpath(startdir) + if startdir.endswith(os.sep): + startdir = startdir[:-1] + self.parameters["startDirectory"] = startdir + outfile = self.outputFilePicker.text() if outfile != '': outfile = os.path.normpath(outfile) self.parameters['outputFile'] = outfile + self.parameters['basePackage'] = self.baseEdit.text() self.parameters['ignoreDirectories'] = [] for row in range(0, self.ignoreDirsList.count()):