src/eric7/Plugins/DocumentationPlugins/Ericapi/EricapiConfigDialog.py

branch
eric7
changeset 9212
1c5cf2022c7e
parent 9209
b99e7fd55fd3
child 9221
bf71ee032bb4
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()):

eric ide

mercurial