Project/PropertiesDialog.py

changeset 4582
3a1d1d4c6f4f
parent 4021
195a471c327b
child 4601
0017e7cb67ae
diff -r 76999ca7bbf1 -r 3a1d1d4c6f4f Project/PropertiesDialog.py
--- a/Project/PropertiesDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/PropertiesDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -15,14 +15,12 @@
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
 from E5Gui.E5Application import e5App
-from E5Gui.E5Completers import E5FileCompleter, E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_PropertiesDialog import Ui_PropertiesDialog
 
 import Utilities
 import Preferences
-import UI.PixmapCache
 
 
 class PropertiesDialog(QDialog, Ui_PropertiesDialog):
@@ -43,16 +41,21 @@
             self.setObjectName(name)
         self.setupUi(self)
         
-        self.dirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.mainscriptButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.dirPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.mainscriptPicker.setMode(E5PathPickerModes.OpenFileMode)
         
         self.project = project
         self.newProject = new
         self.transPropertiesDlg = None
         self.spellPropertiesDlg = None
         
-        self.dirCompleter = E5DirCompleter(self.dirEdit)
-        self.mainscriptCompleter = E5FileCompleter(self.mainscriptEdit)
+        patterns = []
+        for pattern, filetype in self.project.pdata["FILETYPES"].items():
+            if filetype == "SOURCES":
+                patterns.append(pattern)
+        filters = self.tr("Source Files ({0});;All Files (*)")\
+            .format(" ".join(sorted(patterns)))
+        self.mainscriptPicker.setFilters(filters)
         
         self.languageComboBox.addItems(project.getProgrammingLanguages())
         
@@ -82,13 +85,13 @@
             if curIndex == -1:
                 curIndex = self.projectTypeComboBox.findData("Qt4")
             self.projectTypeComboBox.setCurrentIndex(curIndex)
-            self.dirEdit.setText(self.project.ppath)
+            self.dirPicker.setText(self.project.ppath)
             try:
                 self.versionEdit.setText(self.project.pdata["VERSION"][0])
             except IndexError:
                 pass
             try:
-                self.mainscriptEdit.setText(
+                self.mainscriptPicker.setText(
                     self.project.pdata["MAINSCRIPT"][0])
             except IndexError:
                 pass
@@ -133,7 +136,7 @@
                 self.languageComboBox.findText("Python3"))
             self.projectTypeComboBox.setCurrentIndex(
                 self.projectTypeComboBox.findData("PyQt5"))
-            self.dirEdit.setText(self.__initPaths[0])
+            self.dirPicker.setText(self.__initPaths[0])
             self.versionEdit.setText('0.1')
             self.vcsLabel.hide()
             self.vcsInfoButton.hide()
@@ -141,8 +144,8 @@
                 self.vcsCheckBox.hide()
         
         self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
-            bool(self.dirEdit.text()) and
-            Utilities.fromNativeSeparators(self.dirEdit.text()) not in
+            bool(self.dirPicker.text()) and
+            self.dirPicker.text() not in
             self.__initPaths)
     
     @pyqtSlot(str)
@@ -166,7 +169,7 @@
         self.projectTypeComboBox.setCurrentIndex(index)
     
     @pyqtSlot(str)
-    def on_dirEdit_textChanged(self, txt):
+    def on_dirPicker_textChanged(self, txt):
         """
         Private slot to handle a change of the project directory.
         
@@ -177,20 +180,6 @@
             Utilities.fromNativeSeparators(txt) not in self.__initPaths)
     
     @pyqtSlot()
-    def on_dirButton_clicked(self):
-        """
-        Private slot to display a directory selection dialog.
-        """
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select project directory"),
-            self.dirEdit.text(),
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-        
-        if directory:
-            self.dirEdit.setText(Utilities.toNativeSeparators(directory))
-    
-    @pyqtSlot()
     def on_spellPropertiesButton_clicked(self):
         """
         Private slot to display the spelling properties dialog.
@@ -220,32 +209,31 @@
         if res == QDialog.Rejected:
             self.transPropertiesDlg.initDialog()  # reset the dialogs contents
     
-    @pyqtSlot()
-    def on_mainscriptButton_clicked(self):
-        """
-        Private slot to display a file selection dialog.
+    @pyqtSlot(str)
+    def on_mainscriptPicker_pathSelected(self, script):
         """
-        dir = self.dirEdit.text()
-        if not dir:
-            dir = QDir.currentPath()
-        patterns = []
-        for pattern, filetype in list(self.project.pdata["FILETYPES"].items()):
-            if filetype == "SOURCES":
-                patterns.append(pattern)
-        filters = self.tr("Source Files ({0});;All Files (*)")\
-            .format(" ".join(patterns))
-        fn = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select main script file"),
-            dir,
-            filters)
+        Private slot to check the selected main script name.
         
-        if fn:
-            ppath = self.dirEdit.text()
+        @param script name of the main script
+        @type str
+        """
+        if script:
+            ppath = self.dirPicker.text()
             if ppath:
                 ppath = QDir(ppath).absolutePath() + QDir.separator()
-                fn = fn.replace(ppath, "")
-            self.mainscriptEdit.setText(Utilities.toNativeSeparators(fn))
+                script = script.replace(ppath, "")
+            self.mainscriptPicker.setText(script)
+    
+    @pyqtSlot()
+    def on_mainscriptPicker_aboutToShowPathPickerDialog(self):
+        """
+        Private slot to perform actions before the main script selection dialog
+        is shown. 
+        """
+        path = self.dirPicker.text()
+        if not path:
+            path = QDir.currentPath()
+        self.mainscriptPicker.setDefaultDirectory(path)
     
     @pyqtSlot()
     def on_vcsInfoButton_clicked(self):
@@ -275,13 +263,13 @@
         
         @return data of the project directory edit (string)
         """
-        return os.path.abspath(self.dirEdit.text())
+        return os.path.abspath(self.dirPicker.text())
     
     def storeData(self):
         """
         Public method to store the entered/modified data.
         """
-        self.project.ppath = os.path.abspath(self.dirEdit.text())
+        self.project.ppath = os.path.abspath(self.dirPicker.text())
         fn = self.nameEdit.text()
         if fn:
             self.project.name = fn
@@ -290,7 +278,7 @@
         else:
             self.project.pfile = ""
         self.project.pdata["VERSION"] = [self.versionEdit.text()]
-        fn = self.mainscriptEdit.text()
+        fn = self.mainscriptPicker.text()
         if fn:
             fn = self.project.getRelativePath(fn)
             self.project.pdata["MAINSCRIPT"] = [fn]

eric ide

mercurial