src/eric7/MultiProject/AddProjectDialog.py

branch
eric7
changeset 10410
da82156f44e9
parent 9971
773ad1f1ed22
child 10439
21c28b0f9e41
--- a/src/eric7/MultiProject/AddProjectDialog.py	Fri Dec 15 14:07:43 2023 +0100
+++ b/src/eric7/MultiProject/AddProjectDialog.py	Fri Dec 15 15:28:54 2023 +0100
@@ -16,6 +16,7 @@
 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
 from eric7.SystemUtilities import FileSystemUtilities
 
+from .MultiProjectProjectMeta import MultiProjectProjectMeta
 from .Ui_AddProjectDialog import Ui_AddProjectDialog
 
 
@@ -34,8 +35,8 @@
         @type QWidget
         @param startdir start directory for the selection dialog
         @type str
-        @param project dictionary containing project data
-        @type dict
+        @param project dictionary containing project metadata
+        @type MultiProjectProjectMeta
         @param categories list of already used categories
         @type list of str
         @param category category to be preset
@@ -66,42 +67,49 @@
         if project is not None:
             self.setWindowTitle(self.tr("Project Properties"))
 
-            self.nameEdit.setText(project["name"])
-            self.filenamePicker.setText(project["file"])
-            self.descriptionEdit.setPlainText(project["description"])
-            self.mainCheckBox.setChecked(project["master"])
-            index = self.categoryComboBox.findText(project["category"])
+            self.nameEdit.setText(project.name)
+            self.filenamePicker.setText(project.file)
+            self.descriptionEdit.setPlainText(project.description)
+            self.mainCheckBox.setChecked(project.master)
+            index = self.categoryComboBox.findText(project.category)
             if index == -1:
                 index = 0
             self.categoryComboBox.setCurrentIndex(index)
-            self.uid = project["uid"]
+            self.uid = project.uid
 
-    def getData(self):
+    def getProjectMetadata(self):
         """
-        Public slot to retrieve the dialogs data.
+        Public method to get the entered project metadata.
 
-        @return tuple of five values giving the project name, the name of the project
-            file, a flag telling whether the project shall be the main project, a short
-            description for the project and the project category
-        @rtype tuple of (str, str, bool, str, str)
+        @return project metadata iaw. the entered values
+        @rtype MultiProjectProjectMeta
         """
         if not self.uid:
             # new project entry
             self.uid = QUuid.createUuid().toString()
 
+        return MultiProjectProjectMeta(
+            name=self.nameEdit.text(),
+            file=self.__getFileName(),
+            uid=self.uid,
+            master=self.mainCheckBox.isChecked(),
+            description=self.descriptionEdit.toPlainText(),
+            category=self.categoryComboBox.currentText(),
+        )
+
+    def __getFileName(self):
+        """
+        Private method to get the file name of the project file.
+
+        @return project file name
+        @rtype str
+        """
         filename = self.filenamePicker.text()
         if not os.path.isabs(filename):
             filename = FileSystemUtilities.toNativeSeparators(
                 os.path.join(self.startdir, filename)
             )
-        return (
-            self.nameEdit.text(),
-            filename,
-            self.mainCheckBox.isChecked(),
-            self.descriptionEdit.toPlainText(),
-            self.categoryComboBox.currentText(),
-            self.uid,
-        )
+        return filename
 
     @pyqtSlot(str)
     def on_nameEdit_textChanged(self, txt):
@@ -128,5 +136,7 @@
         Private method to update the dialog.
         """
         self.__okButton.setEnabled(
-            self.nameEdit.text() != "" and self.filenamePicker.text() != ""
+            self.nameEdit.text() != ""
+            and self.filenamePicker.text() != ""
+            and os.path.exists(self.__getFileName())
         )

eric ide

mercurial