Modified more dialogs to use the path picker widgets.

Sat, 28 Nov 2015 19:48:11 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 28 Nov 2015 19:48:11 +0100
changeset 4582
3a1d1d4c6f4f
parent 4581
76999ca7bbf1
child 4584
cc838476ad58

Modified more dialogs to use the path picker widgets.

Debugger/StartCoverageDialog.ui file | annotate | diff | comparison | revisions
Debugger/StartDebugDialog.ui file | annotate | diff | comparison | revisions
Debugger/StartDialog.py file | annotate | diff | comparison | revisions
Debugger/StartProfileDialog.ui file | annotate | diff | comparison | revisions
Debugger/StartRunDialog.ui file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/BookmarksImportDialog.py file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/BookmarksImportDialog.ui file | annotate | diff | comparison | revisions
Helpviewer/Sync/SyncDirectorySettingsPage.py file | annotate | diff | comparison | revisions
Helpviewer/Sync/SyncDirectorySettingsPage.ui file | annotate | diff | comparison | revisions
MultiProject/AddProjectDialog.py file | annotate | diff | comparison | revisions
MultiProject/AddProjectDialog.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpAppearancePage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpFlashCookieManagerPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpInterfacePage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpInterfacePage.ui file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/IconsPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/MultiProjectPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/NetworkPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/PluginManagerPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
Preferences/ToolConfigurationDialog.py file | annotate | diff | comparison | revisions
Preferences/ToolConfigurationDialog.ui file | annotate | diff | comparison | revisions
Project/AddDirectoryDialog.py file | annotate | diff | comparison | revisions
Project/AddDirectoryDialog.ui file | annotate | diff | comparison | revisions
Project/AddFileDialog.py file | annotate | diff | comparison | revisions
Project/AddFileDialog.ui file | annotate | diff | comparison | revisions
Project/DebuggerPropertiesDialog.py file | annotate | diff | comparison | revisions
Project/DebuggerPropertiesDialog.ui file | annotate | diff | comparison | revisions
Project/NewDialogClassDialog.py file | annotate | diff | comparison | revisions
Project/NewDialogClassDialog.ui file | annotate | diff | comparison | revisions
Project/PropertiesDialog.py file | annotate | diff | comparison | revisions
Project/PropertiesDialog.ui file | annotate | diff | comparison | revisions
Project/SpellingPropertiesDialog.py file | annotate | diff | comparison | revisions
Project/SpellingPropertiesDialog.ui file | annotate | diff | comparison | revisions
Project/TranslationPropertiesDialog.py file | annotate | diff | comparison | revisions
Project/TranslationPropertiesDialog.ui file | annotate | diff | comparison | revisions
PyUnit/UnittestDialog.py file | annotate | diff | comparison | revisions
PyUnit/UnittestDialog.ui file | annotate | diff | comparison | revisions
--- a/Debugger/StartCoverageDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Debugger/StartCoverageDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>488</width>
-    <height>225</height>
+    <height>186</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,193 +16,192 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="TextLabel1">
-     <property name="text">
-      <string>Command&amp;line:</string>
-     </property>
-     <property name="buddy">
-      <cstring>cmdlineCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1" colspan="3">
-    <widget class="QComboBox" name="cmdlineCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the commandline parameters</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Commandline&lt;/b&gt;
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="TextLabel1">
+       <property name="text">
+        <string>Command&amp;line:</string>
+       </property>
+       <property name="buddy">
+        <cstring>cmdlineCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="cmdlineCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the commandline parameters</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Commandline&lt;/b&gt;
 &lt;p&gt;Enter the commandline parameters in this field.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="TextLabel2">
-     <property name="text">
-      <string>&amp;Working directory:</string>
-     </property>
-     <property name="buddy">
-      <cstring>workdirCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" colspan="2">
-    <widget class="QComboBox" name="workdirCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the working directory</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Working directory&lt;/b&gt;
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="TextLabel2">
+       <property name="text">
+        <string>&amp;Working directory:</string>
+       </property>
+       <property name="buddy">
+        <cstring>workdirPicker</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="E5ComboPathPicker" name="workdirPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::WheelFocus</enum>
+       </property>
+       <property name="toolTip">
+        <string>Enter the working directory</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Working directory&lt;/b&gt;
 &lt;p&gt;Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="textLabel1">
-     <property name="text">
-      <string>&amp;Environment:</string>
-     </property>
-     <property name="buddy">
-      <cstring>environmentCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="1" colspan="3">
-    <widget class="QComboBox" name="environmentCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the environment variables to be set.</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Environment&lt;/b&gt;
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="textLabel1">
+       <property name="text">
+        <string>&amp;Environment:</string>
+       </property>
+       <property name="buddy">
+        <cstring>environmentCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QComboBox" name="environmentCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the environment variables to be set.</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Environment&lt;/b&gt;
 &lt;p&gt;Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.&lt;/p&gt;
 &lt;p&gt;Example: var1=1 var2=&quot;hello world&quot; var3+=&quot;:/tmp&quot;&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="3" column="0" colspan="2">
-    <widget class="QCheckBox" name="exceptionCheckBox">
-     <property name="toolTip">
-      <string>Uncheck to disable exception reporting</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Report exceptions&lt;/b&gt;
-&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Report &amp;exceptions</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+E</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="3" column="2">
-    <widget class="QCheckBox" name="clearShellCheckBox">
-     <property name="toolTip">
-      <string>Select to clear the display of the interpreter window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Clear &amp;interpreter window</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="0" colspan="2">
-    <widget class="QCheckBox" name="consoleCheckBox">
-     <property name="toolTip">
-      <string>Select to start the debugger in a console window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Start in console&lt;/b&gt;
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QCheckBox" name="exceptionCheckBox">
+       <property name="toolTip">
+        <string>Uncheck to disable exception reporting</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Report exceptions&lt;/b&gt;
+&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Report &amp;exceptions</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+E</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QCheckBox" name="clearShellCheckBox">
+       <property name="toolTip">
+        <string>Select to clear the display of the interpreter window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Clear &amp;interpreter window</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QCheckBox" name="consoleCheckBox">
+       <property name="toolTip">
+        <string>Select to start the debugger in a console window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Start in console&lt;/b&gt;
 &lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Start in console</string>
-     </property>
-    </widget>
+       </property>
+       <property name="text">
+        <string>Start in console</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QCheckBox" name="eraseCheckBox">
+       <property name="toolTip">
+        <string>Select this to erase the collected coverage information</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Erase coverage information&lt;/b&gt;
+&lt;p&gt;Select this to erase the collected coverage information before the next coverage run.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Erase &amp;coverage information</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+C</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="5" column="0" colspan="4">
-    <widget class="QCheckBox" name="eraseCheckBox">
-     <property name="toolTip">
-      <string>Select this to erase the collected coverage information</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Erase coverage information&lt;/b&gt;
-&lt;p&gt;Select this to erase the collected coverage information before the next coverage run.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Erase &amp;coverage information</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+C</string>
-     </property>
-    </widget>
-   </item>
-   <item row="6" column="0" colspan="4">
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -212,31 +211,26 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="3">
-    <widget class="QToolButton" name="dirButton">
-     <property name="toolTip">
-      <string>Select directory using a directory selection dialog</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Select directory&lt;/b&gt;
-&lt;p&gt;Select the working directory via a directory selection dialog.&lt;/p&gt;</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5ComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>cmdlineCombo</tabstop>
-  <tabstop>workdirCombo</tabstop>
-  <tabstop>dirButton</tabstop>
+  <tabstop>workdirPicker</tabstop>
   <tabstop>environmentCombo</tabstop>
   <tabstop>exceptionCheckBox</tabstop>
   <tabstop>clearShellCheckBox</tabstop>
   <tabstop>consoleCheckBox</tabstop>
   <tabstop>eraseCheckBox</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Debugger/StartDebugDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Debugger/StartDebugDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>488</width>
-    <height>300</height>
+    <height>284</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,205 +16,204 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="TextLabel1">
-     <property name="text">
-      <string>Command&amp;line:</string>
-     </property>
-     <property name="buddy">
-      <cstring>cmdlineCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1" colspan="3">
-    <widget class="QComboBox" name="cmdlineCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the commandline parameters</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Commandline&lt;/b&gt;
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="TextLabel1">
+       <property name="text">
+        <string>Command&amp;line:</string>
+       </property>
+       <property name="buddy">
+        <cstring>cmdlineCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="cmdlineCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the commandline parameters</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Commandline&lt;/b&gt;
 &lt;p&gt;Enter the commandline parameters in this field.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="TextLabel2">
-     <property name="text">
-      <string>&amp;Working directory:</string>
-     </property>
-     <property name="buddy">
-      <cstring>workdirCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" colspan="2">
-    <widget class="QComboBox" name="workdirCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the working directory</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Working directory&lt;/b&gt;
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="TextLabel2">
+       <property name="text">
+        <string>&amp;Working directory:</string>
+       </property>
+       <property name="buddy">
+        <cstring>workdirPicker</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="E5ComboPathPicker" name="workdirPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::WheelFocus</enum>
+       </property>
+       <property name="toolTip">
+        <string>Enter the working directory</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Working directory&lt;/b&gt;
 &lt;p&gt;Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="textLabel1">
-     <property name="text">
-      <string>&amp;Environment:</string>
-     </property>
-     <property name="buddy">
-      <cstring>environmentCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="1" colspan="3">
-    <widget class="QComboBox" name="environmentCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the environment variables to be set.</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Environment&lt;/b&gt;
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="textLabel1">
+       <property name="text">
+        <string>&amp;Environment:</string>
+       </property>
+       <property name="buddy">
+        <cstring>environmentCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QComboBox" name="environmentCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the environment variables to be set.</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Environment&lt;/b&gt;
 &lt;p&gt;Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.&lt;/p&gt;
 &lt;p&gt;Example: var1=1 var2=&quot;hello world&quot; var3+=&quot;:/tmp&quot;&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="3" column="0" colspan="2">
-    <widget class="QCheckBox" name="exceptionCheckBox">
-     <property name="toolTip">
-      <string>Uncheck to disable exception reporting</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Report exceptions&lt;/b&gt;
-&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Report &amp;exceptions</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+E</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="3" column="2" colspan="2">
-    <widget class="QCheckBox" name="clearShellCheckBox">
-     <property name="toolTip">
-      <string>Select to clear the display of the interpreter window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Clear &amp;interpreter window</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="0" colspan="2">
-    <widget class="QCheckBox" name="consoleCheckBox">
-     <property name="toolTip">
-      <string>Select to start the debugger in a console window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Start in console&lt;/b&gt;
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QCheckBox" name="exceptionCheckBox">
+       <property name="toolTip">
+        <string>Uncheck to disable exception reporting</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Report exceptions&lt;/b&gt;
+&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Report &amp;exceptions</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+E</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QCheckBox" name="clearShellCheckBox">
+       <property name="toolTip">
+        <string>Select to clear the display of the interpreter window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Clear &amp;interpreter window</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QCheckBox" name="consoleCheckBox">
+       <property name="toolTip">
+        <string>Select to start the debugger in a console window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Start in console&lt;/b&gt;
 &lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Start in console</string>
-     </property>
-    </widget>
+       </property>
+       <property name="text">
+        <string>Start in console</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QCheckBox" name="tracePythonCheckBox">
+       <property name="toolTip">
+        <string>Select to trace into the Python library</string>
+       </property>
+       <property name="text">
+        <string>&amp;Trace into interpreter libraries</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+T</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QCheckBox" name="autoContinueCheckBox">
+       <property name="toolTip">
+        <string>Select to not stop the debugger at the first executable line.</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Don't stop at first line&lt;/b&gt;&lt;p&gt;This prevents the debugger from stopping at the first executable line.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Don't stop at first line</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="5" column="0" colspan="2">
-    <widget class="QCheckBox" name="tracePythonCheckBox">
-     <property name="toolTip">
-      <string>Select to trace into the Python library</string>
-     </property>
-     <property name="text">
-      <string>&amp;Trace into interpreter libraries</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+T</string>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="2" colspan="2">
-    <widget class="QCheckBox" name="autoContinueCheckBox">
-     <property name="toolTip">
-      <string>Select to not stop the debugger at the first executable line.</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Don't stop at first line&lt;/b&gt;&lt;p&gt;This prevents the debugger from stopping at the first executable line.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Don't stop at first line</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="6" column="0" colspan="4">
+   <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>Forking</string>
@@ -254,7 +253,7 @@
      </layout>
     </widget>
    </item>
-   <item row="7" column="0" colspan="4">
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -264,25 +263,21 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="3">
-    <widget class="QToolButton" name="dirButton">
-     <property name="toolTip">
-      <string>Select directory using a directory selection dialog</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Select directory&lt;/b&gt;
-&lt;p&gt;Select the working directory via a directory selection dialog.&lt;/p&gt;</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5ComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>cmdlineCombo</tabstop>
-  <tabstop>workdirCombo</tabstop>
-  <tabstop>dirButton</tabstop>
+  <tabstop>workdirPicker</tabstop>
   <tabstop>environmentCombo</tabstop>
   <tabstop>exceptionCheckBox</tabstop>
   <tabstop>clearShellCheckBox</tabstop>
@@ -291,7 +286,6 @@
   <tabstop>autoContinueCheckBox</tabstop>
   <tabstop>forkModeCheckBox</tabstop>
   <tabstop>forkChildCheckBox</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Debugger/StartDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Debugger/StartDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -9,15 +9,11 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
-import Utilities
 import Preferences
-import UI.PixmapCache
 
 
 class StartDialog(QDialog):
@@ -78,22 +74,22 @@
             from .Ui_StartProfileDialog import Ui_StartProfileDialog
             self.ui = Ui_StartProfileDialog()
         self.ui.setupUi(self)
-        self.ui.dirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.ui.workdirPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.ui.workdirPicker.setDefaultDirectory(
+            Preferences.getMultiProject("Workspace"))
         
         self.clearButton = self.ui.buttonBox.addButton(
             self.tr("Clear Histories"), QDialogButtonBox.ActionRole)
         
-        self.workdirCompleter = E5DirCompleter(self.ui.workdirCombo)
-        
         self.setWindowTitle(caption)
         self.ui.cmdlineCombo.clear()
         self.ui.cmdlineCombo.addItems(argvList)
         if len(argvList) > 0:
             self.ui.cmdlineCombo.setCurrentIndex(0)
-        self.ui.workdirCombo.clear()
-        self.ui.workdirCombo.addItems(wdList)
+        self.ui.workdirPicker.clear()
+        self.ui.workdirPicker.addItems(wdList)
         if len(wdList) > 0:
-            self.ui.workdirCombo.setCurrentIndex(0)
+            self.ui.workdirPicker.setCurrentIndex(0)
         self.ui.environmentCombo.clear()
         self.ui.environmentCombo.addItems(envList)
         self.ui.exceptionCheckBox.setChecked(exceptions)
@@ -121,21 +117,6 @@
         msh = self.minimumSizeHint()
         self.resize(max(self.width(), msh.width()), msh.height())
         
-    @pyqtSlot()
-    def on_dirButton_clicked(self):
-        """
-        Private method used to open a directory selection dialog.
-        """
-        cwd = self.ui.workdirCombo.currentText()
-        d = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Working directory"),
-            cwd,
-            E5FileDialog.Options(E5FileDialog.ShowDirsOnly))
-            
-        if d:
-            self.ui.workdirCombo.setEditText(Utilities.toNativeSeparators(d))
-        
     def on_modFuncCombo_editTextChanged(self):
         """
         Private slot to enable/disable the OK button.
@@ -153,7 +134,7 @@
             flag (boolean)
         """
         cmdLine = self.ui.cmdlineCombo.currentText()
-        workdir = self.ui.workdirCombo.currentText()
+        workdir = self.ui.workdirPicker.currentText()
         environment = self.ui.environmentCombo.currentText()
         
         return (cmdLine,
@@ -224,15 +205,15 @@
         self.__clearHistoryLists = True
         
         cmdLine = self.ui.cmdlineCombo.currentText()
-        workdir = self.ui.workdirCombo.currentText()
+        workdir = self.ui.workdirPicker.currentText()
         environment = self.ui.environmentCombo.currentText()
         
         self.ui.cmdlineCombo.clear()
-        self.ui.workdirCombo.clear()
+        self.ui.workdirPicker.clear()
         self.ui.environmentCombo.clear()
         
         self.ui.cmdlineCombo.addItem(cmdLine)
-        self.ui.workdirCombo.addItem(workdir)
+        self.ui.workdirPicker.addItem(workdir)
         self.ui.environmentCombo.addItem(environment)
         
     def on_buttonBox_clicked(self, button):
--- a/Debugger/StartProfileDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Debugger/StartProfileDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>488</width>
-    <height>196</height>
+    <height>186</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,193 +16,192 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="TextLabel1">
-     <property name="text">
-      <string>Command&amp;line:</string>
-     </property>
-     <property name="buddy">
-      <cstring>cmdlineCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1" colspan="3">
-    <widget class="QComboBox" name="cmdlineCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the commandline parameters</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Commandline&lt;/b&gt;
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="TextLabel1">
+       <property name="text">
+        <string>Command&amp;line:</string>
+       </property>
+       <property name="buddy">
+        <cstring>cmdlineCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="cmdlineCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the commandline parameters</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Commandline&lt;/b&gt;
 &lt;p&gt;Enter the commandline parameters in this field.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="TextLabel2">
-     <property name="text">
-      <string>&amp;Working directory:</string>
-     </property>
-     <property name="buddy">
-      <cstring>workdirCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" colspan="2">
-    <widget class="QComboBox" name="workdirCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the working directory</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Working directory&lt;/b&gt;
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="TextLabel2">
+       <property name="text">
+        <string>&amp;Working directory:</string>
+       </property>
+       <property name="buddy">
+        <cstring>workdirPicker</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="E5ComboPathPicker" name="workdirPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::WheelFocus</enum>
+       </property>
+       <property name="toolTip">
+        <string>Enter the working directory</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Working directory&lt;/b&gt;
 &lt;p&gt;Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="textLabel1">
-     <property name="text">
-      <string>&amp;Environment:</string>
-     </property>
-     <property name="buddy">
-      <cstring>environmentCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="1" colspan="3">
-    <widget class="QComboBox" name="environmentCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the environment variables to be set.</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Environment&lt;/b&gt;
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="textLabel1">
+       <property name="text">
+        <string>&amp;Environment:</string>
+       </property>
+       <property name="buddy">
+        <cstring>environmentCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QComboBox" name="environmentCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the environment variables to be set.</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Environment&lt;/b&gt;
 &lt;p&gt;Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.&lt;/p&gt;
 &lt;p&gt;Example: var1=1 var2=&quot;hello world&quot; var3+=&quot;:/tmp&quot;&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="3" column="0" colspan="2">
-    <widget class="QCheckBox" name="exceptionCheckBox">
-     <property name="toolTip">
-      <string>Uncheck to disable exception reporting</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Report exceptions&lt;/b&gt;
-&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Report &amp;exceptions</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+E</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="3" column="2" colspan="2">
-    <widget class="QCheckBox" name="clearShellCheckBox">
-     <property name="toolTip">
-      <string>Select to clear the display of the interpreter window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Clear &amp;interpreter window</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="0" colspan="2">
-    <widget class="QCheckBox" name="consoleCheckBox">
-     <property name="toolTip">
-      <string>Select to start the debugger in a console window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Start in console&lt;/b&gt;
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QCheckBox" name="exceptionCheckBox">
+       <property name="toolTip">
+        <string>Uncheck to disable exception reporting</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Report exceptions&lt;/b&gt;
+&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Report &amp;exceptions</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+E</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QCheckBox" name="clearShellCheckBox">
+       <property name="toolTip">
+        <string>Select to clear the display of the interpreter window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Clear &amp;interpreter window</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QCheckBox" name="consoleCheckBox">
+       <property name="toolTip">
+        <string>Select to start the debugger in a console window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Start in console&lt;/b&gt;
 &lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Start in console</string>
-     </property>
-    </widget>
+       </property>
+       <property name="text">
+        <string>Start in console</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QCheckBox" name="eraseCheckBox">
+       <property name="toolTip">
+        <string>Select this to erase the collected timing data</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Erase timing data&lt;/b&gt;
+&lt;p&gt;Select this to erase the collected timing data before the next profiling run.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Erase &amp;timing data</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+C</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="4" column="2" colspan="2">
-    <widget class="QCheckBox" name="eraseCheckBox">
-     <property name="toolTip">
-      <string>Select this to erase the collected timing data</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Erase timing data&lt;/b&gt;
-&lt;p&gt;Select this to erase the collected timing data before the next profiling run.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Erase &amp;timing data</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+C</string>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="0" colspan="4">
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -212,31 +211,26 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="3">
-    <widget class="QToolButton" name="dirButton">
-     <property name="toolTip">
-      <string>Select directory using a directory selection dialog</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Select directory&lt;/b&gt;
-&lt;p&gt;Select the working directory via a directory selection dialog.&lt;/p&gt;</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5ComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>cmdlineCombo</tabstop>
-  <tabstop>workdirCombo</tabstop>
-  <tabstop>dirButton</tabstop>
+  <tabstop>workdirPicker</tabstop>
   <tabstop>environmentCombo</tabstop>
   <tabstop>exceptionCheckBox</tabstop>
   <tabstop>clearShellCheckBox</tabstop>
   <tabstop>consoleCheckBox</tabstop>
   <tabstop>eraseCheckBox</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Debugger/StartRunDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Debugger/StartRunDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>488</width>
-    <height>271</height>
+    <height>257</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,176 +16,175 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="TextLabel1">
-     <property name="text">
-      <string>Command&amp;line:</string>
-     </property>
-     <property name="buddy">
-      <cstring>cmdlineCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1" colspan="3">
-    <widget class="QComboBox" name="cmdlineCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the commandline parameters</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Commandline&lt;/b&gt;
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QLabel" name="TextLabel1">
+       <property name="text">
+        <string>Command&amp;line:</string>
+       </property>
+       <property name="buddy">
+        <cstring>cmdlineCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="cmdlineCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the commandline parameters</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Commandline&lt;/b&gt;
 &lt;p&gt;Enter the commandline parameters in this field.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="TextLabel2">
-     <property name="text">
-      <string>&amp;Working directory:</string>
-     </property>
-     <property name="buddy">
-      <cstring>workdirCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" colspan="2">
-    <widget class="QComboBox" name="workdirCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the working directory</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Working directory&lt;/b&gt;
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="TextLabel2">
+       <property name="text">
+        <string>&amp;Working directory:</string>
+       </property>
+       <property name="buddy">
+        <cstring>workdirPicker</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="E5ComboPathPicker" name="workdirPicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::WheelFocus</enum>
+       </property>
+       <property name="toolTip">
+        <string>Enter the working directory</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Working directory&lt;/b&gt;
 &lt;p&gt;Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="textLabel1">
-     <property name="text">
-      <string>&amp;Environment:</string>
-     </property>
-     <property name="buddy">
-      <cstring>environmentCombo</cstring>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="1" colspan="3">
-    <widget class="QComboBox" name="environmentCombo">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Enter the environment variables to be set.</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Environment&lt;/b&gt;
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="textLabel1">
+       <property name="text">
+        <string>&amp;Environment:</string>
+       </property>
+       <property name="buddy">
+        <cstring>environmentCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QComboBox" name="environmentCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the environment variables to be set.</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Environment&lt;/b&gt;
 &lt;p&gt;Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.&lt;/p&gt;
 &lt;p&gt;Example: var1=1 var2=&quot;hello world&quot; var3+=&quot;:/tmp&quot;&lt;/p&gt;</string>
-     </property>
-     <property name="editable">
-      <bool>true</bool>
-     </property>
-     <property name="insertPolicy">
-      <enum>QComboBox::InsertAtTop</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-     </property>
-     <property name="duplicatesEnabled">
-      <bool>false</bool>
-     </property>
-    </widget>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="3" column="0" colspan="2">
-    <widget class="QCheckBox" name="exceptionCheckBox">
-     <property name="toolTip">
-      <string>Uncheck to disable exception reporting</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Report exceptions&lt;/b&gt;
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QCheckBox" name="exceptionCheckBox">
+       <property name="toolTip">
+        <string>Uncheck to disable exception reporting</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Report exceptions&lt;/b&gt;
 &lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Report &amp;exceptions</string>
-     </property>
-     <property name="shortcut">
-      <string>Alt+E</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
+       </property>
+       <property name="text">
+        <string>Report &amp;exceptions</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+E</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QCheckBox" name="clearShellCheckBox">
+       <property name="toolTip">
+        <string>Select to clear the display of the interpreter window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Clear &amp;interpreter window</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QCheckBox" name="consoleCheckBox">
+       <property name="toolTip">
+        <string>Select to start the debugger in a console window</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Start in console&lt;/b&gt;
+&lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</string>
+       </property>
+       <property name="text">
+        <string>Start in console</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="3" column="2" colspan="2">
-    <widget class="QCheckBox" name="clearShellCheckBox">
-     <property name="toolTip">
-      <string>Select to clear the display of the interpreter window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Clear &amp;interpreter window</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="0">
-    <widget class="QCheckBox" name="consoleCheckBox">
-     <property name="toolTip">
-      <string>Select to start the debugger in a console window</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Start in console&lt;/b&gt;
-&lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</string>
-     </property>
-     <property name="text">
-      <string>Start in console</string>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="0" colspan="4">
+   <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>Forking</string>
@@ -225,7 +224,7 @@
      </layout>
     </widget>
    </item>
-   <item row="6" column="0" colspan="4">
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -235,32 +234,27 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="3">
-    <widget class="QToolButton" name="dirButton">
-     <property name="toolTip">
-      <string>Select directory using a directory selection dialog</string>
-     </property>
-     <property name="whatsThis">
-      <string>&lt;b&gt;Select directory&lt;/b&gt;
-&lt;p&gt;Select the working directory via a directory selection dialog.&lt;/p&gt;</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5ComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>cmdlineCombo</tabstop>
-  <tabstop>workdirCombo</tabstop>
-  <tabstop>dirButton</tabstop>
+  <tabstop>workdirPicker</tabstop>
   <tabstop>environmentCombo</tabstop>
   <tabstop>exceptionCheckBox</tabstop>
   <tabstop>clearShellCheckBox</tabstop>
   <tabstop>consoleCheckBox</tabstop>
   <tabstop>forkModeCheckBox</tabstop>
   <tabstop>forkChildCheckBox</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Helpviewer/Bookmarks/BookmarksImportDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImportDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -14,15 +14,14 @@
 from PyQt5.QtCore import pyqtSlot, Qt, QSize
 from PyQt5.QtWidgets import QDialog, QListWidgetItem
 
-from E5Gui import E5FileDialog, E5MessageBox
+from E5Gui import E5MessageBox
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_BookmarksImportDialog import Ui_BookmarksImportDialog
 
 from . import BookmarksImporters
 
-import Utilities
 import Globals
-import UI.PixmapCache
 
 
 class BookmarksImportDialog(QDialog, Ui_BookmarksImportDialog):
@@ -40,7 +39,7 @@
         super(BookmarksImportDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.chooseButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.filePicker.setMode(E5PathPickerModes.OpenFileMode)
         
         self.sourcesList.setIconSize(QSize(48, 48))
         for icon, displayText, idText in BookmarksImporters.getImporters():
@@ -64,7 +63,7 @@
             self.nextButton.setEnabled(
                 len(self.sourcesList.selectedItems()) == 1)
         elif self.__currentPage == 1:
-            self.nextButton.setEnabled(self.fileEdit.text() != "")
+            self.nextButton.setEnabled(self.filePicker.text() != "")
     
     @pyqtSlot()
     def on_sourcesList_itemSelectionChanged(self):
@@ -74,40 +73,15 @@
         self.__enableNextButton()
     
     @pyqtSlot(str)
-    def on_fileEdit_textChanged(self, txt):
+    def on_filePicker_textChanged(self, txt):
         """
-        Private slot handling changes of the file to import bookmarks from.
+        Private slot handling changes of the file to import bookmarks form.
         
         @param txt text of the line edit (string)
         """
         self.__enableNextButton()
     
     @pyqtSlot()
-    def on_chooseButton_clicked(self):
-        """
-        Private slot to choose the bookmarks file or directory.
-        """
-        if self.__selectedSource == "ie":
-            path = E5FileDialog.getExistingDirectory(
-                self,
-                self.tr("Choose Directory ..."),
-                self.__sourceDir,
-                E5FileDialog.Options(E5FileDialog.Option(0)))
-        else:
-            if Globals.isMacPlatform():
-                filter = "*{0}".format(os.path.splitext(self.__sourceFile)[1])
-            else:
-                filter = self.__sourceFile
-            path = E5FileDialog.getOpenFileName(
-                self,
-                self.tr("Choose File ..."),
-                self.__sourceDir,
-                filter)
-        
-        if path:
-            self.fileEdit.setText(Utilities.toNativeSeparators(path))
-    
-    @pyqtSlot()
     def on_nextButton_clicked(self):
         """
         Private slot to switch to the next page.
@@ -135,13 +109,25 @@
             self.__currentPage += 1
             self.pagesWidget.setCurrentIndex(self.__currentPage)
             self.__enableNextButton()
+            
+            if self.__selectedSource == "ie":
+                self.filePicker.setMode(E5PathPickerModes.DirectoryMode)
+            else:
+                self.filePicker.setMode(E5PathPickerModes.OpenFileMode)
+                if Globals.isMacPlatform():
+                    filter = "*{0}".format(
+                        os.path.splitext(self.__sourceFile)[1])
+                else:
+                    filter = self.__sourceFile
+                self.filePicker.setFilters(filter)
+            self.filePicker.setDefaultDirectory(self.__sourceDir)
         
         elif self.__currentPage == 1:
-            if self.fileEdit.text() == "":
+            if self.filePicker.text() == "":
                 return
             
             importer = BookmarksImporters.getImporter(self.__selectedSource)
-            importer.setPath(self.fileEdit.text())
+            importer.setPath(self.filePicker.text())
             if importer.open():
                 self.__topLevelBookmarkNode = importer.importedBookmarks()
             if importer.error():
--- a/Helpviewer/Bookmarks/BookmarksImportDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImportDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>550</width>
-    <height>350</height>
+    <height>354</height>
    </rect>
   </property>
   <property name="minimumSize">
@@ -22,7 +22,7 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_2">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QStackedWidget" name="pagesWidget">
      <property name="currentIndex">
@@ -59,39 +59,31 @@
       </layout>
      </widget>
      <widget class="QWidget" name="filePage">
-      <layout class="QGridLayout" name="gridLayout">
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item row="0" column="0">
-        <widget class="QLabel" name="iconLabel">
-         <property name="minimumSize">
-          <size>
-           <width>48</width>
-           <height>48</height>
-          </size>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>48</width>
-           <height>48</height>
-          </size>
-         </property>
-        </widget>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QLabel" name="iconLabel">
+           <property name="minimumSize">
+            <size>
+             <width>48</width>
+             <height>48</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>48</width>
+             <height>48</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="importingFromLabel"/>
+         </item>
+        </layout>
        </item>
-       <item row="0" column="1" colspan="2">
-        <widget class="QLabel" name="importingFromLabel"/>
-       </item>
-       <item row="1" column="2">
+       <item>
         <spacer name="verticalSpacer">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
@@ -104,24 +96,24 @@
          </property>
         </spacer>
        </item>
-       <item row="2" column="0" colspan="3">
+       <item>
         <widget class="QLabel" name="fileLabel1">
          <property name="wordWrap">
           <bool>true</bool>
          </property>
         </widget>
        </item>
-       <item row="3" column="0" colspan="3">
+       <item>
         <widget class="QLabel" name="standardDirLabel">
          <property name="textInteractionFlags">
           <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
          </property>
         </widget>
        </item>
-       <item row="4" column="0" colspan="3">
+       <item>
         <widget class="QLabel" name="fileLabel2"/>
        </item>
-       <item row="5" column="1" colspan="2">
+       <item>
         <spacer name="verticalSpacer_2">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
@@ -134,24 +126,23 @@
          </property>
         </spacer>
        </item>
-       <item row="6" column="0" colspan="3">
-        <layout class="QHBoxLayout" name="horizontalLayout_3">
-         <item>
-          <widget class="QLineEdit" name="fileEdit">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Shows the name of the bookmarks file or directory</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QToolButton" name="chooseButton"/>
-         </item>
-        </layout>
+       <item>
+        <widget class="E5PathPicker" name="filePicker" 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 bookmarks file or directory</string>
+         </property>
+        </widget>
        </item>
-       <item row="7" column="1">
+       <item>
         <spacer name="verticalSpacer_3">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
@@ -201,12 +192,19 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>sourcesList</tabstop>
   <tabstop>nextButton</tabstop>
   <tabstop>cancelButton</tabstop>
-  <tabstop>fileEdit</tabstop>
-  <tabstop>chooseButton</tabstop>
+  <tabstop>filePicker</tabstop>
  </tabstops>
  <resources/>
  <connections/>
--- a/Helpviewer/Sync/SyncDirectorySettingsPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Helpviewer/Sync/SyncDirectorySettingsPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -9,16 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QWizardPage
 
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_SyncDirectorySettingsPage import Ui_SyncDirectorySettingsPage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class SyncDirectorySettingsPage(QWizardPage, Ui_SyncDirectorySettingsPage):
@@ -34,11 +31,10 @@
         super(SyncDirectorySettingsPage, self).__init__(parent)
         self.setupUi(self)
         
-        self.directoryButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.directoryPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.directoryPicker.setText(Preferences.getHelp("SyncDirectoryPath"))
         
-        self.directoryEdit.setText(Preferences.getHelp("SyncDirectoryPath"))
-        
-        self.directoryEdit.textChanged.connect(self.completeChanged)
+        self.directoryPicker.textChanged.connect(self.completeChanged)
     
     def nextId(self):
         """
@@ -47,9 +43,7 @@
         @return next wizard page ID (integer)
         """
         # save the settings
-        Preferences.setHelp(
-            "SyncDirectoryPath",
-            Utilities.toNativeSeparators(self.directoryEdit.text()))
+        Preferences.setHelp("SyncDirectoryPath", self.directoryPicker.text())
         
         from . import SyncGlobals
         return SyncGlobals.PageCheck
@@ -60,19 +54,4 @@
         
         @return flag indicating completeness (boolean)
         """
-        return self.directoryEdit.text() != ""
-    
-    @pyqtSlot()
-    def on_directoryButton_clicked(self):
-        """
-        Private slot to select the shared directory via a directory selection
-        dialog.
-        """
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Shared Directory"),
-            self.directoryEdit.text(),
-            E5FileDialog.Options(E5FileDialog.Option(0)))
-        
-        if directory:
-            self.directoryEdit.setText(Utilities.toNativeSeparators(directory))
+        return self.directoryPicker.text() != ""
--- a/Helpviewer/Sync/SyncDirectorySettingsPage.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Helpviewer/Sync/SyncDirectorySettingsPage.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -34,19 +34,21 @@
        </widget>
       </item>
       <item>
-       <widget class="QLineEdit" name="directoryEdit">
+       <widget class="E5PathPicker" name="directoryPicker" 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 full path of the shared directory</string>
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QToolButton" name="directoryButton">
-        <property name="toolTip">
-         <string>Select the shared directory via a directory selection dialog</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -65,6 +67,14 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
--- a/MultiProject/AddProjectDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/MultiProject/AddProjectDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -14,13 +14,11 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_AddProjectDialog import Ui_AddProjectDialog
 
 import Utilities
-import UI.PixmapCache
 
 
 class AddProjectDialog(QDialog, Ui_AddProjectDialog):
@@ -40,9 +38,8 @@
         super(AddProjectDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.fileButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.fileCompleter = E5FileCompleter(self.filenameEdit)
+        self.filenamePicker.setMode(E5PathPickerModes.OpenFileMode)
+        self.filenamePicker.setFilters(self.tr("Project Files (*.e4p)"))
         
         if categories:
             self.categoryComboBox.addItem("")
@@ -58,7 +55,7 @@
             self.setWindowTitle(self.tr("Project Properties"))
             
             self.nameEdit.setText(project['name'])
-            self.filenameEdit.setText(project['file'])
+            self.filenamePicker.setText(project['file'])
             self.descriptionEdit.setPlainText(project['description'])
             self.masterCheckBox.setChecked(project['master'])
             index = self.categoryComboBox.findText(project['category'])
@@ -67,25 +64,6 @@
             self.categoryComboBox.setCurrentIndex(index)
             self.uid = project["uid"]
     
-    @pyqtSlot()
-    def on_fileButton_clicked(self):
-        """
-        Private slot to display a file selection dialog.
-        """
-        startdir = self.filenameEdit.text()
-        if startdir or self.startdir is not None:
-            if not startdir:
-                startdir = self.startdir
-            projectFile = E5FileDialog.getOpenFileName(
-                self,
-                self.tr("Add Project"),
-                startdir,
-                self.tr("Project Files (*.e4p)"))
-            
-            if projectFile:
-                self.filenameEdit.setText(
-                    Utilities.toNativeSeparators(projectFile))
-    
     def getData(self):
         """
         Public slot to retrieve the dialogs data.
@@ -100,7 +78,7 @@
             from PyQt5.QtCore import QUuid
             self.uid = QUuid.createUuid().toString()
         
-        filename = Utilities.toNativeSeparators(self.filenameEdit.text())
+        filename = self.filenamePicker.text()
         if not os.path.isabs(filename):
             filename = Utilities.toNativeSeparators(
                 os.path.join(self.startdir, filename))
@@ -121,7 +99,7 @@
         self.__updateUi()
     
     @pyqtSlot(str)
-    def on_filenameEdit_textChanged(self, txt):
+    def on_filenamePicker_textChanged(self, txt):
         """
         Private slot called when the project filename has changed.
         
@@ -134,4 +112,4 @@
         Private method to update the dialog.
         """
         self.__okButton.setEnabled(self.nameEdit.text() != "" and
-                                   self.filenameEdit.text() != "")
+                                   self.filenamePicker.text() != "")
--- a/MultiProject/AddProjectDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/MultiProject/AddProjectDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -27,7 +27,7 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="2">
+   <item row="0" column="1">
     <widget class="QLineEdit" name="nameEdit">
      <property name="toolTip">
       <string>Enter the name of the project</string>
@@ -40,24 +40,26 @@
       <string>Project&amp;file:</string>
      </property>
      <property name="buddy">
-      <cstring>filenameEdit</cstring>
+      <cstring>filenamePicker</cstring>
      </property>
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QLineEdit" name="filenameEdit">
+    <widget class="E5PathPicker" name="filenamePicker" 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 project file</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="2">
-    <widget class="QToolButton" name="fileButton">
-     <property name="toolTip">
-      <string>Select the project file via a file selection dialog</string>
-     </property>
-    </widget>
-   </item>
    <item row="2" column="0">
     <widget class="QLabel" name="label_3">
      <property name="text">
@@ -71,7 +73,7 @@
      </property>
     </widget>
    </item>
-   <item row="2" column="1" colspan="2">
+   <item row="2" column="1">
     <widget class="QTextEdit" name="descriptionEdit">
      <property name="toolTip">
       <string>Enter a short description for the project</string>
@@ -94,7 +96,7 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="1" colspan="2">
+   <item row="3" column="1">
     <widget class="QComboBox" name="categoryComboBox">
      <property name="toolTip">
       <string>Select a project category</string>
@@ -104,7 +106,7 @@
      </property>
     </widget>
    </item>
-   <item row="4" column="0" colspan="3">
+   <item row="4" column="0" colspan="2">
     <widget class="QCheckBox" name="masterCheckBox">
      <property name="toolTip">
       <string>Select to make this project the main project</string>
@@ -114,7 +116,7 @@
      </property>
     </widget>
    </item>
-   <item row="5" column="0" colspan="3">
+   <item row="5" column="0" colspan="2">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -126,14 +128,20 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>nameEdit</tabstop>
-  <tabstop>filenameEdit</tabstop>
-  <tabstop>fileButton</tabstop>
+  <tabstop>filenamePicker</tabstop>
   <tabstop>descriptionEdit</tabstop>
   <tabstop>categoryComboBox</tabstop>
   <tabstop>masterCheckBox</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Preferences/ConfigurationPages/HelpAppearancePage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpAppearancePage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -32,6 +32,8 @@
         self.setObjectName("HelpAppearancePage")
         
         self.styleSheetPicker.setMode(E5PathPickerModes.OpenFileMode)
+        self.styleSheetPicker.setFilters(self.tr(
+            "Cascading Style Sheets (*.css);;All files (*)"))
         
         self.__displayMode = None
         
--- a/Preferences/ConfigurationPages/HelpFlashCookieManagerPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpFlashCookieManagerPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -30,7 +30,7 @@
         self.setupUi(self)
         self.setObjectName("HelpFlashCookieManagerPage")
         
-        self.flashDataPathPicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.flashDataPathPicker.setMode(E5PathPickerModes.DirectoryMode)
         
         # set initial values
         self.flashDataPathPicker.setText(
--- a/Preferences/ConfigurationPages/HelpInterfacePage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpInterfacePage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -9,18 +9,14 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
 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_HelpInterfacePage import Ui_HelpInterfacePage
 
 import Preferences
-import Utilities
-import UI.PixmapCache
 
 
 class HelpInterfacePage(ConfigurationPageBase, Ui_HelpInterfacePage):
@@ -36,13 +32,14 @@
         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()
-        self.styleSheetEdit.setText(Preferences.getUI("StyleSheet"))
+        self.styleSheetPicker.setText(Preferences.getUI("StyleSheet"))
     
     def save(self):
         """
@@ -54,7 +51,7 @@
         Preferences.setUI("Style", style)
         Preferences.setUI(
             "StyleSheet",
-            self.styleSheetEdit.text())
+            self.styleSheetPicker.text())
     
     def __populateStyleCombo(self):
         """
@@ -69,22 +66,6 @@
         if currentIndex == -1:
             currentIndex = 0
         self.styleComboBox.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))
     
 
 def create(dlg):
--- a/Preferences/ConfigurationPages/HelpInterfacePage.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/HelpInterfacePage.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -32,7 +32,7 @@
     </widget>
    </item>
    <item>
-    <layout class="QGridLayout">
+    <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
@@ -40,7 +40,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>
@@ -55,19 +55,21 @@
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QLineEdit" name="styleSheetEdit">
+      <widget class="E5PathPicker" name="styleSheetPicker" 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 style sheet file</string>
        </property>
       </widget>
      </item>
-     <item row="1" column="2">
-      <widget class="QToolButton" name="styleSheetButton">
-       <property name="toolTip">
-        <string>Select the style sheet file via a file selection dialog</string>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item>
@@ -85,10 +87,16 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>styleComboBox</tabstop>
-  <tabstop>styleSheetEdit</tabstop>
-  <tabstop>styleSheetButton</tabstop>
  </tabstops>
  <resources/>
  <connections/>
--- a/Preferences/ConfigurationPages/IconsPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/IconsPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -32,7 +32,7 @@
         self.setupUi(self)
         self.setObjectName("IconsPage")
         
-        self.iconDirectoryPicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.iconDirectoryPicker.setMode(E5PathPickerModes.DirectoryMode)
         
         # set initial values
         dirList = Preferences.getIcons("Path")[:]
--- a/Preferences/ConfigurationPages/MultiProjectPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/MultiProjectPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -30,7 +30,7 @@
         self.setupUi(self)
         self.setObjectName("MultiProjectPage")
         
-        self.workspacePicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.workspacePicker.setMode(E5PathPickerModes.DirectoryMode)
         
         # set initial values
         self.openMasterAutomaticallyCheckBox.setChecked(
--- a/Preferences/ConfigurationPages/NetworkPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/NetworkPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -33,7 +33,7 @@
         self.setupUi(self)
         self.setObjectName("NetworkPage")
         
-        self.downloadDirPicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.downloadDirPicker.setMode(E5PathPickerModes.DirectoryMode)
         
         self.ftpProxyTypeCombo.addItem(
             self.tr("No FTP Proxy"), E5FtpProxyType.NoProxy)
--- a/Preferences/ConfigurationPages/PluginManagerPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/PluginManagerPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -31,7 +31,7 @@
         self.setupUi(self)
         self.setObjectName("PluginManagerPage")
         
-        self.downloadDirPicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.downloadDirPicker.setMode(E5PathPickerModes.DirectoryMode)
         
         # set initial values
         self.activateExternalPluginsCheckBox.setChecked(
--- a/Preferences/ConfigurationPages/QtPage.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ConfigurationPages/QtPage.py	Sat Nov 28 19:48:11 2015 +0100
@@ -31,7 +31,7 @@
         self.setupUi(self)
         self.setObjectName("QtPage")
         
-        self.qt4TransPicker.setMode(E5PathPickerModes.DiretoryMode)
+        self.qt4TransPicker.setMode(E5PathPickerModes.DirectoryMode)
         
         # set initial values
         self.qt4TransPicker.setText(Preferences.getQt("Qt4TranslationsDir"))
--- a/Preferences/ToolConfigurationDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ToolConfigurationDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -14,13 +14,12 @@
 from PyQt5.QtCore import Qt, pyqtSlot
 from PyQt5.QtWidgets import QDialog
 
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5MessageBox, E5FileDialog
+from E5Gui import E5MessageBox
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_ToolConfigurationDialog import Ui_ToolConfigurationDialog
 
 import Utilities
-import UI.PixmapCache
 
 
 class ToolConfigurationDialog(QDialog, Ui_ToolConfigurationDialog):
@@ -37,11 +36,9 @@
         super(ToolConfigurationDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.iconButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.executableButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.iconCompleter = E5FileCompleter(self.iconEdit)
-        self.executableCompleter = E5FileCompleter(self.executableEdit)
+        self.iconPicker.setMode(E5PathPickerModes.OpenFileMode)
+        self.iconPicker.setFilters(self.tr("Icon files (*.png)"))
+        self.executablePicker.setMode(E5PathPickerModes.OpenFileMode)
         
         self.redirectionModes = [
             ("no", self.tr("no redirection")),
@@ -86,9 +83,9 @@
         """
         Private slot to clear all entry fields.
         """
-        self.executableEdit.clear()
+        self.executablePicker.clear()
         self.menuEdit.clear()
-        self.iconEdit.clear()
+        self.iconPicker.clear()
         self.argumentsEdit.clear()
         self.redirectCombo.setCurrentIndex(1)
         
@@ -98,8 +95,8 @@
         Private slot to add a new entry.
         """
         menutext = self.menuEdit.text()
-        icon = self.iconEdit.text()
-        executable = self.executableEdit.text()
+        icon = self.iconPicker.text()
+        executable = self.executablePicker.text()
         arguments = self.argumentsEdit.text()
         redirect = self.redirectionModes[self.redirectCombo.currentIndex()][0]
         
@@ -160,8 +157,8 @@
             return
         
         menutext = self.menuEdit.text()
-        icon = self.iconEdit.text()
-        executable = self.executableEdit.text()
+        icon = self.iconPicker.text()
+        executable = self.executablePicker.text()
         arguments = self.argumentsEdit.text()
         redirect = self.redirectionModes[self.redirectCombo.currentIndex()][0]
         
@@ -264,43 +261,23 @@
             'redirect': 'no',
         }
         self.toollist.append(tool)
-        
-    @pyqtSlot()
-    def on_executableButton_clicked(self):
-        """
-        Private slot to handle the executable selection via a file selection
-        dialog.
+    
+    @pyqtSlot(str)
+    def on_executablePicker_pathSelected(self, path):
         """
-        execfile = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select executable"),
-            self.executableEdit.text(),
-            "")
-        if execfile:
-            execfile = Utilities.toNativeSeparators(execfile)
-            if not Utilities.isinpath(execfile):
+        Private slot to check the executable after it has been selected.
+        
+        @param path path of the executable
+        @type str
+        """
+        if path:
+            if not Utilities.isinpath(path):
                 E5MessageBox.critical(
                     self,
                     self.tr("Select executable"),
                     self.tr(
                         "The selected file is not an executable."
                         " Please choose an executable filename."))
-                return
-            
-            self.executableEdit.setText(execfile)
-        
-    @pyqtSlot()
-    def on_iconButton_clicked(self):
-        """
-        Private slot to handle the icon selection via a file selection dialog.
-        """
-        icon = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select icon file"),
-            self.iconEdit.text(),
-            self.tr("Icon files (*.png)"))
-        if icon:
-            self.iconEdit.setText(icon)
     
     def on_toolsList_currentRowChanged(self, row):
         """
@@ -310,16 +287,16 @@
         """
         if row >= 0 and row < len(self.toollist):
             if self.toollist[row]['menutext'] == '--':
-                self.executableEdit.clear()
+                self.executablePicker.clear()
                 self.menuEdit.clear()
-                self.iconEdit.clear()
+                self.iconPicker.clear()
                 self.argumentsEdit.clear()
                 self.redirectCombo.setCurrentIndex(0)
             else:
                 tool = self.toollist[row]
                 self.menuEdit.setText(tool['menutext'])
-                self.iconEdit.setText(tool['icon'])
-                self.executableEdit.setText(tool['executable'])
+                self.iconPicker.setText(tool['icon'])
+                self.executablePicker.setText(tool['executable'])
                 self.argumentsEdit.setText(tool['arguments'])
                 self.redirectCombo.setCurrentIndex(
                     self.__findModeIndex(tool['redirect']))
@@ -337,9 +314,9 @@
             else:
                 self.downButton.setEnabled(False)
         else:
-            self.executableEdit.clear()
+            self.executablePicker.clear()
             self.menuEdit.clear()
-            self.iconEdit.clear()
+            self.iconPicker.clear()
             self.argumentsEdit.clear()
             self.downButton.setEnabled(False)
             self.upButton.setEnabled(False)
@@ -364,7 +341,7 @@
         """
         self.__toolEntryChanged()
         
-    def on_iconEdit_textChanged(self, text):
+    def on_iconPicker_textChanged(self, text):
         """
         Private slot called, when the icon path was changed.
         
@@ -372,7 +349,7 @@
         """
         self.__toolEntryChanged()
         
-    def on_executableEdit_textChanged(self, text):
+    def on_executablePicker_textChanged(self, text):
         """
         Private slot called, when the executable was changed.
         
--- a/Preferences/ToolConfigurationDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Preferences/ToolConfigurationDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -16,287 +16,291 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
-    <layout class="QGridLayout">
-     <item row="7" column="3">
-      <widget class="QPushButton" name="separatorButton">
-       <property name="toolTip">
-        <string>Add a separator</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Add separator&lt;/b&gt;&lt;p&gt;Add a separator for the menu.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>Add &amp;Separator</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="3">
-      <widget class="QPushButton" name="addButton">
-       <property name="toolTip">
-        <string>Add a new tools entry</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Add&lt;/b&gt;
-&lt;p&gt;Add a new tools entry with the values entered below.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>&amp;Add</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+A</string>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="0" rowspan="9" colspan="3">
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
       <widget class="QListWidget" name="toolsList"/>
      </item>
-     <item row="13" column="1" colspan="2">
-      <widget class="QComboBox" name="redirectCombo">
-       <property name="toolTip">
-        <string>Select the output redirection mode</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Redirect output&lt;b&gt;&lt;p&gt;Select the output redirection mode. The standard error channel is either not redirected or shown in the log viewer.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="12" column="1">
-      <widget class="QLineEdit" name="argumentsEdit">
-       <property name="toolTip">
-        <string>Enter the arguments for the executable</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Arguments&lt;/b&gt;
-&lt;p&gt;Enter the arguments for the executable.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="3">
-      <widget class="QPushButton" name="upButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Move up</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Move Up&lt;/b&gt;
-&lt;p&gt;Move the selected entry up.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>&amp;Up</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+U</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="3">
-      <widget class="QPushButton" name="deleteButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Delete the selected entry</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Delete&lt;/b&gt;
+     <item row="0" column="1">
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QPushButton" name="newButton">
+         <property name="toolTip">
+          <string>Clear all entry fields</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;New&lt;/b&gt;
+&lt;p&gt;Clear all entry fields for entering a new tools entry.&lt;/p&gt;</string>
+         </property>
+         <property name="text">
+          <string>&amp;New</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+N</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="addButton">
+         <property name="toolTip">
+          <string>Add a new tools entry</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Add&lt;/b&gt;
+&lt;p&gt;Add a new tools entry with the values entered below.&lt;/p&gt;</string>
+         </property>
+         <property name="text">
+          <string>&amp;Add</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+A</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="changeButton">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string>Change the values of the selected entry</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Change&lt;/b&gt;
+&lt;p&gt;Change the values of the selected entry.&lt;/p&gt;</string>
+         </property>
+         <property name="text">
+          <string>C&amp;hange</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+H</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="deleteButton">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string>Delete the selected entry</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Delete&lt;/b&gt;
 &lt;p&gt;Delete the selected entry.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>&amp;Delete</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+D</string>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="3">
-      <widget class="QPushButton" name="newButton">
-       <property name="toolTip">
-        <string>Clear all entry fields</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;New&lt;/b&gt;
-&lt;p&gt;Clear all entry fields for entering a new tools entry.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>&amp;New</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+N</string>
-       </property>
-      </widget>
-     </item>
-     <item row="11" column="1">
-      <widget class="QLineEdit" name="executableEdit">
-       <property name="toolTip">
-        <string>Enter the filename of the executable</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Executable&lt;/b&gt;
-&lt;p&gt;Enter the filename of the executable.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="5" column="3">
-      <widget class="QPushButton" name="downButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Move down</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Move Down&lt;/b&gt;
+         </property>
+         <property name="text">
+          <string>&amp;Delete</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+D</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="upButton">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string>Move up</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Move Up&lt;/b&gt;
+&lt;p&gt;Move the selected entry up.&lt;/p&gt;</string>
+         </property>
+         <property name="text">
+          <string>&amp;Up</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+U</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="downButton">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string>Move down</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Move Down&lt;/b&gt;
 &lt;p&gt;Move the selected entry down.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>Do&amp;wn</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+W</string>
-       </property>
-      </widget>
+         </property>
+         <property name="text">
+          <string>Do&amp;wn</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+W</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="separatorButton">
+         <property name="toolTip">
+          <string>Add a separator</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Add separator&lt;/b&gt;&lt;p&gt;Add a separator for the menu.&lt;/p&gt;</string>
+         </property>
+         <property name="text">
+          <string>Add &amp;Separator</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>105</width>
+           <height>22</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
      </item>
-     <item row="8" column="3">
-      <spacer>
-       <property name="orientation">
-        <enum>Qt::Vertical</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Expanding</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>105</width>
-         <height>22</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item row="9" column="1">
-      <widget class="QLineEdit" name="menuEdit">
-       <property name="toolTip">
-        <string>Enter the menu text</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Menu text&lt;/b&gt;
+     <item row="1" column="0" colspan="2">
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="TextLabel2">
+         <property name="text">
+          <string>&amp;Menu text:</string>
+         </property>
+         <property name="buddy">
+          <cstring>menuEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QLineEdit" name="menuEdit">
+         <property name="toolTip">
+          <string>Enter the menu text</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Menu text&lt;/b&gt;
 &lt;p&gt;Enter the menu text. Precede the accelerator key with an &amp; character.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="3">
-      <widget class="QPushButton" name="changeButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Change the values of the selected entry</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Change&lt;/b&gt;
-&lt;p&gt;Change the values of the selected entry.&lt;/p&gt;</string>
-       </property>
-       <property name="text">
-        <string>C&amp;hange</string>
-       </property>
-       <property name="shortcut">
-        <string>Alt+H</string>
-       </property>
-      </widget>
-     </item>
-     <item row="10" column="0">
-      <widget class="QLabel" name="label">
-       <property name="text">
-        <string>&amp;Icon file:</string>
-       </property>
-       <property name="buddy">
-        <cstring>iconEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="12" column="0">
-      <widget class="QLabel" name="TextLabel3">
-       <property name="text">
-        <string>Ar&amp;guments:</string>
-       </property>
-       <property name="buddy">
-        <cstring>argumentsEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="9" column="0">
-      <widget class="QLabel" name="TextLabel2">
-       <property name="text">
-        <string>&amp;Menu text:</string>
-       </property>
-       <property name="buddy">
-        <cstring>menuEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="6" column="3">
-      <widget class="Line" name="line">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-      </widget>
-     </item>
-     <item row="10" column="1">
-      <widget class="QLineEdit" name="iconEdit">
-       <property name="toolTip">
-        <string>Enter the filename of the icon</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Icon&lt;/b&gt;
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>&amp;Icon file:</string>
+         </property>
+         <property name="buddy">
+          <cstring>iconPicker</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="E5PathPicker" name="iconPicker" 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 filename of the icon</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Icon&lt;/b&gt;
 &lt;p&gt;Enter the filename of the icon.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="13" column="0">
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>&amp;Redirect output</string>
-       </property>
-       <property name="buddy">
-        <cstring>redirectCombo</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="11" column="0">
-      <widget class="QLabel" name="TextLabel1">
-       <property name="text">
-        <string>&amp;Executable file:</string>
-       </property>
-       <property name="buddy">
-        <cstring>executableEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="10" column="2">
-      <widget class="QToolButton" name="iconButton">
-       <property name="toolTip">
-        <string>Select the icon via a file selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Icon&lt;/b&gt;
-&lt;p&gt;Select the icon via a file selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="11" column="2">
-      <widget class="QToolButton" name="executableButton">
-       <property name="toolTip">
-        <string>Select the executable via a file selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Executable&lt;/b&gt;
-&lt;p&gt;Select the executable via a file selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="TextLabel1">
+         <property name="text">
+          <string>&amp;Executable file:</string>
+         </property>
+         <property name="buddy">
+          <cstring>executablePicker</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="E5PathPicker" name="executablePicker" 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 filename of the executable</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Executable&lt;/b&gt;
+&lt;p&gt;Enter the filename of the executable.&lt;/p&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="TextLabel3">
+         <property name="text">
+          <string>Ar&amp;guments:</string>
+         </property>
+         <property name="buddy">
+          <cstring>argumentsEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1">
+        <widget class="QLineEdit" name="argumentsEdit">
+         <property name="toolTip">
+          <string>Enter the arguments for the executable</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Arguments&lt;/b&gt;
+&lt;p&gt;Enter the arguments for the executable.&lt;/p&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&amp;Redirect output</string>
+         </property>
+         <property name="buddy">
+          <cstring>redirectCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QComboBox" name="redirectCombo">
+         <property name="toolTip">
+          <string>Select the output redirection mode</string>
+         </property>
+         <property name="whatsThis">
+          <string>&lt;b&gt;Redirect output&lt;b&gt;&lt;p&gt;Select the output redirection mode. The standard error channel is either not redirected or shown in the log viewer.&lt;/p&gt;</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </item>
     </layout>
    </item>
@@ -314,13 +318,19 @@
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>toolsList</tabstop>
   <tabstop>menuEdit</tabstop>
-  <tabstop>iconEdit</tabstop>
-  <tabstop>iconButton</tabstop>
-  <tabstop>executableEdit</tabstop>
-  <tabstop>executableButton</tabstop>
+  <tabstop>iconPicker</tabstop>
+  <tabstop>executablePicker</tabstop>
   <tabstop>argumentsEdit</tabstop>
   <tabstop>redirectCombo</tabstop>
   <tabstop>newButton</tabstop>
--- a/Project/AddDirectoryDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/AddDirectoryDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -12,14 +12,10 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_AddDirectoryDialog import Ui_AddDirectoryDialog
 
-import Utilities
-import UI.PixmapCache
-
 
 class AddDirectoryDialog(QDialog, Ui_AddDirectoryDialog):
     """
@@ -41,15 +37,13 @@
             self.setObjectName(name)
         self.setupUi(self)
         
-        self.sourceDirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.targetDirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        
-        self.sourceDirCompleter = E5DirCompleter(self.sourceDirEdit)
-        self.targetDirCompleter = E5DirCompleter(self.targetDirEdit)
+        self.sourceDirPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.sourceDirPicker.setDefaultDirectory(startdir)
+        self.targetDirPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.targetDirPicker.setDefaultDirectory(startdir)
         
         self.ppath = pro.ppath
-        self.targetDirEdit.setText(self.ppath)
-        self.startdir = startdir
+        self.targetDirPicker.setText(self.ppath)
         self.on_filterComboBox_highlighted('(*.py)')
         # enable all dialog elements
         if filter == 'source':  # it is a source file
@@ -93,52 +87,17 @@
         """
         if fileType.endswith('(*)'):
             self.targetDirLabel.setEnabled(False)
-            self.targetDirEdit.setEnabled(False)
-            self.targetDirButton.setEnabled(False)
+            self.targetDirPicker.setEnabled(False)
             self.recursiveCheckBox.setEnabled(False)
         else:
             self.targetDirLabel.setEnabled(True)
-            self.targetDirEdit.setEnabled(True)
-            self.targetDirButton.setEnabled(True)
+            self.targetDirPicker.setEnabled(True)
             self.recursiveCheckBox.setEnabled(True)
         
-    def __dirDialog(self, textEdit):
-        """
-        Private slot to display a directory selection dialog.
-        
-        @param textEdit field for the display of the selected directory name
-            (QLineEdit)
+    @pyqtSlot(str)
+    def on_sourceDirPicker_textChanged(self, dir):
         """
-        startdir = textEdit.text()
-        if not startdir and self.startdir is not None:
-            startdir = self.startdir
-        
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select directory"),
-            startdir)
-        
-        if directory:
-            textEdit.setText(Utilities.toNativeSeparators(directory))
-        
-    @pyqtSlot()
-    def on_sourceDirButton_clicked(self):
-        """
-        Private slot to handle the source dir button press.
-        """
-        self.__dirDialog(self.sourceDirEdit)
-        
-    @pyqtSlot()
-    def on_targetDirButton_clicked(self):
-        """
-        Private slot to handle the target dir button press.
-        """
-        self.__dirDialog(self.targetDirEdit)
-        
-    @pyqtSlot(str)
-    def on_sourceDirEdit_textChanged(self, dir):
-        """
-        Private slot to handle the source dir text changed.
+        Private slot to handle the source directory text changed.
         
         If the entered source directory is a subdirectory of the current
         projects main directory, the target directory path is synchronized.
@@ -148,7 +107,7 @@
         @param dir the text of the source directory line edit (string)
         """
         if dir.startswith(self.ppath):
-            self.targetDirEdit.setText(dir)
+            self.targetDirPicker.setText(dir)
         
     def getData(self):
         """
@@ -162,6 +121,6 @@
             self.filterComboBox.itemData(self.filterComboBox.currentIndex())
         return (
             filetype,
-            Utilities.toNativeSeparators(self.sourceDirEdit.text()),
-            Utilities.toNativeSeparators(self.targetDirEdit.text()),
+            self.sourceDirPicker.text(),
+            self.targetDirPicker.text(),
             self.recursiveCheckBox.isChecked())
--- a/Project/AddDirectoryDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/AddDirectoryDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>391</width>
-    <height>174</height>
+    <height>141</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -23,96 +23,93 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout">
-   <item>
-    <layout class="QGridLayout">
-     <item row="0" column="1" colspan="2">
-      <widget class="QComboBox" name="filterComboBox"/>
-     </item>
-     <item row="2" column="0">
-      <widget class="QLabel" name="targetDirLabel">
-       <property name="text">
-        <string>&amp;Target Directory:</string>
-       </property>
-       <property name="buddy">
-        <cstring>targetDirEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1">
-      <widget class="QLineEdit" name="sourceDirEdit">
-       <property name="toolTip">
-        <string>Enter the name of the directory to add</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Source Directory&lt;/b&gt;
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="textLabel1">
+     <property name="text">
+      <string>&amp;File Type:</string>
+     </property>
+     <property name="buddy">
+      <cstring>filterComboBox</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QComboBox" name="filterComboBox"/>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="sourceDirLabel">
+     <property name="text">
+      <string>&amp;Source Directory:</string>
+     </property>
+     <property name="buddy">
+      <cstring>sourceDirPicker</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="E5PathPicker" name="sourceDirPicker" 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 directory to add</string>
+     </property>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Source Directory&lt;/b&gt;
 &lt;p&gt;Enter the name of the directory to add to the current project.
- You may select it with a dialog by pressing the button to
- the right.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="0" colspan="3">
-      <widget class="QCheckBox" name="recursiveCheckBox">
-       <property name="toolTip">
-        <string>Select, whether a recursive add should be performed</string>
-       </property>
-       <property name="text">
-        <string>&amp;Recurse into subdirectories</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="1">
-      <widget class="QLineEdit" name="targetDirEdit">
-       <property name="toolTip">
-        <string>Enter the target directory for the file</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Target Directory&lt;/b&gt;
+ You may select it with a dialog by pressing the button to the right.&lt;/p&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="targetDirLabel">
+     <property name="text">
+      <string>&amp;Target Directory:</string>
+     </property>
+     <property name="buddy">
+      <cstring>targetDirPicker</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="E5PathPicker" name="targetDirPicker" 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 target directory for the file</string>
+     </property>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Target Directory&lt;/b&gt;
 &lt;p&gt;Enter the target directory. You may select it
  with a dialog by pressing the button to the right.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="sourceDirLabel">
-       <property name="text">
-        <string>&amp;Source Directory:</string>
-       </property>
-       <property name="buddy">
-        <cstring>sourceDirEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="0">
-      <widget class="QLabel" name="textLabel1">
-       <property name="text">
-        <string>&amp;File Type:</string>
-       </property>
-       <property name="buddy">
-        <cstring>filterComboBox</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="2">
-      <widget class="QToolButton" name="sourceDirButton">
-       <property name="whatsThis">
-        <string>&lt;b&gt;Source Directory&lt;/b&gt;
-&lt;p&gt;Select the source directory via a directory selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="2">
-      <widget class="QToolButton" name="targetDirButton">
-       <property name="whatsThis">
-        <string>&lt;b&gt;Target Directory&lt;/b&gt;
-&lt;p&gt;Select the target directory via a directory selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+     </property>
+    </widget>
    </item>
-   <item>
+   <item row="3" column="0" colspan="2">
+    <widget class="QCheckBox" name="recursiveCheckBox">
+     <property name="toolTip">
+      <string>Select, whether a recursive add should be performed</string>
+     </property>
+     <property name="text">
+      <string>&amp;Recurse into subdirectories</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0" colspan="2">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -126,12 +123,18 @@
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>filterComboBox</tabstop>
-  <tabstop>sourceDirEdit</tabstop>
-  <tabstop>sourceDirButton</tabstop>
-  <tabstop>targetDirEdit</tabstop>
-  <tabstop>targetDirButton</tabstop>
+  <tabstop>sourceDirPicker</tabstop>
+  <tabstop>targetDirPicker</tabstop>
   <tabstop>recursiveCheckBox</tabstop>
  </tabstops>
  <resources/>
--- a/Project/AddFileDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/AddFileDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -14,14 +14,10 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog
 
-from E5Gui.E5Completers import E5DirCompleter, E5FileCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_AddFileDialog import Ui_AddFileDialog
 
-import Utilities
-import UI.PixmapCache
-
 
 class AddFileDialog(QDialog, Ui_AddFileDialog):
     """
@@ -43,13 +39,11 @@
             self.setObjectName(name)
         self.setupUi(self)
         
-        self.targetDirButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.sourceFileButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.sourceFilesPicker.setMode(E5PathPickerModes.OpenFilesMode)
+        self.targetDirPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.targetDirPicker.setDefaultDirectory(startdir)
         
-        self.targetDirCompleter = E5DirCompleter(self.targetDirEdit)
-        self.sourceFileCompleter = E5FileCompleter(self.sourceFileEdit)
-        
-        self.targetDirEdit.setText(pro.ppath)
+        self.targetDirPicker.setText(pro.ppath)
         self.filter = filter
         self.ppath = pro.ppath
         self.startdir = startdir
@@ -63,32 +57,16 @@
         self.resize(max(self.width(), msh.width()), msh.height())
         
     @pyqtSlot()
-    def on_targetDirButton_clicked(self):
+    def on_sourceFilesPicker_aboutToShowPathPickerDialog(self):
         """
-        Private slot to display a directory selection dialog.
+        Private slot to perform actions before the source files selection
+        dialog is shown. 
         """
-        startdir = self.targetDirEdit.text()
-        if not startdir and self.startdir is not None:
-            startdir = self.startdir
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select target directory"),
-            startdir)
-            
-        if directory:
-            self.targetDirEdit.setText(Utilities.toNativeSeparators(directory))
+        path = self.targetDirPicker.text()
+        if not path:
+            path = self.startdir
+        self.sourceFilesPicker.setDefaultDirectory(path)
         
-    @pyqtSlot()
-    def on_sourceFileButton_clicked(self):
-        """
-        Private slot to display a file selection dialog.
-        """
-        dir = self.sourceFileEdit.text().split(os.pathsep, 1)[0]
-        if not dir:
-            if self.startdir is not None:
-                dir = self.startdir
-            else:
-                dir = self.targetDirEdit.text()
         if self.filter is None:
             patterns = {
                 "SOURCES": [],
@@ -158,16 +136,14 @@
             dfilter = self.tr("All Files (*)")
             caption = self.tr("Select files")
         else:
-            return
-        
-        fnames = E5FileDialog.getOpenFileNames(self, caption, dir, dfilter)
+            dfilter = ""
+            caption = ""
         
-        if len(fnames):
-            self.sourceFileEdit.setText(Utilities.toNativeSeparators(
-                os.pathsep.join(fnames)))
+        self.sourceFilesPicker.setWindowTitle(caption)
+        self.sourceFilesPicker.setFilters(dfilter)
         
     @pyqtSlot(str)
-    def on_sourceFileEdit_textChanged(self, sfile):
+    def on_sourceFilesPicker_textChanged(self, sfile):
         """
         Private slot to handle the source file text changed.
         
@@ -176,15 +152,15 @@
         It is assumed, that the user wants to add a bunch of files to
         the project in place.
         
-        @param sfile the text of the source file line edit (string)
+        @param sfile the text of the source file picker (string)
         """
-        sfile = sfile.split(os.pathsep, 1)[0]
+        sfile = self.sourceFilesPicker.firstPath()
         if sfile.startswith(self.ppath):
             if os.path.isdir(sfile):
                 dir = sfile
             else:
                 dir = os.path.dirname(sfile)
-            self.targetDirEdit.setText(dir)
+            self.targetDirPicker.setText(dir)
         
     def getData(self):
         """
@@ -195,7 +171,6 @@
             telling, whether the files shall be added as source code
         """
         return (
-            [Utilities.toNativeSeparators(f) for f in
-                self.sourceFileEdit.text().split(os.pathsep)],
-            Utilities.toNativeSeparators(self.targetDirEdit.text()),
+            self.sourceFilesPicker.paths(),
+            self.targetDirPicker.text(),
             self.sourcecodeCheckBox.isChecked())
--- a/Project/AddFileDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/AddFileDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>391</width>
-    <height>141</height>
+    <height>114</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -20,21 +20,62 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout">
+  <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <layout class="QGridLayout">
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="sourceFileLabel">
+       <property name="text">
+        <string>&amp;Source Files:</string>
+       </property>
+       <property name="buddy">
+        <cstring>sourceFilesPicker</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="E5PathPicker" name="sourceFilesPicker" 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 files to add separated by &quot;;&quot;</string>
+       </property>
+       <property name="whatsThis">
+        <string>&lt;b&gt;Source Files&lt;/b&gt;
+&lt;p&gt;Enter the name of files to add to the current project separated
+by &quot;;&quot;. You may select them with a dialog by pressing 
+the button to the right.&lt;/p&gt;</string>
+       </property>
+      </widget>
+     </item>
      <item row="1" column="0">
       <widget class="QLabel" name="targetDirLabel">
        <property name="text">
         <string>&amp;Target Directory:</string>
        </property>
        <property name="buddy">
-        <cstring>targetDirEdit</cstring>
+        <cstring>targetDirPicker</cstring>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QLineEdit" name="targetDirEdit">
+      <widget class="E5PathPicker" name="targetDirPicker" 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 target directory for the file</string>
        </property>
@@ -45,45 +86,6 @@
        </property>
       </widget>
      </item>
-     <item row="0" column="0">
-      <widget class="QLabel" name="sourceFileLabel">
-       <property name="text">
-        <string>&amp;Source Files:</string>
-       </property>
-       <property name="buddy">
-        <cstring>sourceFileEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <widget class="QLineEdit" name="sourceFileEdit">
-       <property name="toolTip">
-        <string>Enter the name of files to add separated by the path separator</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Source Files&lt;/b&gt;
-&lt;p&gt;Enter the name of files to add to the current project separated
-by the path separator. You may select them with a dialog by pressing 
-the button to the right.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="2">
-      <widget class="QToolButton" name="sourceFileButton">
-       <property name="whatsThis">
-        <string>&lt;b&gt;Source Files&lt;/b&gt;
-&lt;p&gt;Select the source files via a files selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="2">
-      <widget class="QToolButton" name="targetDirButton">
-       <property name="whatsThis">
-        <string>&lt;b&gt;Target Directory&lt;/b&gt;
-&lt;p&gt;Select the target directory via a directory selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item>
@@ -113,11 +115,17 @@
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>sourceFileEdit</tabstop>
-  <tabstop>sourceFileButton</tabstop>
-  <tabstop>targetDirEdit</tabstop>
-  <tabstop>targetDirButton</tabstop>
+  <tabstop>sourceFilesPicker</tabstop>
+  <tabstop>targetDirPicker</tabstop>
   <tabstop>sourcecodeCheckBox</tabstop>
  </tabstops>
  <resources/>
--- a/Project/DebuggerPropertiesDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/DebuggerPropertiesDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -15,13 +15,11 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog
 
-from E5Gui.E5Completers import E5FileCompleter, E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5Completers import E5DirCompleter
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_DebuggerPropertiesDialog import Ui_DebuggerPropertiesDialog
 
-import Utilities
-import UI.PixmapCache
 
 from eric6config import getConfig
 
@@ -44,27 +42,25 @@
             self.setObjectName(name)
         self.setupUi(self)
         
-        self.debugClientButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.interpreterButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.debugClientPicker.setMode(E5PathPickerModes.OpenFileMode)
+        self.interpreterPicker.setMode(E5PathPickerModes.OpenFileMode)
         
-        self.debugClientCompleter = E5FileCompleter(self.debugClientEdit)
-        self.interpreterCompleter = E5FileCompleter(self.interpreterEdit)
         self.translationLocalCompleter = E5DirCompleter(
             self.translationLocalEdit)
         
         self.project = project
         
         if self.project.debugProperties["INTERPRETER"]:
-            self.interpreterEdit.setText(
+            self.interpreterPicker.setText(
                 self.project.debugProperties["INTERPRETER"])
         else:
             if self.project.pdata["PROGLANGUAGE"][0] in \
                     ["Python", "Python2", "Python3"]:
-                self.interpreterEdit.setText(sys.executable)
+                self.interpreterPicker.setText(sys.executable)
             elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby":
-                self.interpreterEdit.setText("/usr/bin/ruby")
+                self.interpreterPicker.setText("/usr/bin/ruby")
         if self.project.debugProperties["DEBUGCLIENT"]:
-            self.debugClientEdit.setText(
+            self.debugClientPicker.setText(
                 self.project.debugProperties["DEBUGCLIENT"])
         else:
             if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2"]:
@@ -81,7 +77,7 @@
                     "DebugClients", "Ruby", "DebugClient.rb")
             else:
                 debugClient = ""
-            self.debugClientEdit.setText(debugClient)
+            self.debugClientPicker.setText(debugClient)
         self.debugEnvironmentOverrideCheckBox.setChecked(
             self.project.debugProperties["ENVIRONMENTOVERRIDE"])
         self.debugEnvironmentEdit.setText(
@@ -109,44 +105,24 @@
         
         msh = self.minimumSizeHint()
         self.resize(max(self.width(), msh.width()), msh.height())
-        
-    @pyqtSlot()
-    def on_interpreterButton_clicked(self):
-        """
-        Private slot to handle the interpreter selection.
-        """
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select interpreter for Debug Client"),
-            self.interpreterEdit.text(),
-            "")
-            
-        if file:
-            self.interpreterEdit.setText(Utilities.toNativeSeparators(file))
 
     @pyqtSlot()
-    def on_debugClientButton_clicked(self):
+    def on_debugClientPicker_aboutToShowPathPickerDialog(self):
         """
-        Private slot to handle the Debug Client selection.
+        Private slot to perform actions before the debug client selection
+        dialog is shown. 
         """
         filters = self.project.dbgFilters[
             self.project.pdata["PROGLANGUAGE"][0]]
         filters += self.tr("All Files (*)")
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select Debug Client"),
-            self.debugClientEdit.text(),
-            filters)
-            
-        if file:
-            self.debugClientEdit.setText(Utilities.toNativeSeparators(file))
+        self.debugClientPicker.setFilters(filters)
 
     def storeData(self):
         """
         Public method to store the entered/modified data.
         """
         self.project.debugProperties["INTERPRETER"] = \
-            self.interpreterEdit.text()
+            self.interpreterPicker.text()
         if not self.project.debugProperties["INTERPRETER"]:
             if self.project.pdata["PROGLANGUAGE"][0] in \
                     ["Python", "Python2", "Python3"]:
@@ -155,7 +131,7 @@
                 self.project.debugProperties["INTERPRETER"] = "/usr/bin/ruby"
         
         self.project.debugProperties["DEBUGCLIENT"] = \
-            self.debugClientEdit.text()
+            self.debugClientPicker.text()
         if not self.project.debugProperties["DEBUGCLIENT"]:
             if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2"]:
                 debugClient = os.path.join(
--- a/Project/DebuggerPropertiesDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/DebuggerPropertiesDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>592</width>
-    <height>656</height>
+    <height>594</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,27 +16,23 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="_2">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>Debug Client</string>
      </property>
-     <layout class="QHBoxLayout" name="_4">
+     <layout class="QVBoxLayout" name="verticalLayout">
       <item>
-       <widget class="QLineEdit" name="debugClientEdit">
+       <widget class="E5PathPicker" name="debugClientPicker" native="true">
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
         <property name="toolTip">
          <string>Enter the path of the Debug Client to be used.  Leave empty to use the default.</string>
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QToolButton" name="debugClientButton">
-        <property name="toolTip">
-         <string>Press to select the Debug Client via a file selection dialog</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -45,21 +41,17 @@
      <property name="title">
       <string>Interpreter for Debug Client</string>
      </property>
-     <layout class="QHBoxLayout" name="_5">
+     <layout class="QVBoxLayout" name="verticalLayout_2">
       <item>
-       <widget class="QLineEdit" name="interpreterEdit">
+       <widget class="E5PathPicker" name="interpreterPicker" native="true">
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
         <property name="toolTip">
          <string>Enter the path of the interpreter to be used by the debug client.</string>
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QToolButton" name="interpreterButton">
-        <property name="toolTip">
-         <string>Press to select the interpreter via a file selection dialog</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -262,11 +254,17 @@
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>debugClientEdit</tabstop>
-  <tabstop>debugClientButton</tabstop>
-  <tabstop>interpreterEdit</tabstop>
-  <tabstop>interpreterButton</tabstop>
+  <tabstop>debugClientPicker</tabstop>
+  <tabstop>interpreterPicker</tabstop>
   <tabstop>debugEnvironmentOverrideCheckBox</tabstop>
   <tabstop>debugEnvironmentEdit</tabstop>
   <tabstop>remoteDebuggerGroup</tabstop>
@@ -278,6 +276,7 @@
   <tabstop>consoleDebuggerGroup</tabstop>
   <tabstop>consoleCommandEdit</tabstop>
   <tabstop>redirectCheckBox</tabstop>
+  <tabstop>noEncodingCheckBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Project/NewDialogClassDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/NewDialogClassDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -11,16 +11,12 @@
 
 import os
 
-from PyQt5.QtCore import QDir, pyqtSlot
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
-from E5Gui.E5Completers import E5DirCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_NewDialogClassDialog import Ui_NewDialogClassDialog
 
-import UI.PixmapCache
-
 
 class NewDialogClassDialog(QDialog, Ui_NewDialogClassDialog):
     """
@@ -39,32 +35,18 @@
         super(NewDialogClassDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.pathButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.pathnamePicker.setMode(E5PathPickerModes.DirectoryMode)
         
         self.okButton = self.buttonBox.button(QDialogButtonBox.Ok)
         self.okButton.setEnabled(False)
         
-        self.pathnameCompleter = E5DirCompleter(self.pathnameEdit)
-        
         self.classnameEdit.setText(defaultClassName)
         self.filenameEdit.setText(defaultFile)
-        self.pathnameEdit.setText(QDir.toNativeSeparators(defaultPath))
+        self.pathnamePicker.setText(defaultPath)
         
         msh = self.minimumSizeHint()
         self.resize(max(self.width(), msh.width()), msh.height())
         
-    @pyqtSlot()
-    def on_pathButton_clicked(self):
-        """
-        Private slot called to open a directory selection dialog.
-        """
-        path = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select source directory"),
-            QDir.fromNativeSeparators(self.pathnameEdit.text()))
-        if path:
-            self.pathnameEdit.setText(QDir.toNativeSeparators(path))
-        
     def __enableOkButton(self):
         """
         Private slot to set the enable state of theok button.
@@ -72,7 +54,7 @@
         self.okButton.setEnabled(
             self.classnameEdit.text() != "" and
             self.filenameEdit.text() != "" and
-            self.pathnameEdit.text() != "")
+            self.pathnamePicker.text() != "")
         
     def on_classnameEdit_textChanged(self, text):
         """
@@ -90,9 +72,9 @@
         """
         self.__enableOkButton()
         
-    def on_pathnameEdit_textChanged(self, text):
+    def on_pathnamePicker_textChanged(self, text):
         """
-        Private slot called, when thext of the pathname edit has changed.
+        Private slot called, when the text of the path name has changed.
         
         @param text changed text (string)
         """
@@ -105,5 +87,5 @@
         @return tuple giving the classname (string) and the file name (string)
         """
         return self.classnameEdit.text(), \
-            os.path.join(self.pathnameEdit.text(),
+            os.path.join(self.pathnamePicker.text(),
                          self.filenameEdit.text())
--- a/Project/NewDialogClassDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/NewDialogClassDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>600</width>
-    <height>140</height>
+    <height>124</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,16 +16,9 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="_2">
+  <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <layout class="QGridLayout" name="_3">
-     <item row="2" column="1">
-      <widget class="QLineEdit" name="pathnameEdit">
-       <property name="toolTip">
-        <string>Enter the path of the file for the forms code</string>
-       </property>
-      </widget>
-     </item>
+    <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
@@ -36,6 +29,13 @@
        </property>
       </widget>
      </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="classnameEdit">
+       <property name="toolTip">
+        <string>Enter the name of the new class</string>
+       </property>
+      </widget>
+     </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
@@ -46,34 +46,36 @@
        </property>
       </widget>
      </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="filenameEdit">
+       <property name="toolTip">
+        <string>Enter the name of the file for the forms code</string>
+       </property>
+      </widget>
+     </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>&amp;Path:</string>
        </property>
        <property name="buddy">
-        <cstring>pathnameEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1" colspan="2">
-      <widget class="QLineEdit" name="classnameEdit">
-       <property name="toolTip">
-        <string>Enter the name of the new class</string>
+        <cstring>pathnamePicker</cstring>
        </property>
       </widget>
      </item>
-     <item row="1" column="1" colspan="2">
-      <widget class="QLineEdit" name="filenameEdit">
-       <property name="toolTip">
-        <string>Enter the name of the file for the forms code</string>
+     <item row="2" column="1">
+      <widget class="E5PathPicker" name="pathnamePicker" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
        </property>
-      </widget>
-     </item>
-     <item row="2" column="2">
-      <widget class="QToolButton" name="pathButton">
+       <property name="focusPolicy">
+        <enum>Qt::StrongFocus</enum>
+       </property>
        <property name="toolTip">
-        <string>Select the source file path via a directory selection dialog</string>
+        <string>Enter the path of the file for the forms code</string>
        </property>
       </widget>
      </item>
@@ -91,11 +93,17 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>classnameEdit</tabstop>
   <tabstop>filenameEdit</tabstop>
-  <tabstop>pathnameEdit</tabstop>
-  <tabstop>pathButton</tabstop>
   <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
--- 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]
--- a/Project/PropertiesDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/PropertiesDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -114,12 +114,21 @@
         <string>Project &amp;Directory:</string>
        </property>
        <property name="buddy">
-        <cstring>dirEdit</cstring>
+        <cstring>dirPicker</cstring>
        </property>
       </widget>
      </item>
      <item row="5" column="1">
-      <widget class="QLineEdit" name="dirEdit">
+      <widget class="E5PathPicker" name="dirPicker" 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 project directory</string>
        </property>
@@ -157,12 +166,21 @@
         <string>&amp;Main Script:</string>
        </property>
        <property name="buddy">
-        <cstring>mainscriptEdit</cstring>
+        <cstring>mainscriptPicker</cstring>
        </property>
       </widget>
      </item>
      <item row="7" column="1">
-      <widget class="QLineEdit" name="mainscriptEdit">
+      <widget class="E5PathPicker" name="mainscriptPicker" 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 main script</string>
        </property>
@@ -292,28 +310,6 @@
        </property>
       </widget>
      </item>
-     <item row="5" column="2">
-      <widget class="QToolButton" name="dirButton">
-       <property name="toolTip">
-        <string>Show directory selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Project Directory&lt;/b&gt;
-&lt;p&gt;Select a project directory via a directory selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="7" column="2">
-      <widget class="QToolButton" name="mainscriptButton">
-       <property name="toolTip">
-        <string>Show file selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Main Script&lt;/b&gt;
-&lt;p&gt;Select the projects main script via a file selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item>
@@ -370,17 +366,23 @@
  </widget>
  <layoutdefault spacing="6" margin="6"/>
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>nameEdit</tabstop>
   <tabstop>spellPropertiesButton</tabstop>
   <tabstop>languageComboBox</tabstop>
   <tabstop>mixedLanguageCheckBox</tabstop>
   <tabstop>projectTypeComboBox</tabstop>
-  <tabstop>dirEdit</tabstop>
-  <tabstop>dirButton</tabstop>
+  <tabstop>dirPicker</tabstop>
   <tabstop>versionEdit</tabstop>
-  <tabstop>mainscriptEdit</tabstop>
-  <tabstop>mainscriptButton</tabstop>
+  <tabstop>mainscriptPicker</tabstop>
   <tabstop>transPropertiesButton</tabstop>
   <tabstop>eolComboBox</tabstop>
   <tabstop>authorEdit</tabstop>
@@ -388,7 +390,6 @@
   <tabstop>descriptionEdit</tabstop>
   <tabstop>vcsCheckBox</tabstop>
   <tabstop>vcsInfoButton</tabstop>
-  <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
  <connections>
--- a/Project/SpellingPropertiesDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/SpellingPropertiesDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -9,19 +9,13 @@
 
 from __future__ import unicode_literals
 
-import os
-
-from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QDialog
 
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_SpellingPropertiesDialog import Ui_SpellingPropertiesDialog
 
-import Utilities
 import Preferences
-import UI.PixmapCache
 
 
 class SpellingPropertiesDialog(QDialog, Ui_SpellingPropertiesDialog):
@@ -39,15 +33,19 @@
         super(SpellingPropertiesDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.pwlButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.pelButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.pwlPicker.setMode(E5PathPickerModes.SaveFileMode)
+        self.pwlPicker.setDefaultDirectory(project.ppath)
+        self.pwlPicker.setFilters(self.tr(
+            "Dictionary File (*.dic);;All Files (*)"))
+        
+        self.pelPicker.setMode(E5PathPickerModes.SaveFileMode)
+        self.pelPicker.setDefaultDirectory(project.ppath)
+        self.pelPicker.setFilters(self.tr(
+            "Dictionary File (*.dic);;All Files (*)"))
         
         self.project = project
         self.parent = parent
         
-        self.pwlCompleter = E5FileCompleter(self.pwlEdit)
-        self.pelCompleter = E5FileCompleter(self.pelEdit)
-        
         from QScintilla.SpellChecker import SpellChecker
         self.spellingComboBox.addItem(self.tr("<default>"))
         self.spellingComboBox.addItems(
@@ -69,53 +67,9 @@
             index = 0
         self.spellingComboBox.setCurrentIndex(index)
         if self.project.pdata["SPELLWORDS"][0]:
-            self.pwlEdit.setText(Utilities.toNativeSeparators(
-                self.project.pdata["SPELLWORDS"][0]))
+            self.pwlPicker.setText(self.project.pdata["SPELLWORDS"][0])
         if self.project.pdata["SPELLEXCLUDES"][0]:
-            self.pelEdit.setText(Utilities.toNativeSeparators(
-                self.project.pdata["SPELLEXCLUDES"][0]))
-    
-    @pyqtSlot()
-    def on_pwlButton_clicked(self):
-        """
-        Private slot to select the project word list file.
-        """
-        pwl = Utilities.fromNativeSeparators(self.pwlEdit.text())
-        if not pwl:
-            pwl = self.project.ppath
-        elif not os.path.isabs(pwl):
-            pwl = Utilities.fromNativeSeparators(
-                os.path.join(self.project.ppath, pwl))
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select project word list"),
-            pwl,
-            self.tr("Dictionary File (*.dic);;All Files (*)"))
-        
-        if file:
-            self.pwlEdit.setText(self.project.getRelativePath(
-                Utilities.toNativeSeparators(file)))
-    
-    @pyqtSlot()
-    def on_pelButton_clicked(self):
-        """
-        Private slot to select the project exclude list file.
-        """
-        pel = Utilities.fromNativeSeparators(self.pelEdit.text())
-        if not pel:
-            pel = self.project.ppath
-        elif not os.path.isabs(pel):
-            pel = Utilities.fromNativeSeparators(
-                os.path.join(self.project.ppath, pel))
-        file = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select project exclude list"),
-            pel,
-            self.tr("Dictionary File (*.dic);;All Files (*)"))
-            
-        if file:
-            self.pelEdit.setText(self.project.getRelativePath(
-                Utilities.toNativeSeparators(file)))
+            self.pelPicker.setText(self.project.pdata["SPELLEXCLUDES"][0])
     
     def storeData(self):
         """
@@ -128,6 +82,6 @@
             self.project.pdata["SPELLLANGUAGE"] = \
                 [self.spellingComboBox.currentText()]
         self.project.pdata["SPELLWORDS"] = \
-            [self.project.getRelativePath(self.pwlEdit.text())]
+            [self.project.getRelativePath(self.pwlPicker.text())]
         self.project.pdata["SPELLEXCLUDES"] = \
-            [self.project.getRelativePath(self.pelEdit.text())]
+            [self.project.getRelativePath(self.pelPicker.text())]
--- a/Project/SpellingPropertiesDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/SpellingPropertiesDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>600</width>
-    <height>213</height>
+    <height>114</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -27,61 +27,66 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="0">
+   <item row="0" column="1">
     <widget class="QComboBox" name="spellingComboBox">
      <property name="toolTip">
       <string>Select the project's language</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="0">
+   <item row="1" column="0">
     <widget class="QLabel" name="label">
      <property name="text">
       <string>Project &amp;Word List:</string>
      </property>
      <property name="buddy">
-      <cstring>pwlEdit</cstring>
+      <cstring>pwlPicker</cstring>
      </property>
     </widget>
    </item>
-   <item row="3" column="0">
-    <widget class="QLineEdit" name="pwlEdit">
+   <item row="1" column="1">
+    <widget class="E5PathPicker" name="pwlPicker" 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 filename of the project word list</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="0">
+   <item row="2" column="0">
     <widget class="QLabel" name="label_2">
      <property name="text">
       <string>Project E&amp;xclude List:</string>
      </property>
      <property name="buddy">
-      <cstring>pelEdit</cstring>
+      <cstring>pelPicker</cstring>
      </property>
     </widget>
    </item>
-   <item row="5" column="0">
-    <widget class="QLineEdit" name="pelEdit">
+   <item row="2" column="1">
+    <widget class="E5PathPicker" name="pelPicker" 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 filename of the project exclude list</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="0">
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>2</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="7" column="0" colspan="2">
+   <item row="3" column="0" colspan="2">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -91,28 +96,18 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="1">
-    <widget class="QToolButton" name="pwlButton">
-     <property name="toolTip">
-      <string>Select the project word list file via a file selection dialog</string>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="1">
-    <widget class="QToolButton" name="pelButton">
-     <property name="toolTip">
-      <string>Select the project exclude list file via a file selection dialog</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>spellingComboBox</tabstop>
-  <tabstop>pwlEdit</tabstop>
-  <tabstop>pwlButton</tabstop>
-  <tabstop>pelEdit</tabstop>
-  <tabstop>pelButton</tabstop>
   <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
--- a/Project/TranslationPropertiesDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/TranslationPropertiesDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -14,13 +14,13 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QListWidgetItem, QDialog, QDialogButtonBox
 
-from E5Gui.E5Completers import E5FileCompleter, E5DirCompleter
+from E5Gui.E5Completers import E5FileCompleter
 from E5Gui import E5FileDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_TranslationPropertiesDialog import Ui_TranslationPropertiesDialog
 
 import Utilities
-import UI.PixmapCache
 
 
 class TranslationPropertiesDialog(QDialog, Ui_TranslationPropertiesDialog):
@@ -38,14 +38,14 @@
         super(TranslationPropertiesDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.transBinPathButton.setIcon(UI.PixmapCache.getIcon("open.png"))
-        self.transPatternButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.transPatternPicker.setMode(E5PathPickerModes.SaveFileMode)
+        self.transPatternPicker.setDefaultDirectory(project.ppath)
+        self.transBinPathPicker.setMode(E5PathPickerModes.DirectoryMode)
+        self.transBinPathPicker.setDefaultDirectory(project.ppath)
         
         self.project = project
         self.parent = parent
         
-        self.transPatternCompleter = E5FileCompleter(self.transPatternEdit)
-        self.transBinPathCompleter = E5DirCompleter(self.transBinPathEdit)
         self.exceptionCompleter = E5FileCompleter(self.exceptionEdit)
         
         self.initFilters()
@@ -75,13 +75,13 @@
         """
         self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
         try:
-            self.transPatternEdit.setText(Utilities.toNativeSeparators(
-                self.project.pdata["TRANSLATIONPATTERN"][0]))
+            self.transPatternPicker.setText(
+                self.project.pdata["TRANSLATIONPATTERN"][0])
         except IndexError:
             pass
         try:
-            self.transBinPathEdit.setText(Utilities.toNativeSeparators(
-                self.project.pdata["TRANSLATIONSBINPATH"][0]))
+            self.transBinPathPicker.setText(
+                self.project.pdata["TRANSLATIONSBINPATH"][0])
         except IndexError:
             pass
         self.exceptionsList.clear()
@@ -89,54 +89,35 @@
             if texcept:
                 self.exceptionsList.addItem(texcept)
         
-    @pyqtSlot()
-    def on_transPatternButton_clicked(self):
-        """
-        Private slot to display a file selection dialog.
+    @pyqtSlot(str)
+    def on_transPatternPicker_pathSelected(self, path):
         """
-        tp = Utilities.fromNativeSeparators(self.transPatternEdit.text())
-        if "%language%" in tp:
-            tp = tp.split("%language%")[0]
-        if not os.path.isabs(tp):
-            tp = Utilities.fromNativeSeparators(
-                os.path.join(self.project.ppath, tp))
-        tsfile = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Select translation file"),
-            tp,
-            "")
+        Private slot handling the selection of a translation path.
         
-        if tsfile:
-            self.transPatternEdit.setText(self.project.getRelativePath(
-                Utilities.toNativeSeparators(tsfile)))
+        @param path selected path
+        @type str
+        """
+        self.transPatternPicker.setText(self.project.getRelativePath(path))
         
     @pyqtSlot(str)
-    def on_transPatternEdit_textChanged(self, txt):
+    def on_transPatternPicker_textChanged(self, txt):
         """
         Private slot to check the translation pattern for correctness.
         
-        @param txt text of the transPatternEdit lineedit (string)
+        @param txt text of the transPatternPicker line edit (string)
         """
         self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
             "%language%" in txt)
         
-    @pyqtSlot()
-    def on_transBinPathButton_clicked(self):
-        """
-        Private slot to display a directory selection dialog.
+    @pyqtSlot(str)
+    def on_transBinPathPicker_pathSelected(self, path):
         """
-        tbp = Utilities.fromNativeSeparators(self.transBinPathEdit.text())
-        if not os.path.isabs(tbp):
-            tbp = Utilities.fromNativeSeparators(
-                os.path.join(self.project.ppath, tbp))
-        directory = E5FileDialog.getExistingDirectory(
-            self,
-            self.tr("Select directory for binary translations"),
-            tbp)
+        Private slot handling the selection of a binary translations path.
         
-        if directory:
-            self.transBinPathEdit.setText(self.project.getRelativePath(
-                Utilities.toNativeSeparators(directory)))
+        @param path selected path
+        @type str
+        """
+        self.transBinPathPicker.setText(self.project.getRelativePath(path))
         
     @pyqtSlot()
     def on_deleteExceptionButton_clicked(self):
@@ -217,14 +198,14 @@
         """
         Public method to store the entered/modified data.
         """
-        tp = Utilities.toNativeSeparators(self.transPatternEdit.text())
+        tp = self.transPatternPicker.text()
         if tp:
             tp = self.project.getRelativePath(tp)
             self.project.pdata["TRANSLATIONPATTERN"] = [tp]
             self.project.translationsRoot = tp.split("%language%")[0]
         else:
             self.project.pdata["TRANSLATIONPATTERN"] = []
-        tp = Utilities.toNativeSeparators(self.transBinPathEdit.text())
+        tp = self.transBinPathPicker.text()
         if tp:
             tp = self.project.getRelativePath(tp)
             self.project.pdata["TRANSLATIONSBINPATH"] = [tp]
--- a/Project/TranslationPropertiesDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/Project/TranslationPropertiesDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -16,78 +16,70 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="_2">
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="textLabel1_3">
+     <property name="text">
+      <string>&amp;Translation Path Pattern:
+(Use '%language%' where the language code should be inserted, e.g. i18n/eric6_%language%.ts)</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+     <property name="buddy">
+      <cstring>transPatternPicker</cstring>
+     </property>
+    </widget>
+   </item>
    <item>
-    <layout class="QGridLayout" name="_3">
-     <item row="3" column="0">
-      <widget class="QLineEdit" name="transBinPathEdit">
-       <property name="toolTip">
-        <string>Enter the path for the binary translation files (*.qm)</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Binary Translations Path&lt;/b&gt;
-&lt;p&gt;Enter the directory for the binary translation files (*.qm). Leave it empty to store them together with the *.ts files.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="0" colspan="2">
-      <widget class="QLabel" name="label">
-       <property name="text">
-        <string>&amp;Binary Translations Path:</string>
-       </property>
-       <property name="buddy">
-        <cstring>transBinPathEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLineEdit" name="transPatternEdit">
-       <property name="toolTip">
-        <string>Enter the path pattern for the translation files</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Translation Pattern&lt;/b&gt;
+    <widget class="E5PathPicker" name="transPatternPicker" 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 pattern for the translation files</string>
+     </property>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Translation Pattern&lt;/b&gt;
 &lt;p&gt;Enter the path pattern for the translation files using %language% at the place of the language code (e.g. /path_to_eric/i18n/eric6_%language%.ts). This will result in translation files like /path_to_eric/i18n/eric6_de.ts.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="0" colspan="2">
-      <widget class="QLabel" name="textLabel1_3">
-       <property name="text">
-        <string>&amp;Translation Path Pattern:
-(Use '%language%' where the language code should be inserted, e.g. i18n/eric6_%language%.ts)</string>
-       </property>
-       <property name="wordWrap">
-        <bool>true</bool>
-       </property>
-       <property name="buddy">
-        <cstring>transPatternEdit</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1">
-      <widget class="QToolButton" name="transPatternButton">
-       <property name="toolTip">
-        <string>Show directory selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Translation Pattern&lt;/b&gt;
-&lt;p&gt;Select a translation file via a file selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="1">
-      <widget class="QToolButton" name="transBinPathButton">
-       <property name="toolTip">
-        <string>Show directory selection dialog</string>
-       </property>
-       <property name="whatsThis">
-        <string>&lt;b&gt;Binary Translations Path&lt;/b&gt;
-&lt;p&gt;Select the directory for the binary translations via a directory selection dialog.&lt;/p&gt;</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>&amp;Binary Translations Path:</string>
+     </property>
+     <property name="buddy">
+      <cstring>transBinPathPicker</cstring>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="E5PathPicker" name="transBinPathPicker" 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 for the binary translation files (*.qm)</string>
+     </property>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Binary Translations Path&lt;/b&gt;
+&lt;p&gt;Enter the directory for the binary translation files (*.qm). Leave it empty to store them together with the *.ts files.&lt;/p&gt;</string>
+     </property>
+    </widget>
    </item>
    <item>
     <widget class="QGroupBox" name="exceptionsGroup">
@@ -176,11 +168,17 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>E5PathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
-  <tabstop>transPatternEdit</tabstop>
-  <tabstop>transPatternButton</tabstop>
-  <tabstop>transBinPathEdit</tabstop>
-  <tabstop>transBinPathButton</tabstop>
+  <tabstop>transPatternPicker</tabstop>
+  <tabstop>transBinPathPicker</tabstop>
   <tabstop>exceptionsList</tabstop>
   <tabstop>exceptionEdit</tabstop>
   <tabstop>deleteExceptionButton</tabstop>
--- a/PyUnit/UnittestDialog.py	Sat Nov 28 19:47:23 2015 +0100
+++ b/PyUnit/UnittestDialog.py	Sat Nov 28 19:48:11 2015 +0100
@@ -21,9 +21,9 @@
     QListWidgetItem
 
 from E5Gui.E5Application import e5App
-from E5Gui.E5Completers import E5FileCompleter
-from E5Gui import E5MessageBox, E5FileDialog
+from E5Gui import E5MessageBox
 from E5Gui.E5MainWindow import E5MainWindow
+from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .Ui_UnittestDialog import Ui_UnittestDialog
 
@@ -63,7 +63,7 @@
             self.setObjectName(name)
         self.setupUi(self)
         
-        self.fileDialogButton.setIcon(UI.PixmapCache.getIcon("open.png"))
+        self.testsuitePicker.setMode(E5PathPickerModes.OpenFileMode)
         
         self.startButton = self.buttonBox.addButton(
             self.tr("Start"), QDialogButtonBox.ActionRole)
@@ -106,8 +106,6 @@
         self.progressLed.setDarkFactor(150)
         self.progressLed.off()
         
-        self.testSuiteCompleter = E5FileCompleter(self.testsuiteComboBox)
-        
         self.fileHistory = []
         self.testNameHistory = []
         self.running = False
@@ -155,19 +153,19 @@
         
     def insertProg(self, prog):
         """
-        Public slot to insert the filename prog into the testsuiteComboBox
+        Public slot to insert the filename prog into the testsuitePicker
         object.
         
         @param prog filename to be inserted (string)
         """
-        # prepend the selected file to the testsuite combobox
+        # prepend the selected file to the testsuite picker
         if prog is None:
             prog = ""
         if prog in self.fileHistory:
             self.fileHistory.remove(prog)
         self.fileHistory.insert(0, prog)
-        self.testsuiteComboBox.clear()
-        self.testsuiteComboBox.addItems(self.fileHistory)
+        self.testsuitePicker.clear()
+        self.testsuitePicker.addItems(self.fileHistory)
         
     def insertTestName(self, testName):
         """
@@ -185,9 +183,9 @@
         self.testComboBox.addItems(self.testNameHistory)
         
     @pyqtSlot()
-    def on_fileDialogButton_clicked(self):
+    def on_testsuitePicker_aboutToShowPathPickerDialog(self):
         """
-        Private slot to open a file dialog.
+        Private slot called before the test suite selection dialog is shown.
         """
         if self.dbs:
             py2Extensions = \
@@ -201,19 +199,20 @@
                 .format(py2Extensions, py3Extensions)
         else:
             filter = self.tr("Python Files (*.py);;All Files (*)")
-        prog = E5FileDialog.getOpenFileName(
-            self,
-            "",
-            self.testsuiteComboBox.currentText(),
-            filter)
-        
-        if not prog:
-            return
-        
-        self.insertProg(Utilities.toNativeSeparators(prog))
+        self.testsuitePicker.setFilters(filter)
         
     @pyqtSlot(str)
-    def on_testsuiteComboBox_editTextChanged(self, txt):
+    def on_testsuitePicker_pathSelected(self, suite):
+        """
+        Private slot called after a test suite has been selected.
+        
+        @param suite file name of the test suite
+        @type str
+        """
+        self.insertProg(suite)
+        
+    @pyqtSlot(str)
+    def on_testsuitePicker_editTextChanged(self, txt):
         """
         Private slot to handle changes of the test file name.
         
@@ -257,7 +256,7 @@
         if self.running:
             return
         
-        prog = self.testsuiteComboBox.currentText()
+        prog = self.testsuitePicker.currentText()
         if not prog:
             E5MessageBox.critical(
                 self,
@@ -621,7 +620,7 @@
 
         # now build the dialog
         from .Ui_UnittestStacktraceDialog import Ui_UnittestStacktraceDialog
-        self.dlg = QDialog()
+        self.dlg = QDialog(self)
         ui = Ui_UnittestStacktraceDialog()
         ui.setupUi(self.dlg)
         self.dlg.traceback = ui.traceback
--- a/PyUnit/UnittestDialog.ui	Sat Nov 28 19:47:23 2015 +0100
+++ b/PyUnit/UnittestDialog.ui	Sat Nov 28 19:48:11 2015 +0100
@@ -17,30 +17,30 @@
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
-      <string/>
+      <string>Test Parameters</string>
      </property>
-     <layout class="QGridLayout" name="_4">
-      <item row="1" column="1" colspan="2">
-       <widget class="QComboBox" name="testComboBox">
-        <property name="toolTip">
-         <string>Enter the test name. Leave empty to use the default name &quot;suite&quot;.</string>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QLabel" name="testsuiteLabel">
+        <property name="text">
+         <string>Enter test &amp;filename:</string>
         </property>
-        <property name="whatsThis">
-         <string>&lt;b&gt;Testname&lt;/b&gt;&lt;p&gt;Enter the name of the test to be performed. This name must follow the rules given by Python's unittest module. If this field is empty, the default name of &quot;suite&quot; will be used.&lt;/p&gt;</string>
-        </property>
-        <property name="editable">
-         <bool>true</bool>
+        <property name="buddy">
+         <cstring>testsuitePicker</cstring>
         </property>
        </widget>
       </item>
       <item row="0" column="1">
-       <widget class="QComboBox" name="testsuiteComboBox">
+       <widget class="E5ComboPathPicker" name="testsuitePicker" native="true">
         <property name="sizePolicy">
-         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
+        <property name="focusPolicy">
+         <enum>Qt::WheelFocus</enum>
+        </property>
         <property name="toolTip">
          <string>Enter name of file defining the testsuite</string>
         </property>
@@ -51,15 +51,6 @@
 found, the module will be inspected for proper test
 cases.&lt;/p&gt;</string>
         </property>
-        <property name="editable">
-         <bool>true</bool>
-        </property>
-        <property name="insertPolicy">
-         <enum>QComboBox::InsertAtTop</enum>
-        </property>
-        <property name="duplicatesEnabled">
-         <bool>false</bool>
-        </property>
        </widget>
       </item>
       <item row="1" column="0">
@@ -72,20 +63,16 @@
         </property>
        </widget>
       </item>
-      <item row="0" column="0">
-       <widget class="QLabel" name="testsuiteLabel">
-        <property name="text">
-         <string>Enter test &amp;filename:</string>
+      <item row="1" column="1">
+       <widget class="QComboBox" name="testComboBox">
+        <property name="toolTip">
+         <string>Enter the test name. Leave empty to use the default name &quot;suite&quot;.</string>
         </property>
-        <property name="buddy">
-         <cstring>testsuiteComboBox</cstring>
+        <property name="whatsThis">
+         <string>&lt;b&gt;Testname&lt;/b&gt;&lt;p&gt;Enter the name of the test to be performed. This name must follow the rules given by Python's unittest module. If this field is empty, the default name of &quot;suite&quot; will be used.&lt;/p&gt;</string>
         </property>
-       </widget>
-      </item>
-      <item row="0" column="2">
-       <widget class="QToolButton" name="fileDialogButton">
-        <property name="toolTip">
-         <string>Open a file selection dialog</string>
+        <property name="editable">
+         <bool>true</bool>
         </property>
        </widget>
       </item>
@@ -95,7 +82,7 @@
    <item>
     <widget class="QGroupBox" name="optionsGroup">
      <property name="title">
-      <string/>
+      <string>Run Parameters</string>
      </property>
      <layout class="QHBoxLayout" name="_5">
       <item>
@@ -137,7 +124,7 @@
    <item>
     <widget class="QGroupBox" name="progressGroupBox">
      <property name="title">
-      <string/>
+      <string>Progress</string>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
@@ -415,6 +402,12 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>E5ComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>E5Gui/E5PathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
    <class>E5Led</class>
    <extends>QFrame</extends>
    <header>E5Gui/E5Led.h</header>
@@ -422,8 +415,7 @@
   </customwidget>
  </customwidgets>
  <tabstops>
-  <tabstop>testsuiteComboBox</tabstop>
-  <tabstop>fileDialogButton</tabstop>
+  <tabstop>testsuitePicker</tabstop>
   <tabstop>testComboBox</tabstop>
   <tabstop>localCheckBox</tabstop>
   <tabstop>coverageCheckBox</tabstop>

eric ide

mercurial