MultiProject/AddProjectDialog.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MultiProject/AddProjectDialog.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,101 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2008 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the add project dialog.
+"""
+
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+
+from E4Gui.E4Completers import E4FileCompleter
+
+from Ui_AddProjectDialog import Ui_AddProjectDialog
+
+import Utilities
+
+class AddProjectDialog(QDialog, Ui_AddProjectDialog):
+    """
+    Class implementing the add project dialog.
+    """
+    def __init__(self, parent = None, startdir = None, project = None):
+        """
+        Constructor
+        
+        @param parent parent widget of this dialog (QWidget)
+        @param startdir start directory for the selection dialog (string)
+        @param project dictionary containing project data
+        """
+        QDialog.__init__(self, parent)
+        self.setupUi(self)
+        
+        self.fileCompleter = E4FileCompleter(self.filenameEdit)
+        
+        self.startdir = startdir
+        
+        self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok)
+        self.__okButton.setEnabled(False)
+        
+        if project is not None:
+            self.setWindowTitle(self.trUtf8("Project Properties"))
+            
+            self.filenameEdit.setReadOnly(True)
+            self.fileButton.setEnabled(False)
+            
+            self.nameEdit.setText(project['name'])
+            self.filenameEdit.setText(project['file'])
+            self.descriptionEdit.setPlainText(project['description'])
+            self.masterCheckBox.setChecked(project['master'])
+    
+    @pyqtSlot()
+    def on_fileButton_clicked(self):
+        """
+        Private slot to display a file selection dialog.
+        """
+        startdir = self.filenameEdit.text()
+        if not startdir and self.startdir is not None:
+            startdir = self.startdir
+            projectFile = QFileDialog.getOpenFileName(
+                self,
+                self.trUtf8("Add Project"),
+                startdir,
+                self.trUtf8("Project Files (*.e4p *.e4pz)"))
+        
+        if projectFile:
+            self.filenameEdit.setText(Utilities.toNativeSeparators(projectFile))
+    
+    def getData(self):
+        """
+        Public slot to retrieve the dialogs data.
+        
+        @return tuple of four values (string, string, boolean, string) giving the 
+            project name, the name of the project file, a flag telling, whether
+            the project shall be the master project and a short description
+            for the project
+        """
+        return (self.nameEdit.text(), self.filenameEdit.text(), 
+                self.masterCheckBox.isChecked(), 
+                self.descriptionEdit.toPlainText())
+    
+    @pyqtSlot(str)
+    def on_nameEdit_textChanged(self, p0):
+        """
+        Private slot called when the project name has changed.
+        """
+        self.__updateUi()
+    
+    @pyqtSlot(str)
+    def on_filenameEdit_textChanged(self, p0):
+        """
+        Private slot called when the project filename has changed.
+        """
+        self.__updateUi()
+    
+    def __updateUi(self):
+        """
+        Private method to update the dialog.
+        """
+        self.__okButton.setEnabled(self.nameEdit.text() != "" and \
+                                   self.filenameEdit.text() != "")

eric ide

mercurial