Changed more configuration pages to use the path picker.

Fri, 27 Nov 2015 20:06:52 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 27 Nov 2015 20:06:52 +0100
changeset 4577
e79a139aacc4
parent 4576
a258569d44db
child 4578
5d611151cdec

Changed more configuration pages to use the path picker.

Preferences/ConfigurationPages/HelpViewersPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpViewersPage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/IconsPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/IconsPage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/InterfacePage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/InterfacePage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/MultiProjectPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/MultiProjectPage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/NetworkPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/NetworkPage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/PluginManagerPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/PluginManagerPage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/QtPage.ui file | annotate | diff | comparison | revisions
--- a/Preferences/ConfigurationPages/HelpViewersPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpViewersPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -9,18 +9,14 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QButtonGroup
 
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_HelpViewersPage import Ui_HelpViewersPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class HelpViewersPage(ConfigurationPageBase, Ui_HelpViewersPage):
@@ -35,8 +31,7 @@
         self.setupUi(self)
         self.setObjectName("HelpViewersPage")
         
-        self.customViewerSelectionButton.setIcon(
-            UI.PixmapCache.getIcon("open.png"))
+        self.customViewerPicker.setMode(E5PathPickerModes.OpenFileMode)
         
         self.helpViewerGroup = QButtonGroup()
         self.helpViewerGroup.addButton(self.helpBrowserButton)
@@ -44,8 +39,6 @@
         self.helpViewerGroup.addButton(self.webBrowserButton)
         self.helpViewerGroup.addButton(self.customViewerButton)
         
-        self.customViewerCompleter = E5FileCompleter(self.customViewerEdit)
-        
         # set initial values
         hvId = Preferences.getHelp("HelpViewerType")
         if hvId == 1:
@@ -56,7 +49,7 @@
             self.webBrowserButton.setChecked(True)
         else:
             self.customViewerButton.setChecked(True)
-        self.customViewerEdit.setText(
+        self.customViewerPicker.setText(
             Preferences.getHelp("CustomViewer"))
         
     def save(self):
@@ -74,63 +67,7 @@
         Preferences.setHelp("HelpViewerType", hvId)
         Preferences.setHelp(
             "CustomViewer",
-            self.customViewerEdit.text())
-        
-    @pyqtSlot()
-    def on_customViewerSelectionButton_clicked(self):
-        """
-        Private slot to handle the custom viewer selection.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select Custom Viewer"),
-            self.customViewerEdit.text(),
-            "")
-        
-        if file:
-            self.customViewerEdit.setText(Utilities.toNativeSeparators(file))
-        
-    @pyqtSlot()
-    def on_webbrowserButton_clicked(self):
-        """
-        Private slot to handle the Web browser selection.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select Web-Browser"),
-            self.webbrowserEdit.text(),
-            "")
-        
-        if file:
-            self.webbrowserEdit.setText(Utilities.toNativeSeparators(file))
-        
-    @pyqtSlot()
-    def on_pdfviewerButton_clicked(self):
-        """
-        Private slot to handle the PDF viewer selection.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select PDF-Viewer"),
-            self.pdfviewerEdit.text(),
-            "")
-        
-        if file:
-            self.pdfviewerEdit.setText(Utilities.toNativeSeparators(file))
-        
-    @pyqtSlot()
-    def on_chmviewerButton_clicked(self):
-        """
-        Private slot to handle the CHM viewer selection.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select CHM-Viewer"),
-            self.chmviewerEdit.text(),
-            "")
-        
-        if file:
-            self.chmviewerEdit.setText(Utilities.toNativeSeparators(file))
+            self.customViewerPicker.text())
     
 
 def create(dlg):
--- a/Preferences/ConfigurationPages/HelpViewersPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpViewersPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -36,38 +36,17 @@
      <property name="title">
       <string>Help Viewer</string>
      </property>
-     <layout class="QGridLayout">
-      <item row="1" column="0" colspan="4">
-       <layout class="QHBoxLayout">
-        <item>
-         <widget class="QLineEdit" name="customViewerEdit">
-          <property name="enabled">
-           <bool>false</bool>
-          </property>
-          <property name="toolTip">
-           <string>Enter the custom viewer to be used</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="customViewerSelectionButton">
-          <property name="enabled">
-           <bool>false</bool>
-          </property>
-          <property name="toolTip">
-           <string>Press to select the custom viewer via a file selection dialog</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item row="0" column="3">
-       <widget class="QRadioButton" name="customViewerButton">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QRadioButton" name="helpBrowserButton">
         <property name="toolTip">
-         <string>Select to use a custom viewer</string>
+         <string>Select to use the Eric Web Browser</string>
         </property>
         <property name="text">
-         <string>Custom</string>
+         <string>Eric Web Browser</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
         </property>
        </widget>
       </item>
@@ -81,19 +60,6 @@
         </property>
        </widget>
       </item>
-      <item row="0" column="0">
-       <widget class="QRadioButton" name="helpBrowserButton">
-        <property name="toolTip">
-         <string>Select to use the Eric Web Browser</string>
-        </property>
-        <property name="text">
-         <string>Eric Web Browser</string>
-        </property>
-        <property name="checked">
-         <bool>true</bool>
-        </property>
-       </widget>
-      </item>
       <item row="0" column="2">
        <widget class="QRadioButton" name="webBrowserButton">
         <property name="toolTip">
@@ -104,6 +70,35 @@
         </property>
        </widget>
       </item>
+      <item row="0" column="3">
+       <widget class="QRadioButton" name="customViewerButton">
+        <property name="toolTip">
+         <string>Select to use a custom viewer</string>
+        </property>
+        <property name="text">
+         <string>Custom</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="4">
+       <widget class="E5PathPicker" name="customViewerPicker" native="true">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
+        <property name="toolTip">
+         <string>Enter the custom viewer to be used</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -122,29 +117,35 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>helpBrowserButton</tabstop>
   <tabstop>qtAssistantButton</tabstop>
   <tabstop>webBrowserButton</tabstop>
   <tabstop>customViewerButton</tabstop>
-  <tabstop>customViewerEdit</tabstop>
-  <tabstop>customViewerSelectionButton</tabstop>
  </tabstops>
  <resources/>
  <connections>
   <connection>
    <sender>customViewerButton</sender>
    <signal>toggled(bool)</signal>
-   <receiver>customViewerEdit</receiver>
+   <receiver>customViewerPicker</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>592</x>
-     <y>94</y>
+     <x>496</x>
+     <y>72</y>
     </hint>
     <hint type="destinationlabel">
-     <x>231</x>
-     <y>109</y>
+     <x>493</x>
+     <y>90</y>
     </hint>
    </hints>
   </connection>
--- a/Preferences/ConfigurationPages/IconsPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/IconsPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -12,15 +12,12 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QListWidgetItem
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_IconsPage import Ui_IconsPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class IconsPage(ConfigurationPageBase, Ui_IconsPage):
@@ -35,9 +32,7 @@
         self.setupUi(self)
         self.setObjectName("IconsPage")
         
-        self.iconDirectoryButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.iconDirectoryCompleter = E5DirCompleter(self.iconDirectoryEdit)
+        self.iconDirectoryPicker.setMode(E5PathPickerModes.DiretoryMode)
         
         # set initial values
         dirList = Preferences.getIcons("Path")[:]
@@ -66,7 +61,7 @@
             self.upButton.setEnabled(False)
             self.downButton.setEnabled(False)
             self.showIconsButton.setEnabled(
-                self.iconDirectoryEdit.text() != "")
+                self.iconDirectoryPicker.text() != "")
         else:
             maxIndex = self.iconDirectoryList.count() - 1
             self.upButton.setEnabled(row != 0)
@@ -74,11 +69,11 @@
             self.deleteIconDirectoryButton.setEnabled(True)
             self.showIconsButton.setEnabled(True)
         
-    def on_iconDirectoryEdit_textChanged(self, txt):
+    def on_iconDirectoryPicker_textChanged(self, txt):
         """
-        Private slot to handle the textChanged signal of the directory edit.
+        Private slot to handle the textChanged signal of the directory picker.
         
-        @param txt the text of the directory edit (string)
+        @param txt the text of the directory picker (string)
         """
         self.addIconDirectoryButton.setEnabled(txt != "")
         self.showIconsButton.setEnabled(
@@ -125,28 +120,14 @@
             self.downButton.setEnabled(True)
         
     @pyqtSlot()
-    def on_iconDirectoryButton_clicked(self):
-        """
-        Private slot to select an icon directory.
-        """
-        dir = E5FileDialog.getExistingDirectory(
-            None,
-            self.tr("Select icon directory"),
-            "",
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-            
-        if dir:
-            self.iconDirectoryEdit.setText(Utilities.toNativeSeparators(dir))
-        
-    @pyqtSlot()
     def on_addIconDirectoryButton_clicked(self):
         """
         Private slot to add the icon directory displayed to the listbox.
         """
-        dir = self.iconDirectoryEdit.text()
+        dir = self.iconDirectoryPicker.text()
         if dir:
             QListWidgetItem(dir, self.iconDirectoryList)
-            self.iconDirectoryEdit.clear()
+            self.iconDirectoryPicker.clear()
         row = self.iconDirectoryList.currentRow()
         self.on_iconDirectoryList_currentRowChanged(row)
         
@@ -166,7 +147,7 @@
         """
         Private slot to display a preview of an icons directory.
         """
-        dir = self.iconDirectoryEdit.text()
+        dir = self.iconDirectoryPicker.text()
         if not dir:
             itm = self.iconDirectoryList.currentItem()
             if itm is not None:
--- a/Preferences/ConfigurationPages/IconsPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/IconsPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -10,7 +10,7 @@
     <height>371</height>
    </rect>
   </property>
-  <layout class="QGridLayout">
+  <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0" colspan="2">
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -38,57 +38,13 @@
      </property>
     </widget>
    </item>
-   <item row="4" column="0">
-    <layout class="QHBoxLayout">
-     <item>
-      <widget class="QPushButton" name="deleteIconDirectoryButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Press to delete the selected directory from the list</string>
-       </property>
-       <property name="text">
-        <string>Delete</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="addIconDirectoryButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Press to add the entered directory to the list</string>
-       </property>
-       <property name="text">
-        <string>Add</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLineEdit" name="iconDirectoryEdit">
-       <property name="toolTip">
-        <string>Enter a directory to be added</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="iconDirectoryButton">
-       <property name="toolTip">
-        <string>Press to select an icon directory via a selection dialog</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item row="4" column="1">
-    <widget class="QPushButton" name="showIconsButton">
-     <property name="enabled">
-      <bool>false</bool>
+   <item row="3" column="0">
+    <widget class="QListWidget" name="iconDirectoryList">
+     <property name="toolTip">
+      <string>List of icon directories</string>
      </property>
-     <property name="text">
-      <string>Show</string>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
@@ -148,27 +104,77 @@
      </item>
     </layout>
    </item>
-   <item row="3" column="0">
-    <widget class="QListWidget" name="iconDirectoryList">
-     <property name="toolTip">
-      <string>List of icon directories</string>
+   <item row="4" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="deleteIconDirectoryButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="toolTip">
+        <string>Press to delete the selected directory from the list</string>
+       </property>
+       <property name="text">
+        <string>Delete</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="addIconDirectoryButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="toolTip">
+        <string>Press to add the entered directory to the list</string>
+       </property>
+       <property name="text">
+        <string>Add</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="E5PathPicker" name="iconDirectoryPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::StrongFocus</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="4" column="1">
+    <widget class="QPushButton" name="showIconsButton">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
-     <property name="alternatingRowColors">
-      <bool>true</bool>
+     <property name="text">
+      <string>Show</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>iconDirectoryList</tabstop>
   <tabstop>upButton</tabstop>
   <tabstop>downButton</tabstop>
   <tabstop>deleteIconDirectoryButton</tabstop>
-  <tabstop>iconDirectoryEdit</tabstop>
-  <tabstop>iconDirectoryButton</tabstop>
+  <tabstop>addIconDirectoryButton</tabstop>
+  <tabstop>iconDirectoryPicker</tabstop>
   <tabstop>showIconsButton</tabstop>
-  <tabstop>addIconDirectoryButton</tabstop>
  </tabstops>
  <resources/>
  <connections/>
--- a/Preferences/ConfigurationPages/InterfacePage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/InterfacePage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -15,15 +15,13 @@
 from PyQt5.QtCore import pyqtSlot, QTranslator
 from PyQt5.QtWidgets import QStyleFactory
 
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_InterfacePage import Ui_InterfacePage
 
 import Preferences
 import Utilities
-import UI.PixmapCache
 
 from eric6config import getConfig
 
@@ -40,9 +38,10 @@
         self.setupUi(self)
         self.setObjectName("InterfacePage")
         
-        self.styleSheetButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.styleSheetCompleter = E5FileCompleter(self.styleSheetEdit)
+        self.styleSheetPicker.setMode(E5PathPickerModes.OpenFileMode)
+        self.styleSheetPicker.setFilters(self.tr(
+            "Qt Style Sheets (*.qss);;Cascading Style Sheets (*.css);;"
+            "All files (*)"))
         
         # set initial values
         self.__populateStyleCombo()
@@ -63,7 +62,7 @@
             Preferences.getUI("CaptionShowsFilename"))
         self.filenameLengthSpinBox.setValue(
             Preferences.getUI("CaptionFilenameLength"))
-        self.styleSheetEdit.setText(Preferences.getUI("StyleSheet"))
+        self.styleSheetPicker.setText(Preferences.getUI("StyleSheet"))
         
         if Preferences.getUI("TopLeftByLeft"):
             self.tlLeftButton.setChecked(True)
@@ -141,7 +140,7 @@
             self.filenameLengthSpinBox.value())
         Preferences.setUI(
             "StyleSheet",
-            self.styleSheetEdit.text())
+            self.styleSheetPicker.text())
         
         # save the dockarea corner settings
         Preferences.setUI(
@@ -247,22 +246,6 @@
         self.languageComboBox.setCurrentIndex(currentIndex)
         
     @pyqtSlot()
-    def on_styleSheetButton_clicked(self):
-        """
-        Private method to select the style sheet file via a dialog.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select style sheet file"),
-            self.styleSheetEdit.text(),
-            self.tr(
-                "Qt Style Sheets (*.qss);;Cascading Style Sheets (*.css);;"
-                "All files (*)"))
-        
-        if file:
-            self.styleSheetEdit.setText(Utilities.toNativeSeparators(file))
-        
-    @pyqtSlot()
     def on_resetLayoutButton_clicked(self):
         """
         Private method to reset layout to factory defaults.
--- a/Preferences/ConfigurationPages/InterfacePage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/InterfacePage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -156,7 +156,7 @@
     </widget>
    </item>
    <item>
-    <layout class="QGridLayout">
+    <layout class="QGridLayout" name="gridLayout_3">
      <item row="0" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
@@ -164,7 +164,7 @@
        </property>
       </widget>
      </item>
-     <item row="0" column="1" colspan="2">
+     <item row="0" column="1">
       <widget class="QComboBox" name="styleComboBox">
        <property name="toolTip">
         <string>Select the interface style</string>
@@ -179,16 +179,18 @@
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QLineEdit" name="styleSheetEdit">
-       <property name="toolTip">
-        <string>Enter the name of the style sheet file</string>
+      <widget class="E5PathPicker" name="styleSheetPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
        </property>
-      </widget>
-     </item>
-     <item row="1" column="2">
-      <widget class="QToolButton" name="styleSheetButton">
+       <property name="focusPolicy">
+        <enum>Qt::StrongFocus</enum>
+       </property>
        <property name="toolTip">
-        <string>Select the style sheet file via a file selection dialog</string>
+        <string>Enter the path of the style sheet file</string>
        </property>
       </widget>
      </item>
@@ -563,6 +565,14 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>uiBrowsersListFoldersFirstCheckBox</tabstop>
   <tabstop>uiBrowsersHideNonPublicCheckBox</tabstop>
@@ -572,8 +582,7 @@
   <tabstop>uiCaptionShowsFilenameGroupBox</tabstop>
   <tabstop>filenameLengthSpinBox</tabstop>
   <tabstop>styleComboBox</tabstop>
-  <tabstop>styleSheetEdit</tabstop>
-  <tabstop>styleSheetButton</tabstop>
+  <tabstop>styleSheetPicker</tabstop>
   <tabstop>tlTopButton</tabstop>
   <tabstop>tlLeftButton</tabstop>
   <tabstop>trTopButton</tabstop>
--- a/Preferences/ConfigurationPages/MultiProjectPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/MultiProjectPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -9,16 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
-
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_MultiProjectPage import Ui_MultiProjectPage
 
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 import Preferences
 import Utilities
-import UI.PixmapCache
 
 
 class MultiProjectPage(ConfigurationPageBase, Ui_MultiProjectPage):
@@ -33,7 +30,7 @@
         self.setupUi(self)
         self.setObjectName("MultiProjectPage")
         
-        self.workspaceButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.workspacePicker.setMode(E5PathPickerModes.DiretoryMode)
         
         # set initial values
         self.openMasterAutomaticallyCheckBox.setChecked(
@@ -42,7 +39,7 @@
             Preferences.getMultiProject("XMLTimestamp"))
         self.multiProjectRecentSpinBox.setValue(
             Preferences.getMultiProject("RecentNumber"))
-        self.workspaceEdit.setText(
+        self.workspacePicker.setText(
             Utilities.toNativeSeparators(
                 Preferences.getMultiProject("Workspace") or
                 Utilities.getHomeDir()))
@@ -62,24 +59,7 @@
             self.multiProjectRecentSpinBox.value())
         Preferences.setMultiProject(
             "Workspace",
-            self.workspaceEdit.text())
-    
-    @pyqtSlot()
-    def on_workspaceButton_clicked(self):
-        """
-        Private slot to display a directory selection dialog.
-        """
-        default = self.workspaceEdit.text()
-        if default == "":
-            default = Utilities.getHomeDir()
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select Workspace Directory"),
-            default,
-            E5FileDialog.Options(0))
-        
-        if directory:
-            self.workspaceEdit.setText(Utilities.toNativeSeparators(directory))
+            self.workspacePicker.text())
     
 
 def create(dlg):
--- a/Preferences/ConfigurationPages/MultiProjectPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/MultiProjectPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>494</width>
-    <height>359</height>
+    <height>362</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
@@ -38,21 +38,19 @@
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
-       <widget class="QLineEdit" name="workspaceEdit">
+       <widget class="E5PathPicker" name="workspacePicker" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
         <property name="toolTip">
          <string>Enter the name of the workspace directory</string>
         </property>
-        <property name="whatsThis">
-         <string>&lt;b&gt;Workspace Directory&lt;/b&gt;
-&lt;p&gt;Enter the directory of the workspace. This directory is used as the default for opening or saving new files or projects.&lt;/p&gt;</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QToolButton" name="workspaceButton">
-        <property name="toolTip">
-         <string>Select the workspace directory via a directory selection button</string>
-        </property>
        </widget>
       </item>
      </layout>
@@ -160,9 +158,16 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>workspaceEdit</tabstop>
-  <tabstop>workspaceButton</tabstop>
+  <tabstop>workspacePicker</tabstop>
   <tabstop>openMasterAutomaticallyCheckBox</tabstop>
   <tabstop>multiProjectTimestampCheckBox</tabstop>
   <tabstop>multiProjectRecentSpinBox</tabstop>
--- a/Preferences/ConfigurationPages/NetworkPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/NetworkPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -9,20 +9,16 @@
 
 from __future__ import unicode_literals
 
-import os
-
 from PyQt5.QtCore import pyqtSlot
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
+
 from E5Network.E5Ftp import E5FtpProxyType
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_NetworkPage import Ui_NetworkPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class NetworkPage(ConfigurationPageBase, Ui_NetworkPage):
@@ -37,9 +33,7 @@
         self.setupUi(self)
         self.setObjectName("NetworkPage")
         
-        self.downloadDirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.downloadDirCompleter = E5DirCompleter(self.downloadDirEdit)
+        self.downloadDirPicker.setMode(E5PathPickerModes.DiretoryMode)
         
         self.ftpProxyTypeCombo.addItem(
             self.tr("No FTP Proxy"), E5FtpProxyType.NoProxy)
@@ -63,7 +57,7 @@
             self.tr("Bluecoat Proxy"), E5FtpProxyType.Bluecoat)
         
         # set initial values
-        self.downloadDirEdit.setText(Preferences.getUI("DownloadPath"))
+        self.downloadDirPicker.setText(Preferences.getUI("DownloadPath"))
         self.requestFilenameCheckBox.setChecked(
             Preferences.getUI("RequestDownloadFilename"))
         policy = Preferences.getHelp("DownloadManagerRemovePolicy")
@@ -120,7 +114,7 @@
         """
         Preferences.setUI(
             "DownloadPath",
-            self.downloadDirEdit.text())
+            self.downloadDirPicker.text())
         Preferences.setUI(
             "RequestDownloadFilename",
             self.requestFilenameCheckBox.isChecked())
@@ -186,23 +180,6 @@
             self.ftpProxyAccountEdit.text())
     
     @pyqtSlot()
-    def on_downloadDirButton_clicked(self):
-        """
-        Private slot to handle the directory selection via dialog.
-        """
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select download directory"),
-            self.downloadDirEdit.text(),
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-            
-        if directory:
-            dn = Utilities.toNativeSeparators(directory)
-            while dn.endswith(os.sep):
-                dn = dn[:-1]
-            self.downloadDirEdit.setText(dn)
-    
-    @pyqtSlot()
     def on_clearProxyPasswordsButton_clicked(self):
         """
         Private slot to clear the saved HTTP(S) proxy passwords.
--- a/Preferences/ConfigurationPages/NetworkPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/NetworkPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -47,19 +47,21 @@
          </widget>
         </item>
         <item>
-         <widget class="QLineEdit" name="downloadDirEdit">
+         <widget class="E5PathPicker" name="downloadDirPicker" native="true">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::StrongFocus</enum>
+          </property>
           <property name="toolTip">
            <string>Enter the download directory (leave empty to use the default location)</string>
           </property>
          </widget>
         </item>
-        <item>
-         <widget class="QToolButton" name="downloadDirButton">
-          <property name="toolTip">
-           <string>Select the download directory via a directory selection dialog</string>
-          </property>
-         </widget>
-        </item>
        </layout>
       </item>
       <item>
@@ -442,9 +444,16 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>downloadDirEdit</tabstop>
-  <tabstop>downloadDirButton</tabstop>
+  <tabstop>downloadDirPicker</tabstop>
   <tabstop>requestFilenameCheckBox</tabstop>
   <tabstop>cleanupNeverButton</tabstop>
   <tabstop>cleanupExitButton</tabstop>
--- a/Preferences/ConfigurationPages/PluginManagerPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/PluginManagerPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -9,19 +9,14 @@
 
 from __future__ import unicode_literals
 
-import os
-
 from PyQt5.QtCore import pyqtSlot
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_PluginManagerPage import Ui_PluginManagerPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class PluginManagerPage(ConfigurationPageBase, Ui_PluginManagerPage):
@@ -36,14 +31,12 @@
         self.setupUi(self)
         self.setObjectName("PluginManagerPage")
         
-        self.downloadDirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.downloadDirCompleter = E5DirCompleter(self.downloadDirEdit)
+        self.downloadDirPicker.setMode(E5PathPickerModes.DiretoryMode)
         
         # set initial values
         self.activateExternalPluginsCheckBox.setChecked(
             Preferences.getPluginManager("ActivateExternal"))
-        self.downloadDirEdit.setText(
+        self.downloadDirPicker.setText(
             Preferences.getPluginManager("DownloadPath"))
         self.generationsSpinBox.setValue(
             Preferences.getPluginManager("KeepGenerations"))
@@ -75,7 +68,7 @@
             self.activateExternalPluginsCheckBox.isChecked())
         Preferences.setPluginManager(
             "DownloadPath",
-            self.downloadDirEdit.text())
+            self.downloadDirPicker.text())
         Preferences.setPluginManager(
             "KeepGenerations",
             self.generationsSpinBox.value())
@@ -101,23 +94,6 @@
             Preferences.setUI(
                 "PluginRepositoryUrl6", self.repositoryUrlEdit.text())
     
-    @pyqtSlot()
-    def on_downloadDirButton_clicked(self):
-        """
-        Private slot to handle the directory selection via dialog.
-        """
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select plugins download directory"),
-            self.downloadDirEdit.text(),
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-            
-        if directory:
-            dn = Utilities.toNativeSeparators(directory)
-            while dn.endswith(os.sep):
-                dn = dn[:-1]
-            self.downloadDirEdit.setText(dn)
-    
     @pyqtSlot(bool)
     def on_repositoryUrlEditButton_toggled(self, checked):
         """
--- a/Preferences/ConfigurationPages/PluginManagerPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/PluginManagerPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -41,19 +41,21 @@
       </widget>
      </item>
      <item>
-      <widget class="QLineEdit" name="downloadDirEdit">
+      <widget class="E5PathPicker" name="downloadDirPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::StrongFocus</enum>
+       </property>
        <property name="toolTip">
         <string>Enter the plugins download directory</string>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QToolButton" name="downloadDirButton">
-       <property name="toolTip">
-        <string>Select the plugins download directory via a directory selection dialog</string>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item>
@@ -233,9 +235,16 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>downloadDirEdit</tabstop>
-  <tabstop>downloadDirButton</tabstop>
+  <tabstop>downloadDirPicker</tabstop>
   <tabstop>generationsSpinBox</tabstop>
   <tabstop>keepHiddenCheckBox</tabstop>
   <tabstop>activateExternalPluginsCheckBox</tabstop>
--- a/Preferences/ConfigurationPages/QtPage.py	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/QtPage.py	Fri Nov 27 20:06:52 2015 +0100
@@ -11,15 +11,12 @@
 
 from PyQt5.QtCore import pyqtSlot
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_QtPage import Ui_QtPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class QtPage(ConfigurationPageBase, Ui_QtPage):
@@ -34,12 +31,10 @@
         self.setupUi(self)
         self.setObjectName("QtPage")
         
-        self.qt4TransButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.qt4TransCompleter = E5DirCompleter(self.qt4TransEdit)
+        self.qt4TransPicker.setMode(E5PathPickerModes.DiretoryMode)
         
         # set initial values
-        self.qt4TransEdit.setText(Preferences.getQt("Qt4TranslationsDir"))
+        self.qt4TransPicker.setText(Preferences.getQt("Qt4TranslationsDir"))
         self.qt4PrefixEdit.setText(Preferences.getQt("QtToolsPrefix4"))
         self.qt4PostfixEdit.setText(Preferences.getQt("QtToolsPostfix4"))
         self.__updateQt4Sample()
@@ -51,27 +46,13 @@
         """
         Public slot to save the Qt configuration.
         """
-        Preferences.setQt("Qt4TranslationsDir", self.qt4TransEdit.text())
+        Preferences.setQt("Qt4TranslationsDir", self.qt4TransPicker.text())
         Preferences.setQt("QtToolsPrefix4", self.qt4PrefixEdit.text())
         Preferences.setQt("QtToolsPostfix4", self.qt4PostfixEdit.text())
         Preferences.setQt("PyuicIndent", self.pyuicIndentSpinBox.value())
         Preferences.setQt("PyuicFromImports",
                           self.pyuicImportsCheckBox.isChecked())
         
-    @pyqtSlot()
-    def on_qt4TransButton_clicked(self):
-        """
-        Private slot to handle the Qt4 translations directory selection.
-        """
-        dir = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select Qt4 Translations Directory"),
-            self.qt4TransEdit.text(),
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-            
-        if dir:
-            self.qt4TransEdit.setText(Utilities.toNativeSeparators(dir))
-        
     def __updateQt4Sample(self):
         """
         Private slot to update the Qt4 tools sample label.
--- a/Preferences/ConfigurationPages/QtPage.ui	Thu Nov 26 19:47:09 2015 +0100
+++ b/Preferences/ConfigurationPages/QtPage.ui	Fri Nov 27 20:06:52 2015 +0100
@@ -10,7 +10,7 @@
     <height>614</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -36,22 +36,31 @@
      <property name="title">
       <string>Qt Translations Directory</string>
      </property>
-     <layout class="QGridLayout">
-      <item row="1" column="0">
-       <widget class="QLineEdit" name="qt4TransEdit">
-        <property name="toolTip">
-         <string>Enter the path of the Qt translations directory.</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="0" colspan="2">
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
        <widget class="QLabel" name="TextLabel1_2_2_5">
         <property name="text">
          <string>&lt;font color=&quot;#FF0000&quot;&gt;&lt;b&gt;Note:&lt;/b&gt; This setting is activated at the next startup of the application.&lt;/font&gt;</string>
         </property>
        </widget>
       </item>
-      <item row="2" column="0" colspan="2">
+      <item>
+       <widget class="E5PathPicker" name="qt4TransPicker" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
+        <property name="toolTip">
+         <string>Enter the path of the Qt translations directory.</string>
+        </property>
+       </widget>
+      </item>
+      <item>
        <widget class="QLabel" name="textLabel1_2_4">
         <property name="text">
          <string>&lt;b&gt;Note:&lt;/b&gt; Leave this entry empty to use the QT4TRANSLATIONSDIR environment variable or the path compiled into the Qt library.</string>
@@ -61,13 +70,6 @@
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="QToolButton" name="qt4TransButton">
-        <property name="toolTip">
-         <string>Press to select the Qt translations directory via a directory selection dialog</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -204,9 +206,16 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>qt4TransEdit</tabstop>
-  <tabstop>qt4TransButton</tabstop>
+  <tabstop>qt4TransPicker</tabstop>
   <tabstop>qt4PrefixEdit</tabstop>
   <tabstop>qt4PostfixEdit</tabstop>
   <tabstop>pyuicIndentSpinBox</tabstop>

eric ide

mercurial