Added support for PyQt6.

Tue, 22 Dec 2020 19:59:29 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 22 Dec 2020 19:59:29 +0100
changeset 7907
7991ea245c20
parent 7906
0af028b93cb3
child 7908
33afc8e96e19

Added support for PyQt6.

docs/changelog file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
eric6/APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
eric6/CodeTemplates/impl_pyqt6.py.tmpl file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.QtPage.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Preferences.ProgramsDialog.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Project.ProjectFormsBrowser.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Project.UicLoadUi.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Project.UicLoadUi5.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Project.UicLoadUi6.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/index-eric6.Project.html file | annotate | diff | comparison | revisions
eric6/Globals/__init__.py file | annotate | diff | comparison | revisions
eric6/Plugins/PluginWizardQFileDialog.py file | annotate | diff | comparison | revisions
eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py file | annotate | diff | comparison | revisions
eric6/Preferences/ConfigurationPages/HelpDocumentationPage.py file | annotate | diff | comparison | revisions
eric6/Preferences/ConfigurationPages/ProjectBrowserPage.py file | annotate | diff | comparison | revisions
eric6/Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
eric6/Preferences/ConfigurationPages/QtPage.ui file | annotate | diff | comparison | revisions
eric6/Preferences/ProgramsDialog.py file | annotate | diff | comparison | revisions
eric6/Preferences/__init__.py file | annotate | diff | comparison | revisions
eric6/Project/CreateDialogCodeDialog.py file | annotate | diff | comparison | revisions
eric6/Project/Project.py file | annotate | diff | comparison | revisions
eric6/Project/ProjectFormsBrowser.py file | annotate | diff | comparison | revisions
eric6/Project/ProjectTranslationsBrowser.py file | annotate | diff | comparison | revisions
eric6/Project/UicCompilerOptionsDialog.py file | annotate | diff | comparison | revisions
eric6/Project/UicCompilerOptionsDialog.ui file | annotate | diff | comparison | revisions
eric6/Project/UicLoadUi.py file | annotate | diff | comparison | revisions
eric6/Project/UicLoadUi5.py file | annotate | diff | comparison | revisions
eric6/Project/UicLoadUi6.py file | annotate | diff | comparison | revisions
eric6/UI/UserInterface.py file | annotate | diff | comparison | revisions
eric6/Utilities/__init__.py file | annotate | diff | comparison | revisions
eric6/i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_de.qm file | annotate | diff | comparison | revisions
eric6/i18n/eric6_de.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_en.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_es.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_it.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/docs/changelog	Mon Dec 21 13:36:24 2020 +0100
+++ b/docs/changelog	Tue Dec 22 19:59:29 2020 +0100
@@ -2,6 +2,8 @@
 ----------
 Version 21.1:
 - bug fixes
+- General
+  -- added support for PyQt6
 - Debugger
   -- added support for debugging multiprocess scripts using these methods
      --- QProcess.start(), QProcess.startDetached()
--- a/eric6.e4p	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6.e4p	Tue Dec 22 19:59:29 2020 +0100
@@ -813,7 +813,8 @@
     <Source>eric6/Project/SpellingPropertiesDialog.py</Source>
     <Source>eric6/Project/TranslationPropertiesDialog.py</Source>
     <Source>eric6/Project/UicCompilerOptionsDialog.py</Source>
-    <Source>eric6/Project/UicLoadUi.py</Source>
+    <Source>eric6/Project/UicLoadUi5.py</Source>
+    <Source>eric6/Project/UicLoadUi6.py</Source>
     <Source>eric6/Project/UserPropertiesDialog.py</Source>
     <Source>eric6/Project/__init__.py</Source>
     <Source>eric6/PyUnit/UnittestDialog.py</Source>
--- a/eric6/APIs/Python3/eric6.api	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/APIs/Python3/eric6.api	Tue Dec 22 19:59:29 2020 +0100
@@ -283,7 +283,6 @@
 eric6.DebugClients.Python.DebugBase.DebugBase.user_exception?4(excinfo, unhandled=False)
 eric6.DebugClients.Python.DebugBase.DebugBase.user_line?4(frame)
 eric6.DebugClients.Python.DebugBase.DebugBase?1(dbgClient)
-eric6.DebugClients.Python.DebugBase.GENERATOR_AND_COROUTINE_FLAGS?7
 eric6.DebugClients.Python.DebugBase.gRecursionLimit?7
 eric6.DebugClients.Python.DebugBase.printerr?4(s)
 eric6.DebugClients.Python.DebugBase.setRecursionLimit?4(limit)
@@ -6485,6 +6484,9 @@
 eric6.Preferences.ConfigurationPages.PythonPage.PythonPage.save?4()
 eric6.Preferences.ConfigurationPages.PythonPage.PythonPage?1()
 eric6.Preferences.ConfigurationPages.PythonPage.create?4(dlg)
+eric6.Preferences.ConfigurationPages.QtPage.QtPage.on_pyqt5VenvDlgButton_clicked?4()
+eric6.Preferences.ConfigurationPages.QtPage.QtPage.on_pyqt6VenvDlgButton_clicked?4()
+eric6.Preferences.ConfigurationPages.QtPage.QtPage.on_pyside2VenvDlgButton_clicked?4()
 eric6.Preferences.ConfigurationPages.QtPage.QtPage.on_qtPostfixEdit_textChanged?4(txt)
 eric6.Preferences.ConfigurationPages.QtPage.QtPage.on_qtPrefixEdit_textChanged?4(txt)
 eric6.Preferences.ConfigurationPages.QtPage.QtPage.save?4()
@@ -7160,7 +7162,8 @@
 eric6.Project.ProjectBrowserSortFilterProxyModel.ProjectBrowserSortFilterProxyModel.filterAcceptsRow?4(source_row, source_parent)
 eric6.Project.ProjectBrowserSortFilterProxyModel.ProjectBrowserSortFilterProxyModel.preferencesChanged?4()
 eric6.Project.ProjectBrowserSortFilterProxyModel.ProjectBrowserSortFilterProxyModel?1(filterType, parent=None)
-eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser.PyuicIndentDefault?7
+eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser.Pyuic5IndentDefault?7
+eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser.Pyuic6IndentDefault?7
 eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser._contextMenuRequested?5(coord)
 eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser._createPopupMenus?5()
 eric6.Project.ProjectFormsBrowser.ProjectFormsBrowser._initHookMethods?5()
@@ -7263,9 +7266,12 @@
 eric6.Project.TranslationPropertiesDialog.TranslationPropertiesDialog?1(project, new, parent)
 eric6.Project.UicCompilerOptionsDialog.UicCompilerOptionsDialog.getData?4()
 eric6.Project.UicCompilerOptionsDialog.UicCompilerOptionsDialog?1(compilerOptions, compiler, parent=None)
-eric6.Project.UicLoadUi.className?4(formFile, projectPath)
-eric6.Project.UicLoadUi.objectName?4(formFile, projectPath)
-eric6.Project.UicLoadUi.signatures?4(formFile, projectPath)
+eric6.Project.UicLoadUi5.className?4(formFile, projectPath)
+eric6.Project.UicLoadUi5.objectName?4(formFile, projectPath)
+eric6.Project.UicLoadUi5.signatures?4(formFile, projectPath)
+eric6.Project.UicLoadUi6.className?4(formFile, projectPath)
+eric6.Project.UicLoadUi6.objectName?4(formFile, projectPath)
+eric6.Project.UicLoadUi6.signatures?4(formFile, projectPath)
 eric6.Project.UserPropertiesDialog.UserPropertiesDialog.storeData?4()
 eric6.Project.UserPropertiesDialog.UserPropertiesDialog?1(project, parent=None, name=None)
 eric6.PyUnit.UnittestDialog.QtTestResult.addError?4(test, err)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/CodeTemplates/impl_pyqt6.py.tmpl	Tue Dec 22 19:59:29 2020 +0100
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+"""
+Module implementing $CLASSNAME$.
+"""
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import $SUPERCLASS$
+
+from .Ui_$FORMFILE$ import Ui_$FORMCLASS$
+
+
+class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$):
+    """
+    Class documentation goes here.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super($CLASSNAME$, self).__init__(parent)
+        self.setupUi(self)
Binary file eric6/Documentation/Help/source.qch has changed
--- a/eric6/Documentation/Help/source.qhp	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Help/source.qhp	Tue Dec 22 19:59:29 2020 +0100
@@ -849,7 +849,8 @@
             <section title="eric6.Project.SpellingPropertiesDialog" ref="eric6.Project.SpellingPropertiesDialog.html" />
             <section title="eric6.Project.TranslationPropertiesDialog" ref="eric6.Project.TranslationPropertiesDialog.html" />
             <section title="eric6.Project.UicCompilerOptionsDialog" ref="eric6.Project.UicCompilerOptionsDialog.html" />
-            <section title="eric6.Project.UicLoadUi" ref="eric6.Project.UicLoadUi.html" />
+            <section title="eric6.Project.UicLoadUi5" ref="eric6.Project.UicLoadUi5.html" />
+            <section title="eric6.Project.UicLoadUi6" ref="eric6.Project.UicLoadUi6.html" />
             <section title="eric6.Project.UserPropertiesDialog" ref="eric6.Project.UserPropertiesDialog.html" />
           </section>
           <section title="eric6.PyUnit" ref="index-eric6.PyUnit.html">
@@ -12319,7 +12320,13 @@
       <keyword name="QtPage" id="QtPage" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage" />
       <keyword name="QtPage (Constructor)" id="QtPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.__init__" />
       <keyword name="QtPage (Module)" id="QtPage (Module)" ref="eric6.Preferences.ConfigurationPages.QtPage.html" />
+      <keyword name="QtPage.__populateAndSetVenvComboBox" id="QtPage.__populateAndSetVenvComboBox" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.__populateAndSetVenvComboBox" />
+      <keyword name="QtPage.__populateAndSetVenvComboBoxes" id="QtPage.__populateAndSetVenvComboBoxes" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.__populateAndSetVenvComboBoxes" />
+      <keyword name="QtPage.__showVirtualEnvManager" id="QtPage.__showVirtualEnvManager" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.__showVirtualEnvManager" />
       <keyword name="QtPage.__updateQtSample" id="QtPage.__updateQtSample" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.__updateQtSample" />
+      <keyword name="QtPage.on_pyqt5VenvDlgButton_clicked" id="QtPage.on_pyqt5VenvDlgButton_clicked" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.on_pyqt5VenvDlgButton_clicked" />
+      <keyword name="QtPage.on_pyqt6VenvDlgButton_clicked" id="QtPage.on_pyqt6VenvDlgButton_clicked" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.on_pyqt6VenvDlgButton_clicked" />
+      <keyword name="QtPage.on_pyside2VenvDlgButton_clicked" id="QtPage.on_pyside2VenvDlgButton_clicked" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.on_pyside2VenvDlgButton_clicked" />
       <keyword name="QtPage.on_qtPostfixEdit_textChanged" id="QtPage.on_qtPostfixEdit_textChanged" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.on_qtPostfixEdit_textChanged" />
       <keyword name="QtPage.on_qtPrefixEdit_textChanged" id="QtPage.on_qtPrefixEdit_textChanged" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.on_qtPrefixEdit_textChanged" />
       <keyword name="QtPage.save" id="QtPage.save" ref="eric6.Preferences.ConfigurationPages.QtPage.html#QtPage.save" />
@@ -15224,7 +15231,8 @@
       <keyword name="UicCompilerOptionsDialog (Constructor)" id="UicCompilerOptionsDialog (Constructor)" ref="eric6.Project.UicCompilerOptionsDialog.html#UicCompilerOptionsDialog.__init__" />
       <keyword name="UicCompilerOptionsDialog (Module)" id="UicCompilerOptionsDialog (Module)" ref="eric6.Project.UicCompilerOptionsDialog.html" />
       <keyword name="UicCompilerOptionsDialog.getData" id="UicCompilerOptionsDialog.getData" ref="eric6.Project.UicCompilerOptionsDialog.html#UicCompilerOptionsDialog.getData" />
-      <keyword name="UicLoadUi (Module)" id="UicLoadUi (Module)" ref="eric6.Project.UicLoadUi.html" />
+      <keyword name="UicLoadUi5 (Module)" id="UicLoadUi5 (Module)" ref="eric6.Project.UicLoadUi5.html" />
+      <keyword name="UicLoadUi6 (Module)" id="UicLoadUi6 (Module)" ref="eric6.Project.UicLoadUi6.html" />
       <keyword name="UniqueNamespace" id="UniqueNamespace" ref="eric6.E5Network.E5RFC6266.html#UniqueNamespace" />
       <keyword name="UniqueNamespace.__setitem__" id="UniqueNamespace.__setitem__" ref="eric6.E5Network.E5RFC6266.html#UniqueNamespace.__setitem__" />
       <keyword name="UnittestDialog" id="UnittestDialog" ref="eric6.PyUnit.UnittestDialog.html#UnittestDialog" />
@@ -17050,7 +17058,8 @@
       <keyword name="__initializeCondaInterface" id="__initializeCondaInterface" ref="eric6.CondaInterface.__init__.html#__initializeCondaInterface" />
       <keyword name="__jsSyntaxCheck" id="__jsSyntaxCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#__jsSyntaxCheck" />
       <keyword name="__jsonSyntaxCheck" id="__jsonSyntaxCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsonCheckSyntax.html#__jsonSyntaxCheck" />
-      <keyword name="__mapType" id="__mapType" ref="eric6.Project.UicLoadUi.html#__mapType" />
+      <keyword name="__mapType" id="__mapType" ref="eric6.Project.UicLoadUi5.html#__mapType" />
+      <keyword name="__mapType" id="__mapType" ref="eric6.Project.UicLoadUi6.html#__mapType" />
       <keyword name="__messageBox" id="__messageBox" ref="eric6.E5Gui.E5MessageBox.html#__messageBox" />
       <keyword name="__pyName" id="__pyName" ref="compileUiFiles.html#__pyName" />
       <keyword name="__pyName" id="__pyName" ref="eric6.Utilities.uic.html#__pyName" />
@@ -17149,7 +17158,8 @@
       <keyword name="checkTryExceptPass" id="checkTryExceptPass" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html#checkTryExceptPass" />
       <keyword name="checkWeakCryptographicKey" id="checkWeakCryptographicKey" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#checkWeakCryptographicKey" />
       <keyword name="checkYamlLoad" id="checkYamlLoad" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html#checkYamlLoad" />
-      <keyword name="className" id="className" ref="eric6.Project.UicLoadUi.html#className" />
+      <keyword name="className" id="className" ref="eric6.Project.UicLoadUi5.html#className" />
+      <keyword name="className" id="className" ref="eric6.Project.UicLoadUi6.html#className" />
       <keyword name="cleanUp" id="cleanUp" ref="install-debugclients.html#cleanUp" />
       <keyword name="cleanUp" id="cleanUp" ref="install.html#cleanUp" />
       <keyword name="cleanUpLinuxSpecifics" id="cleanUpLinuxSpecifics" ref="install.html#cleanUpLinuxSpecifics" />
@@ -17812,7 +17822,8 @@
       <keyword name="normcaseabspath" id="normcaseabspath" ref="eric6.Utilities.__init__.html#normcaseabspath" />
       <keyword name="normcasepath" id="normcasepath" ref="eric6.Utilities.__init__.html#normcasepath" />
       <keyword name="normjoinpath" id="normjoinpath" ref="eric6.Utilities.__init__.html#normjoinpath" />
-      <keyword name="objectName" id="objectName" ref="eric6.Project.UicLoadUi.html#objectName" />
+      <keyword name="objectName" id="objectName" ref="eric6.Project.UicLoadUi5.html#objectName" />
+      <keyword name="objectName" id="objectName" ref="eric6.Project.UicLoadUi6.html#objectName" />
       <keyword name="okToClearData" id="okToClearData" ref="eric6.E5Gui.E5MessageBox.html#okToClearData" />
       <keyword name="open_with_encoding" id="open_with_encoding" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.html#open_with_encoding" />
       <keyword name="parseEnvironmentString" id="parseEnvironmentString" ref="eric6.Utilities.__init__.html#parseEnvironmentString" />
@@ -18004,7 +18015,8 @@
       <keyword name="shouldResetLayout" id="shouldResetLayout" ref="eric6.Preferences.__init__.html#shouldResetLayout" />
       <keyword name="shutilCopy" id="shutilCopy" ref="install-debugclients.html#shutilCopy" />
       <keyword name="shutilCopy" id="shutilCopy" ref="install.html#shutilCopy" />
-      <keyword name="signatures" id="signatures" ref="eric6.Project.UicLoadUi.html#signatures" />
+      <keyword name="signatures" id="signatures" ref="eric6.Project.UicLoadUi5.html#signatures" />
+      <keyword name="signatures" id="signatures" ref="eric6.Project.UicLoadUi6.html#signatures" />
       <keyword name="simpleAppStartup" id="simpleAppStartup" ref="eric6.Toolbox.Startup.html#simpleAppStartup" />
       <keyword name="sort" id="sort" ref="eric6.Graphics.GraphicsUtilities.html#sort" />
       <keyword name="speedString" id="speedString" ref="eric6.WebBrowser.Download.DownloadUtilities.html#speedString" />
@@ -18808,7 +18820,8 @@
       <file>eric6.Project.SpellingPropertiesDialog.html</file>
       <file>eric6.Project.TranslationPropertiesDialog.html</file>
       <file>eric6.Project.UicCompilerOptionsDialog.html</file>
-      <file>eric6.Project.UicLoadUi.html</file>
+      <file>eric6.Project.UicLoadUi5.html</file>
+      <file>eric6.Project.UicLoadUi6.html</file>
       <file>eric6.Project.UserPropertiesDialog.html</file>
       <file>eric6.PyUnit.UnittestDialog.html</file>
       <file>eric6.QScintilla.APIsManager.html</file>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html	Tue Dec 22 19:59:29 2020 +0100
@@ -28,7 +28,7 @@
 <h3>Global Attributes</h3>
 
 <table>
-<tr><td>GENERATOR_AND_COROUTINE_FLAGS</td></tr><tr><td>gRecursionLimit</td></tr>
+<tr><td>gRecursionLimit</td></tr>
 </table>
 <h3>Classes</h3>
 
--- a/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.QtPage.html	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.QtPage.html	Tue Dec 22 19:59:29 2020 +0100
@@ -77,10 +77,34 @@
 <td>Constructor</td>
 </tr>
 <tr>
+<td><a href="#QtPage.__populateAndSetVenvComboBox">__populateAndSetVenvComboBox</a></td>
+<td>Private method to populate and set the virtual environment combo boxes.</td>
+</tr>
+<tr>
+<td><a href="#QtPage.__populateAndSetVenvComboBoxes">__populateAndSetVenvComboBoxes</a></td>
+<td>Private method to populate the virtual environment combo boxes.</td>
+</tr>
+<tr>
+<td><a href="#QtPage.__showVirtualEnvManager">__showVirtualEnvManager</a></td>
+<td>Private method to show the virtual environment manager dialog.</td>
+</tr>
+<tr>
 <td><a href="#QtPage.__updateQtSample">__updateQtSample</a></td>
 <td>Private slot to update the Qt tools sample label.</td>
 </tr>
 <tr>
+<td><a href="#QtPage.on_pyqt5VenvDlgButton_clicked">on_pyqt5VenvDlgButton_clicked</a></td>
+<td>Private slot to show the virtual environment manager dialog.</td>
+</tr>
+<tr>
+<td><a href="#QtPage.on_pyqt6VenvDlgButton_clicked">on_pyqt6VenvDlgButton_clicked</a></td>
+<td>Private slot to show the virtual environment manager dialog.</td>
+</tr>
+<tr>
+<td><a href="#QtPage.on_pyside2VenvDlgButton_clicked">on_pyside2VenvDlgButton_clicked</a></td>
+<td>Private slot to show the virtual environment manager dialog.</td>
+</tr>
+<tr>
 <td><a href="#QtPage.on_qtPostfixEdit_textChanged">on_qtPostfixEdit_textChanged</a></td>
 <td>Private slot to handle a change in the entered Qt directory.</td>
 </tr>
@@ -106,6 +130,49 @@
 <p>
         Constructor
 </p>
+<a NAME="QtPage.__populateAndSetVenvComboBox" ID="QtPage.__populateAndSetVenvComboBox"></a>
+<h4>QtPage.__populateAndSetVenvComboBox</h4>
+<b>__populateAndSetVenvComboBox</b>(<i>comboBox, envKey, initial</i>)
+
+<p>
+        Private method to populate and set the virtual environment combo boxes.
+</p>
+<dl>
+
+<dt><i>comboBox</i> (QComboBox)</dt>
+<dd>
+reference to the combo box to be populated
+</dd>
+<dt><i>envKey</i> (str)</dt>
+<dd>
+preferences key for the environment
+</dd>
+<dt><i>initial</i> (bool)</dt>
+<dd>
+flag indicating an initial population
+</dd>
+</dl>
+<a NAME="QtPage.__populateAndSetVenvComboBoxes" ID="QtPage.__populateAndSetVenvComboBoxes"></a>
+<h4>QtPage.__populateAndSetVenvComboBoxes</h4>
+<b>__populateAndSetVenvComboBoxes</b>(<i>initial</i>)
+
+<p>
+        Private method to populate the virtual environment combo boxes.
+</p>
+<dl>
+
+<dt><i>initial</i> (bool)</dt>
+<dd>
+flag indicating an initial population
+</dd>
+</dl>
+<a NAME="QtPage.__showVirtualEnvManager" ID="QtPage.__showVirtualEnvManager"></a>
+<h4>QtPage.__showVirtualEnvManager</h4>
+<b>__showVirtualEnvManager</b>(<i></i>)
+
+<p>
+        Private method to show the virtual environment manager dialog.
+</p>
 <a NAME="QtPage.__updateQtSample" ID="QtPage.__updateQtSample"></a>
 <h4>QtPage.__updateQtSample</h4>
 <b>__updateQtSample</b>(<i></i>)
@@ -113,6 +180,27 @@
 <p>
         Private slot to update the Qt tools sample label.
 </p>
+<a NAME="QtPage.on_pyqt5VenvDlgButton_clicked" ID="QtPage.on_pyqt5VenvDlgButton_clicked"></a>
+<h4>QtPage.on_pyqt5VenvDlgButton_clicked</h4>
+<b>on_pyqt5VenvDlgButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to show the virtual environment manager dialog.
+</p>
+<a NAME="QtPage.on_pyqt6VenvDlgButton_clicked" ID="QtPage.on_pyqt6VenvDlgButton_clicked"></a>
+<h4>QtPage.on_pyqt6VenvDlgButton_clicked</h4>
+<b>on_pyqt6VenvDlgButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to show the virtual environment manager dialog.
+</p>
+<a NAME="QtPage.on_pyside2VenvDlgButton_clicked" ID="QtPage.on_pyside2VenvDlgButton_clicked"></a>
+<h4>QtPage.on_pyside2VenvDlgButton_clicked</h4>
+<b>on_pyside2VenvDlgButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to show the virtual environment manager dialog.
+</p>
 <a NAME="QtPage.on_qtPostfixEdit_textChanged" ID="QtPage.on_qtPostfixEdit_textChanged"></a>
 <h4>QtPage.on_qtPostfixEdit_textChanged</h4>
 <b>on_qtPostfixEdit_textChanged</b>(<i>txt</i>)
--- a/eric6/Documentation/Source/eric6.Preferences.ProgramsDialog.html	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Preferences.ProgramsDialog.html	Tue Dec 22 19:59:29 2020 +0100
@@ -141,7 +141,7 @@
 </dl>
 <a NAME="ProgramsDialog.__createProgramEntry" ID="ProgramsDialog.__createProgramEntry"></a>
 <h4>ProgramsDialog.__createProgramEntry</h4>
-<b>__createProgramEntry</b>(<i>description, exe, versionCommand="", versionStartsWith="", versionPosition=0, version="", versionCleanup=None, versionRe=None, exeModule=None</i>)
+<b>__createProgramEntry</b>(<i>description, exe, versionCommand="", versionStartsWith="", versionPosition=None, version="", versionCleanup=None, versionRe=None, exeModule=None</i>)
 
 <p>
         Private method to generate a program entry.
--- a/eric6/Documentation/Source/eric6.Project.ProjectFormsBrowser.html	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Project.ProjectFormsBrowser.html	Tue Dec 22 19:59:29 2020 +0100
@@ -80,7 +80,7 @@
 <h3>Class Attributes</h3>
 
 <table>
-<tr><td>PyuicIndentDefault</td></tr>
+<tr><td>Pyuic5IndentDefault</td></tr><tr><td>Pyuic6IndentDefault</td></tr>
 </table>
 <h3>Class Methods</h3>
 
@@ -165,11 +165,11 @@
 </tr>
 <tr>
 <td><a href="#ProjectFormsBrowser.__readStderr">__readStderr</a></td>
-<td>Private slot to handle the readyReadStandardError signal of the pyuic5/pyside2-uic process.</td>
+<td>Private slot to handle the readyReadStandardError signal of the pyuic5/pyuic6/pyside2-uic process.</td>
 </tr>
 <tr>
 <td><a href="#ProjectFormsBrowser.__readStdout">__readStdout</a></td>
-<td>Private slot to handle the readyReadStandardOutput signal of the pyuic5/pyside2-uic process.</td>
+<td>Private slot to handle the readyReadStandardOutput signal of the pyuic5/pyuic6/pyside2-uic process.</td>
 </tr>
 <tr>
 <td><a href="#ProjectFormsBrowser.__resetUiCompiler">__resetUiCompiler</a></td>
@@ -413,7 +413,7 @@
 
 <p>
         Private slot to handle the readyReadStandardError signal of the
-        pyuic5/pyside2-uic process.
+        pyuic5/pyuic6/pyside2-uic process.
 </p>
 <a NAME="ProjectFormsBrowser.__readStdout" ID="ProjectFormsBrowser.__readStdout"></a>
 <h4>ProjectFormsBrowser.__readStdout</h4>
@@ -421,7 +421,7 @@
 
 <p>
         Private slot to handle the readyReadStandardOutput signal of the
-        pyuic5/pyside2-uic process.
+        pyuic5/pyuic6/pyside2-uic process.
 </p>
 <a NAME="ProjectFormsBrowser.__resetUiCompiler" ID="ProjectFormsBrowser.__resetUiCompiler"></a>
 <h4>ProjectFormsBrowser.__resetUiCompiler</h4>
--- a/eric6/Documentation/Source/eric6.Project.UicLoadUi.html	Mon Dec 21 13:36:24 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.Project.UicLoadUi</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body>
-<a NAME="top" ID="top"></a>
-<h1>eric6.Project.UicLoadUi</h1>
-
-<p>
-Module to get the object name, class name or signatures of a Qt form (*.ui).
-</p>
-<h3>Global Attributes</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-
-<table>
-
-<tr>
-<td><a href="#__mapType">__mapType</a></td>
-<td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td>
-</tr>
-<tr>
-<td><a href="#className">className</a></td>
-<td>Function to get the class name of a form.</td>
-</tr>
-<tr>
-<td><a href="#objectName">objectName</a></td>
-<td>Function to get the object name of a form.</td>
-</tr>
-<tr>
-<td><a href="#signatures">signatures</a></td>
-<td>Function to get the signatures of form elements.</td>
-</tr>
-</table>
-<hr />
-<hr />
-<a NAME="__mapType" ID="__mapType"></a>
-<h2>__mapType</h2>
-<b>__mapType</b>(<i>type_</i>)
-
-<p>
-    Private function to map a type as reported by Qt's meta object to the
-    correct Python type.
-</p>
-<dl>
-
-<dt><i>type_</i> (QByteArray or bytes)</dt>
-<dd>
-type as reported by Qt
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-mapped Python type
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-str
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
-<a NAME="className" ID="className"></a>
-<h2>className</h2>
-<b>className</b>(<i>formFile, projectPath</i>)
-
-<p>
-    Function to get the class name of a form.
-</p>
-<dl>
-
-<dt><i>formFile</i> (str)</dt>
-<dd>
-file name of the form
-</dd>
-<dt><i>projectPath</i> (str)</dt>
-<dd>
-directory name of the project
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
-<a NAME="objectName" ID="objectName"></a>
-<h2>objectName</h2>
-<b>objectName</b>(<i>formFile, projectPath</i>)
-
-<p>
-    Function to get the object name of a form.
-</p>
-<dl>
-
-<dt><i>formFile</i> (str)</dt>
-<dd>
-file name of the form
-</dd>
-<dt><i>projectPath</i> (str)</dt>
-<dd>
-directory name of the project
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
-<a NAME="signatures" ID="signatures"></a>
-<h2>signatures</h2>
-<b>signatures</b>(<i>formFile, projectPath</i>)
-
-<p>
-    Function to get the signatures of form elements.
-</p>
-<dl>
-
-<dt><i>formFile</i> (str)</dt>
-<dd>
-file name of the form
-</dd>
-<dt><i>projectPath</i> (str)</dt>
-<dd>
-directory name of the project
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Documentation/Source/eric6.Project.UicLoadUi5.html	Tue Dec 22 19:59:29 2020 +0100
@@ -0,0 +1,153 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Project.UicLoadUi5</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric6.Project.UicLoadUi5</h1>
+
+<p>
+Module to get the object name, class name or signatures of a Qt form (*.ui).
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#__mapType">__mapType</a></td>
+<td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td>
+</tr>
+<tr>
+<td><a href="#className">className</a></td>
+<td>Function to get the class name of a form.</td>
+</tr>
+<tr>
+<td><a href="#objectName">objectName</a></td>
+<td>Function to get the object name of a form.</td>
+</tr>
+<tr>
+<td><a href="#signatures">signatures</a></td>
+<td>Function to get the signatures of form elements.</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="__mapType" ID="__mapType"></a>
+<h2>__mapType</h2>
+<b>__mapType</b>(<i>type_</i>)
+
+<p>
+    Private function to map a type as reported by Qt's meta object to the
+    correct Python type.
+</p>
+<dl>
+
+<dt><i>type_</i> (QByteArray or bytes)</dt>
+<dd>
+type as reported by Qt
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+mapped Python type
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="className" ID="className"></a>
+<h2>className</h2>
+<b>className</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the class name of a form.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="objectName" ID="objectName"></a>
+<h2>objectName</h2>
+<b>objectName</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the object name of a form.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="signatures" ID="signatures"></a>
+<h2>signatures</h2>
+<b>signatures</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the signatures of form elements.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Documentation/Source/eric6.Project.UicLoadUi6.html	Tue Dec 22 19:59:29 2020 +0100
@@ -0,0 +1,153 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Project.UicLoadUi6</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric6.Project.UicLoadUi6</h1>
+
+<p>
+Module to get the object name, class name or signatures of a Qt form (*.ui).
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#__mapType">__mapType</a></td>
+<td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td>
+</tr>
+<tr>
+<td><a href="#className">className</a></td>
+<td>Function to get the class name of a form.</td>
+</tr>
+<tr>
+<td><a href="#objectName">objectName</a></td>
+<td>Function to get the object name of a form.</td>
+</tr>
+<tr>
+<td><a href="#signatures">signatures</a></td>
+<td>Function to get the signatures of form elements.</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="__mapType" ID="__mapType"></a>
+<h2>__mapType</h2>
+<b>__mapType</b>(<i>type_</i>)
+
+<p>
+    Private function to map a type as reported by Qt's meta object to the
+    correct Python type.
+</p>
+<dl>
+
+<dt><i>type_</i> (QByteArray or bytes)</dt>
+<dd>
+type as reported by Qt
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+mapped Python type
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="className" ID="className"></a>
+<h2>className</h2>
+<b>className</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the class name of a form.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="objectName" ID="objectName"></a>
+<h2>objectName</h2>
+<b>objectName</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the object name of a form.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="signatures" ID="signatures"></a>
+<h2>signatures</h2>
+<b>signatures</b>(<i>formFile, projectPath</i>)
+
+<p>
+    Function to get the signatures of form elements.
+</p>
+<dl>
+
+<dt><i>formFile</i> (str)</dt>
+<dd>
+file name of the form
+</dd>
+<dt><i>projectPath</i> (str)</dt>
+<dd>
+directory name of the project
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/eric6/Documentation/Source/index-eric6.Project.html	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Documentation/Source/index-eric6.Project.html	Tue Dec 22 19:59:29 2020 +0100
@@ -166,7 +166,11 @@
 <td>Module implementing a dialog to enter some non-common uic compiler options.</td>
 </tr>
 <tr>
-<td><a href="eric6.Project.UicLoadUi.html">UicLoadUi</a></td>
+<td><a href="eric6.Project.UicLoadUi5.html">UicLoadUi5</a></td>
+<td>Module to get the object name, class name or signatures of a Qt form (*.ui).</td>
+</tr>
+<tr>
+<td><a href="eric6.Project.UicLoadUi6.html">UicLoadUi6</a></td>
 <td>Module to get the object name, class name or signatures of a Qt form (*.ui).</td>
 </tr>
 <tr>
--- a/eric6/Globals/__init__.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Globals/__init__.py	Tue Dec 22 19:59:29 2020 +0100
@@ -282,11 +282,14 @@
     path = ""
     
     # step 1: check, if the user has configured a tools path
-    path = Preferences.getQt("PyQtToolsDir")
+    if version == 5:
+        path = Preferences.getQt("PyQtToolsDir")
+    elif version == 6:
+        path = Preferences.getQt("PyQt6ToolsDir")
     
-    # step 2: determine from used Python interpreter (pyrcc is test object)
+    # step 2: determine from used Python interpreter (pylupdate is test object)
     if not path:
-        program = "pyrcc{0}".format(version)
+        program = "pylupdate{0}".format(version)
         if isWindowsPlatform():
             program += ".exe"
             dirName = os.path.dirname(sys.executable)
--- a/eric6/Plugins/PluginWizardQFileDialog.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Plugins/PluginWizardQFileDialog.py	Tue Dec 22 19:59:29 2020 +0100
@@ -48,7 +48,7 @@
         self.__ui = ui
         
         # PyQt5
-        self.__pyqtRe = re.compile(r"(?:import|from)\s+PyQt([5])")
+        self.__pyqtRe = re.compile(r"(?:import|from)\s+PyQt([56])")
 
     def activate(self):
         """
@@ -165,7 +165,7 @@
                     # unknown
                     dialogVariant = 0
                 else:
-                    # PyQt5
+                    # PyQt5/PyQt6
                     dialogVariant = int(match.group(1))
             elif variant == "E5FileDialog":
                 # E5FileDialog
--- a/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py	Tue Dec 22 19:59:29 2020 +0100
@@ -44,8 +44,6 @@
         self.eStartWithCompleter = E5FileCompleter(self.eStartWith)
         self.eWorkDirCompleter = E5DirCompleter(self.eWorkDir)
         
-        self.__dialogVariant = dialogVariant
-        
         self.__typeButtonsGroup = QButtonGroup(self)
         self.__typeButtonsGroup.setExclusive(True)
         self.__typeButtonsGroup.addButton(self.rOpenFile, 1)
@@ -70,11 +68,11 @@
             self.pyqtComboBox.setCurrentIndex(0)
             self.pyqtComboBox.setEnabled(False)
         else:
-            self.pyqtComboBox.addItems(["PyQt5"])
+            self.pyqtComboBox.addItems(["PyQt5", "PyQt6"])
             self.setWindowTitle(self.tr("QFileDialog Wizard"))
             if self.__dialogVariant == 5:
                 self.pyqtComboBox.setCurrentIndex(0)
-            elif self.__dialogVariant == 4:
+            elif self.__dialogVariant == 6:
                 self.pyqtComboBox.setCurrentIndex(1)
             else:
                 self.pyqtComboBox.setCurrentIndex(0)
@@ -116,12 +114,12 @@
         self.rfOpenFiles.setEnabled(txt == "eric")
         self.rfSaveFile.setEnabled(txt == "eric")
         
-        self.rOpenFileUrl.setEnabled(txt == "PyQt5")
-        self.rOpenFileUrls.setEnabled(txt == "PyQt5")
-        self.rSaveFileUrl.setEnabled(txt == "PyQt5")
-        self.rDirectoryUrl.setEnabled(txt == "PyQt5")
+        self.rOpenFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
+        self.rOpenFileUrls.setEnabled(txt in ["PyQt5", "PyQt6"])
+        self.rSaveFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
+        self.rDirectoryUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
         
-        if txt == "PyQt5":
+        if txt in ["PyQt5", "PyQt6"]:
             if self.rfOpenFile.isChecked():
                 self.rOpenFile.setChecked(True)
             elif self.rfOpenFiles.isChecked():
@@ -142,6 +140,8 @@
             self.__dialogVariant = -1
         elif txt == "PyQt5":
             self.__dialogVariant = 5
+        elif txt == "PyQt6":
+            self.__dialogVariant = 6
         else:
             # default is PyQt5
             self.__dialogVariant = 5
@@ -346,8 +346,9 @@
         @param checkedId id of the clicked button (integer)
         """
         enable = (
-            (self.__dialogVariant in (-1, 4) and checkedId in [11, 12, 13]) or
-            (self.__dialogVariant == 5 and checkedId in [1, 2, 3, 21, 22, 23])
+            (self.__dialogVariant in (-1, ) and checkedId in [11, 12, 13]) or
+            (self.__dialogVariant in (5, 6) and
+             checkedId in [1, 2, 3, 21, 22, 23])
         )
         
         self.lInitialFilter.setEnabled(enable)
@@ -399,10 +400,10 @@
         filterVariable = self.eFilterVariable.text()
         if not filterVariable:
             if (
-                (self.__dialogVariant in (-1, 4) and
+                (self.__dialogVariant in (-1, ) and
                  self.__typeButtonsGroup.checkedButton() in [
                     self.rfOpenFile, self.rfOpenFiles, self.rfSaveFile]) or
-                (self.__dialogVariant == 5 and
+                (self.__dialogVariant in (5, 6) and
                  self.__typeButtonsGroup.checkedButton() in [
                     self.rOpenFile, self.rOpenFiles, self.rSaveFile])
             ):
@@ -464,7 +465,7 @@
                 else:
                     fmt = 'self.tr("{0}")'
                 code += fmt.format(self.eFilters.text())
-            if self.rfOpenFile.isChecked() or self.__dialogVariant == 5:
+            if self.rfOpenFile.isChecked() or self.__dialogVariant in (5, 6):
                 if self.eInitialFilter.text() == "":
                     initialFilter = "None"
                 else:
@@ -527,7 +528,7 @@
                 else:
                     fmt = 'self.tr("{0}")'
                 code += fmt.format(self.eFilters.text())
-            if self.rfOpenFiles.isChecked() or self.__dialogVariant == 5:
+            if self.rfOpenFiles.isChecked() or self.__dialogVariant in (5, 6):
                 if self.eInitialFilter.text() == "":
                     initialFilter = "None"
                 else:
@@ -593,7 +594,7 @@
                 else:
                     fmt = 'self.tr("{0}")'
                 code += fmt.format(self.eFilters.text())
-            if self.rfSaveFile.isChecked() or self.__dialogVariant == 5:
+            if self.rfSaveFile.isChecked() or self.__dialogVariant in (5, 6):
                 if self.eInitialFilter.text() == "":
                     initialFilter = "None"
                 else:
--- a/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.py	Tue Dec 22 19:59:29 2020 +0100
@@ -13,7 +13,6 @@
 from .Ui_HelpDocumentationPage import Ui_HelpDocumentationPage
 
 import Preferences
-import Utilities
 
 
 class HelpDocumentationPage(ConfigurationPageBase, Ui_HelpDocumentationPage):
@@ -49,8 +48,6 @@
         self.pyside2DocDirPicker.setFilters(self.tr(
             "HTML Files (*.html *.htm);;All Files (*)"))
         
-        self.pyside2Group.setEnabled(Utilities.checkPyside())
-        
         # set initial values
         self.ericDocDirPicker.setText(
             Preferences.getHelp("EricDocDir"), toNative=False)
--- a/eric6/Preferences/ConfigurationPages/ProjectBrowserPage.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/ProjectBrowserPage.py	Tue Dec 22 19:59:29 2020 +0100
@@ -101,7 +101,10 @@
             flags |= SourcesBrowserFlag
         if self.formsBrowserCheckBox.isChecked():
             flags |= FormsBrowserFlag
-        if self.resourcesBrowserCheckBox.isChecked():
+        if (
+            self.resourcesBrowserCheckBox.isChecked() and
+            projectType not in ("PyQt6", "PyQt6C")
+        ):
             flags |= ResourcesBrowserFlag
         if self.translationsBrowserCheckBox.isChecked():
             flags |= TranslationsBrowserFlag
@@ -131,7 +134,13 @@
         
         self.sourcesBrowserCheckBox.setChecked(flags & SourcesBrowserFlag)
         self.formsBrowserCheckBox.setChecked(flags & FormsBrowserFlag)
-        self.resourcesBrowserCheckBox.setChecked(flags & ResourcesBrowserFlag)
+        self.resourcesBrowserCheckBox.setEnabled(
+            projectType not in ("PyQt6", "PyQt6C"))
+        if projectType in ("PyQt6", "PyQt6C"):
+            self.resourcesBrowserCheckBox.setChecked(False)
+        else:
+            self.resourcesBrowserCheckBox.setChecked(
+                flags & ResourcesBrowserFlag)
         self.translationsBrowserCheckBox.setChecked(
             flags & TranslationsBrowserFlag)
         self.interfacesBrowserCheckBox.setChecked(
--- a/eric6/Preferences/ConfigurationPages/QtPage.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/QtPage.py	Tue Dec 22 19:59:29 2020 +0100
@@ -9,13 +9,13 @@
 
 from PyQt5.QtCore import pyqtSlot
 
+from E5Gui.E5Application import e5App
 from E5Gui.E5PathPicker import E5PathPickerModes
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_QtPage import Ui_QtPage
 
 import Preferences
-import Utilities
 
 
 class QtPage(ConfigurationPageBase, Ui_QtPage):
@@ -30,21 +30,34 @@
         self.setupUi(self)
         self.setObjectName("QtPage")
         
+        try:
+            self.__virtualenvManager = e5App().getObject("VirtualEnvManager")
+        except KeyError:
+            from VirtualEnv.VirtualenvManager import VirtualenvManager
+            self.__virtualenvManager = VirtualenvManager()
+        
         self.qtTransPicker.setMode(E5PathPickerModes.DirectoryMode)
         self.qtToolsDirPicker.setMode(E5PathPickerModes.DirectoryShowFilesMode)
         self.pyqtToolsDirPicker.setMode(
             E5PathPickerModes.DirectoryShowFilesMode)
+        self.pyqt6ToolsDirPicker.setMode(
+            E5PathPickerModes.DirectoryShowFilesMode)
         self.pyside2ToolsDirPicker.setMode(
             E5PathPickerModes.DirectoryShowFilesMode)
         
+        self.__populateAndSetVenvComboBoxes(True)
+        
         # set initial values
         self.qtTransPicker.setText(
             Preferences.getQt("Qt5TranslationsDir"))
+        
+        # Qt
         self.qtToolsDirPicker.setText(Preferences.getQt("QtToolsDir"))
         self.qtPrefixEdit.setText(Preferences.getQt("QtToolsPrefix"))
         self.qtPostfixEdit.setText(Preferences.getQt("QtToolsPostfix"))
         self.__updateQtSample()
         
+        # PyQt 5
         self.pyqtToolsDirPicker.setText(Preferences.getQt("PyQtToolsDir"))
         self.pyuicIndentSpinBox.setValue(Preferences.getQt("PyuicIndent"))
         self.pyuicImportsCheckBox.setChecked(
@@ -52,13 +65,18 @@
         self.pyuicExecuteCheckBox.setChecked(
             Preferences.getQt("PyuicExecute"))
         
+        # PyQt 6
+        self.pyqt6ToolsDirPicker.setText(Preferences.getQt("PyQt6ToolsDir"))
+        self.pyuic6IndentSpinBox.setValue(Preferences.getQt("Pyuic6Indent"))
+        self.pyuic6ExecuteCheckBox.setChecked(
+            Preferences.getQt("Pyuic6Execute"))
+        
+        # PySide 2
         self.pyside2ToolsDirPicker.setText(
             Preferences.getQt("PySide2ToolsDir"))
         self.pyside2uicImportsCheckBox.setChecked(
             Preferences.getQt("PySide2FromImports"))
-        
-        self.pyside2Group.setEnabled(Utilities.checkPyside())
-        
+    
     def save(self):
         """
         Public slot to save the Qt configuration.
@@ -68,6 +86,7 @@
         Preferences.setQt("QtToolsPrefix", self.qtPrefixEdit.text())
         Preferences.setQt("QtToolsPostfix", self.qtPostfixEdit.text())
         
+        Preferences.setQt("PyQtVenvName", self.pyqt5VenvComboBox.currentText())
         Preferences.setQt("PyQtToolsDir", self.pyqtToolsDirPicker.text())
         Preferences.setQt("PyuicIndent", self.pyuicIndentSpinBox.value())
         Preferences.setQt("PyuicFromImports",
@@ -75,10 +94,19 @@
         Preferences.setQt("PyuicExecute",
                           self.pyuicExecuteCheckBox.isChecked())
         
+        Preferences.setQt("PyQt6VenvName",
+                          self.pyqt6VenvComboBox.currentText())
+        Preferences.setQt("PyQt6ToolsDir", self.pyqt6ToolsDirPicker.text())
+        Preferences.setQt("Pyuic6Indent", self.pyuic6IndentSpinBox.value())
+        Preferences.setQt("Pyuic6Execute",
+                          self.pyuic6ExecuteCheckBox.isChecked())
+        
+        Preferences.setQt("PySide2VenvName",
+                          self.pyside2VenvComboBox.currentText())
         Preferences.setQt("PySide2ToolsDir", self.pyside2ToolsDirPicker.text())
         Preferences.setQt("PySide2FromImports",
                           self.pyside2uicImportsCheckBox.isChecked())
-        
+    
     def __updateQtSample(self):
         """
         Private slot to update the Qt tools sample label.
@@ -105,6 +133,78 @@
         """
         self.__updateQtSample()
     
+    def __populateAndSetVenvComboBox(self, comboBox, envKey, initial):
+        """
+        Private method to populate and set the virtual environment combo boxes.
+        
+        @param comboBox reference to the combo box to be populated
+        @type QComboBox
+        @param envKey preferences key for the environment
+        @type str
+        @param initial flag indicating an initial population
+        @type bool
+        """
+        if initial:
+            venvName = Preferences.getQt(envKey)
+        else:
+            venvName = comboBox.currentText()
+        
+        comboBox.clear()
+        comboBox.addItems(
+            [""] +
+            sorted(self.__virtualenvManager.getVirtualenvNames())
+        )
+        
+        if venvName:
+            index = comboBox.findText(venvName)
+            if index < 0:
+                index = 0
+            comboBox.setCurrentIndex(index)
+    
+    def __populateAndSetVenvComboBoxes(self, initial):
+        """
+        Private method to populate the virtual environment combo boxes.
+        
+        @param initial flag indicating an initial population
+        @type bool
+        """
+        self.__populateAndSetVenvComboBox(
+            self.pyqt5VenvComboBox, "PyQtVenvName", initial)
+        self.__populateAndSetVenvComboBox(
+            self.pyqt6VenvComboBox, "PyQt6VenvName", initial)
+        self.__populateAndSetVenvComboBox(
+            self.pyside2VenvComboBox, "PySide2VenvName", initial)
+    
+    def __showVirtualEnvManager(self):
+        """
+        Private method to show the virtual environment manager dialog.
+        """
+        self.__virtualenvManager.showVirtualenvManagerDialog(modal=True)
+        self.__populateAndSetVenvComboBoxes(False)
+        self.activateWindow()
+        self.raise_()
+    
+    @pyqtSlot()
+    def on_pyqt5VenvDlgButton_clicked(self):
+        """
+        Private slot to show the virtual environment manager dialog.
+        """
+        self.__showVirtualEnvManager()
+    
+    @pyqtSlot()
+    def on_pyqt6VenvDlgButton_clicked(self):
+        """
+        Private slot to show the virtual environment manager dialog.
+        """
+        self.__showVirtualEnvManager()
+    
+    @pyqtSlot()
+    def on_pyside2VenvDlgButton_clicked(self):
+        """
+        Private slot to show the virtual environment manager dialog.
+        """
+        self.__showVirtualEnvManager()
+    
 
 def create(dlg):
     """
--- a/eric6/Preferences/ConfigurationPages/QtPage.ui	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/QtPage.ui	Tue Dec 22 19:59:29 2020 +0100
@@ -7,10 +7,10 @@
     <x>0</x>
     <y>0</y>
     <width>556</width>
-    <height>690</height>
+    <height>1027</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_6">
+  <layout class="QVBoxLayout" name="verticalLayout_7">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -36,7 +36,7 @@
      <property name="title">
       <string>Qt</string>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_3">
+     <layout class="QVBoxLayout" name="verticalLayout_8">
       <item>
        <widget class="QGroupBox" name="groupBox_3">
         <property name="title">
@@ -179,94 +179,265 @@
      <property name="title">
       <string>PyQt</string>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_4">
+     <layout class="QVBoxLayout" name="verticalLayout_6">
       <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_3">
-        <item>
-         <widget class="QLabel" name="label_6">
-          <property name="text">
-           <string>Tools Directory:</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="E5PathPicker" name="pyqtToolsDirPicker" native="true">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="focusPolicy">
-           <enum>Qt::StrongFocus</enum>
-          </property>
-          <property name="toolTip">
-           <string>Enter the path of the PyQt tools directory, if they are not found.</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <widget class="QGroupBox" name="groupBox">
+       <widget class="QGroupBox" name="groupBox_5">
         <property name="title">
-         <string>pyuic Options</string>
+         <string>PyQt 5</string>
         </property>
-        <layout class="QGridLayout" name="gridLayout">
-         <item row="0" column="0">
-          <widget class="QLabel" name="label_2">
-           <property name="text">
-            <string>Indent Width:</string>
+        <layout class="QVBoxLayout" name="verticalLayout_4">
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_8">
+           <item>
+            <widget class="QLabel" name="label">
+             <property name="text">
+              <string>Virtual Environment:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="pyqt5VenvComboBox">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="toolTip">
+              <string>Select the virtual environment to be used</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="pyqt5VenvDlgButton">
+             <property name="toolTip">
+              <string>Press to open the virtual environment manager dialog</string>
+             </property>
+             <property name="text">
+              <string notr="true"/>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_3">
+           <item>
+            <widget class="QLabel" name="label_6">
+             <property name="text">
+              <string>Tools Directory:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="E5PathPicker" name="pyqtToolsDirPicker" native="true">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::StrongFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>Enter the path of the PyQt 5 tools directory, if they are not found.</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <widget class="QGroupBox" name="groupBox">
+           <property name="title">
+            <string>pyuic5 Options</string>
            </property>
+           <layout class="QGridLayout" name="gridLayout">
+            <item row="0" column="0">
+             <widget class="QLabel" name="label_2">
+              <property name="text">
+               <string>Indent Width:</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QSpinBox" name="pyuicIndentSpinBox">
+              <property name="toolTip">
+               <string>Select the indent width (default: 4)</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+              <property name="minimum">
+               <number>2</number>
+              </property>
+              <property name="maximum">
+               <number>16</number>
+              </property>
+              <property name="value">
+               <number>4</number>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="2">
+             <spacer name="horizontalSpacer">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>448</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="1" column="0" colspan="3">
+             <widget class="QCheckBox" name="pyuicImportsCheckBox">
+              <property name="text">
+               <string>Generate imports relative to '.'</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="0" colspan="3">
+             <widget class="QCheckBox" name="pyuicExecuteCheckBox">
+              <property name="toolTip">
+               <string>Select to generate extra code to test and display the form</string>
+              </property>
+              <property name="text">
+               <string>Generate Extra Test Code</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
           </widget>
          </item>
-         <item row="0" column="1">
-          <widget class="QSpinBox" name="pyuicIndentSpinBox">
-           <property name="toolTip">
-            <string>Select the indent width (default: 4)</string>
-           </property>
-           <property name="alignment">
-            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-           </property>
-           <property name="minimum">
-            <number>2</number>
-           </property>
-           <property name="maximum">
-            <number>16</number>
-           </property>
-           <property name="value">
-            <number>4</number>
-           </property>
-          </widget>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="groupBox_8">
+        <property name="title">
+         <string>PyQt 6</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_5">
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_7">
+           <item>
+            <widget class="QLabel" name="label_10">
+             <property name="text">
+              <string>Virtual Environment:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="pyqt6VenvComboBox">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="toolTip">
+              <string>Select the virtual environment to be used</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="pyqt6VenvDlgButton">
+             <property name="toolTip">
+              <string>Press to open the virtual environment manager dialog</string>
+             </property>
+             <property name="text">
+              <string notr="true"/>
+             </property>
+            </widget>
+           </item>
+          </layout>
          </item>
-         <item row="0" column="2">
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_4">
+           <item>
+            <widget class="QLabel" name="label_8">
+             <property name="text">
+              <string>Tools Directory:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="E5PathPicker" name="pyqt6ToolsDirPicker" native="true">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::StrongFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>Enter the path of the PyQt 6 tools directory, if they are not found.</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <widget class="QGroupBox" name="groupBox_9">
+           <property name="title">
+            <string>pyuic6 Options</string>
            </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>448</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item row="1" column="0" colspan="3">
-          <widget class="QCheckBox" name="pyuicImportsCheckBox">
-           <property name="text">
-            <string>Generate imports relative to '.'</string>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="0" colspan="3">
-          <widget class="QCheckBox" name="pyuicExecuteCheckBox">
-           <property name="toolTip">
-            <string>Select to generate extra code to test and display the form</string>
-           </property>
-           <property name="text">
-            <string>Generate Extra Test Code</string>
-           </property>
+           <layout class="QGridLayout" name="gridLayout_3">
+            <item row="0" column="2">
+             <spacer name="horizontalSpacer_2">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>448</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="1" column="0" colspan="3">
+             <widget class="QCheckBox" name="pyuic6ExecuteCheckBox">
+              <property name="toolTip">
+               <string>Select to generate extra code to test and display the form</string>
+              </property>
+              <property name="text">
+               <string>Generate Extra Test Code</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QSpinBox" name="pyuic6IndentSpinBox">
+              <property name="toolTip">
+               <string>Select the indent width (default: 4)</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+              <property name="minimum">
+               <number>2</number>
+              </property>
+              <property name="maximum">
+               <number>16</number>
+              </property>
+              <property name="value">
+               <number>4</number>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QLabel" name="label_9">
+              <property name="text">
+               <string>Indent Width:</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
           </widget>
          </item>
         </layout>
@@ -280,7 +451,41 @@
      <property name="title">
       <string>PySide2</string>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_5">
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_6">
+        <item>
+         <widget class="QLabel" name="label_11">
+          <property name="text">
+           <string>Virtual Environment:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="pyside2VenvComboBox">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Select the virtual environment to be used</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="pyside2VenvDlgButton">
+          <property name="toolTip">
+           <string>Press to open the virtual environment manager dialog</string>
+          </property>
+          <property name="text">
+           <string notr="true"/>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
       <item>
        <layout class="QHBoxLayout" name="horizontalLayout_5">
         <item>
@@ -355,10 +560,19 @@
   <tabstop>qtToolsDirPicker</tabstop>
   <tabstop>qtPrefixEdit</tabstop>
   <tabstop>qtPostfixEdit</tabstop>
+  <tabstop>pyqt5VenvComboBox</tabstop>
+  <tabstop>pyqt5VenvDlgButton</tabstop>
   <tabstop>pyqtToolsDirPicker</tabstop>
   <tabstop>pyuicIndentSpinBox</tabstop>
   <tabstop>pyuicImportsCheckBox</tabstop>
   <tabstop>pyuicExecuteCheckBox</tabstop>
+  <tabstop>pyqt6VenvComboBox</tabstop>
+  <tabstop>pyqt6VenvDlgButton</tabstop>
+  <tabstop>pyqt6ToolsDirPicker</tabstop>
+  <tabstop>pyuic6IndentSpinBox</tabstop>
+  <tabstop>pyuic6ExecuteCheckBox</tabstop>
+  <tabstop>pyside2VenvComboBox</tabstop>
+  <tabstop>pyside2VenvDlgButton</tabstop>
   <tabstop>pyside2ToolsDirPicker</tabstop>
   <tabstop>pyside2uicImportsCheckBox</tabstop>
  </tabstops>
--- a/eric6/Preferences/ProgramsDialog.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/ProgramsDialog.py	Tue Dec 22 19:59:29 2020 +0100
@@ -86,7 +86,7 @@
         header.setSortIndicatorShown(False)
         
         with E5OverrideCursor():
-            # 1. do the Qt5 programs
+            # 1. do the Qt programs
             # 1a. Translation Converter
             exe = (
                 Utilities.isWindowsPlatform() and
@@ -156,6 +156,18 @@
                 Utilities.generatePyQtToolPath("pyrcc5"),
                 '-version', '', -1, versionRe='Resource Compiler|pyrcc5')
             
+            # 2.2 do the PyQt6 programs
+            # 2.2a. Translation Extractor PyQt6
+            self.__createProgramEntry(
+                self.tr("Translation Extractor (Python, PyQt6)"),
+                Utilities.generatePyQtToolPath("pylupdate6"),
+                '--version', versionPosition=0)
+            # 2.2b. Forms Compiler PyQt6
+            self.__createProgramEntry(
+                self.tr("Forms Compiler (Python, PyQt6)"),
+                Utilities.generatePyQtToolPath("pyuic6"),
+                '--version', versionPosition=0)
+            
             # 3. do the PySide programs
             # 3.1 do the PySide2 programs
             # 3.1a. Translation Extractor PySide2
@@ -303,7 +315,7 @@
 
     def __createProgramEntry(self, description, exe,
                              versionCommand="", versionStartsWith="",
-                             versionPosition=0, version="",
+                             versionPosition=None, version="",
                              versionCleanup=None, versionRe=None,
                              exeModule=None):
         """
@@ -347,12 +359,7 @@
                 exe = Utilities.getExecutablePath(exe)
             if exe:
                 available = True
-                if (
-                    versionCommand and
-                    (versionStartsWith != "" or
-                     (versionRe is not None and versionRe != "")) and
-                    versionPosition
-                ):
+                if versionCommand and versionPosition is not None:
                     proc = QProcess()
                     proc.setProcessChannelMode(QProcess.MergedChannels)
                     if exeModule:
@@ -374,6 +381,20 @@
                         ):
                             version = self.tr("(module not found)")
                             available = False
+                        elif not versionStartsWith and not versionRe:
+                            # assume output is just one line
+                            try:
+                                version = (
+                                    output.strip().split()[versionPosition]
+                                )
+                                if versionCleanup:
+                                    version = version[
+                                        versionCleanup[0]:
+                                        versionCleanup[1]
+                                    ]
+                            except IndexError:
+                                version = self.tr("(unknown)")
+                                available = False
                         else:
                             if versionRe is None:
                                 versionRe = "^{0}".format(
--- a/eric6/Preferences/__init__.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Preferences/__init__.py	Tue Dec 22 19:59:29 2020 +0100
@@ -822,6 +822,19 @@
             InterfacesBrowserFlag |
             OthersBrowserFlag |
             ProtocolsBrowserFlag),
+        "PyQt6": (
+            SourcesBrowserFlag |
+            FormsBrowserFlag |
+            TranslationsBrowserFlag |
+            InterfacesBrowserFlag |
+            OthersBrowserFlag |
+            ProtocolsBrowserFlag),
+        "PyQt6C": (
+            SourcesBrowserFlag |
+            TranslationsBrowserFlag |
+            InterfacesBrowserFlag |
+            OthersBrowserFlag |
+            ProtocolsBrowserFlag),
         "E6Plugin": (
             SourcesBrowserFlag |
             FormsBrowserFlag |
@@ -1204,8 +1217,14 @@
         "PyuicIndent": 4,
         "PyuicFromImports": False,
         "PyuicExecute": True,
+        "PyQtVenvName": "",
         "PyQtToolsDir": "",
+        "Pyuic6Indent": 4,
+        "Pyuic6Execute": True,
+        "PyQt6VenvName": "",
+        "PyQt6ToolsDir": "",
         "PySide2FromImports": False,
+        "PySide2VenvName": "",
         "PySide2ToolsDir": "",
     }
     
@@ -2987,10 +3006,11 @@
     """
     if key in ["Qt5TranslationsDir"]:
         return getQtTranslationsDir(prefClass)
-    elif key in ["PyuicIndent"]:
+    elif key in ["PyuicIndent", "Pyuic6Indent"]:
         return int(prefClass.settings.value(
             "Qt/" + key, prefClass.qtDefaults[key]))
-    elif key in ["PyuicFromImports", "PyuicExecute", "PySide2FromImports"]:
+    elif key in ["PyuicFromImports", "PyuicExecute", "Pyuic6Execute",
+                 "PySide2FromImports"]:
         return toBool(prefClass.settings.value(
             "Qt/" + key, prefClass.qtDefaults[key]))
     else:
--- a/eric6/Project/CreateDialogCodeDialog.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/CreateDialogCodeDialog.py	Tue Dec 22 19:59:29 2020 +0100
@@ -27,6 +27,8 @@
 
 from eric6config import getConfig
 
+import Preferences
+
 
 pyqtSignatureRole = Qt.UserRole + 1
 pythonSignatureRole = Qt.UserRole + 2
@@ -159,8 +161,16 @@
         @return tuple of process output and error flag
         @rtype tuple of (str, bool)
         """
+        venvManager = e5App().getObject("VirtualEnvManager")
+        projectType = self.project.getProjectType()
+        
         venvName = self.project.getDebugProperty("VIRTUALENV")
-        venvManager = e5App().getObject("VirtualEnvManager")
+        if not venvName:
+            # no project specific environment, try a type specific one
+            if projectType in ("PyQt5", "E6Plugin", "PySide2"):
+                venvName = Preferences.getQt("PyQtVenvName")
+            elif projectType in ("PyQt6", ):
+                venvName = Preferences.getQt("PyQt6VenvName")
         interpreter = venvManager.getVirtualenvInterpreter(venvName)
         execPath = venvManager.getVirtualenvExecPath(venvName)
         
@@ -176,7 +186,10 @@
             else:
                 env.insert("PATH", execPath)
         
-        loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi.py")
+        if projectType in ("PyQt5", "E6Plugin", "PySide2"):
+            loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi5.py")
+        elif projectType in ("PyQt6", ):
+            loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi6.py")
         args = [
             loadUi,
             command,
@@ -412,6 +425,10 @@
                     tmplName = os.path.join(
                         getConfig('ericCodeTemplatesDir'),
                         "impl_pyqt5.py.tmpl")
+                elif self.project.getProjectType() == "PyQt6":
+                    tmplName = os.path.join(
+                        getConfig('ericCodeTemplatesDir'),
+                        "impl_pyqt6.py.tmpl")
                 else:
                     E5MessageBox.critical(
                         self,
--- a/eric6/Project/Project.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/Project.py	Tue Dec 22 19:59:29 2020 +0100
@@ -265,19 +265,22 @@
         self.__projectTypes = {
             "PyQt5": self.tr("PyQt5 GUI"),
             "PyQt5C": self.tr("PyQt5 Console"),
+            "PyQt6": self.tr("PyQt6 GUI"),
+            "PyQt6C": self.tr("PyQt6 Console"),
             "E6Plugin": self.tr("Eric6 Plugin"),
             "Console": self.tr("Console"),
             "Other": self.tr("Other"),
         }
         
         self.__projectProgLanguages = {
-            "Python3": ["PyQt5", "PyQt5C", "E6Plugin", "Console", "Other"],
+            "Python3": ["PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+                        "Console", "Other"],
             "MicroPython": ["Console", "Other"],
             "Ruby": ["Console", "Other"],
             "JavaScript": ["Other"],
         }
         
-        if Utilities.checkPyside():
+        if Utilities.checkPyside(variant=2):
             self.__projectTypes["PySide2"] = self.tr("PySide2 GUI")
             self.__projectTypes["PySide2C"] = self.tr("PySide2 Console")
             self.__projectProgLanguages["Python3"].extend(
@@ -589,6 +592,7 @@
         # Forms
         if self.pdata["PROJECTTYPE"] in ["E6Plugin",
                                          "PyQt5",
+                                         "PyQt6",
                                          "PySide2"]:
             self.pdata["FILETYPES"]["*.ui"] = "FORMS"
         
@@ -601,6 +605,7 @@
         # Translations
         if self.pdata["PROJECTTYPE"] in ["E6Plugin",
                                          "PyQt5", "PyQt5C",
+                                         "PyQt6", "PyQt6C",
                                          "PySide2", "PySide2C"]:
             self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS"
             self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS"
@@ -623,6 +628,7 @@
         """
         if self.pdata["PROJECTTYPE"] in ["E6Plugin",
                                          "PyQt5", "PyQt5C",
+                                         "PyQt6", "PyQt6C",
                                          "PySide2", "PySide2C"]:
             if "*.ts" not in self.pdata["FILETYPES"]:
                 self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS"
@@ -1378,7 +1384,8 @@
         if dlg.exec() == QDialog.Accepted:
             lang = dlg.getSelectedLanguage()
             if self.pdata["PROJECTTYPE"] in [
-                "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+                "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+                "PySide2", "PySide2C"
             ]:
                 langFile = self.pdata["TRANSLATIONPATTERN"].replace(
                     "%language%", lang)
--- a/eric6/Project/ProjectFormsBrowser.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/ProjectFormsBrowser.py	Tue Dec 22 19:59:29 2020 +0100
@@ -49,7 +49,8 @@
     showMenu = pyqtSignal(str, QMenu)
     menusAboutToBeCreated = pyqtSignal()
     
-    PyuicIndentDefault = 4
+    Pyuic5IndentDefault = 4
+    Pyuic6IndentDefault = 4
     
     def __init__(self, project, parent=None):
         """
@@ -123,8 +124,10 @@
         
         self.menusAboutToBeCreated.emit()
         
+        projectType = self.project.getProjectType()
+        
         self.menu = QMenu(self)
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.menu.addAction(
                 self.tr('Compile form'), self.__compileForm)
             self.menu.addAction(
@@ -184,7 +187,7 @@
         act = self.menu.addAction(self.tr('Delete'), self.__deleteFile)
         self.menuActions.append(act)
         self.menu.addSeparator()
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.menu.addAction(self.tr('New form...'), self.__newForm)
         else:
             if self.hooks["newForm"] is not None:
@@ -207,9 +210,7 @@
 
         self.backMenu = QMenu(self)
         if (
-            self.project.getProjectType() in [
-                "PyQt5", "E6Plugin", "PySide2"
-            ] or
+            projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"] or
             self.hooks["compileAllForms"] is not None
         ):
             self.backMenu.addAction(
@@ -240,7 +241,7 @@
 
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.multiMenu.addAction(
                 self.tr('Compile forms'), self.__compileSelectedForms)
             self.multiMenu.addSeparator()
@@ -285,7 +286,7 @@
         self.multiMenu.addAction(self.tr('Configure...'), self._configure)
 
         self.dirMenu = QMenu(self)
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.dirMenu.addAction(
                 self.tr('Compile all forms'), self.__compileAllForms)
             self.dirMenu.addSeparator()
@@ -308,7 +309,7 @@
             self.tr('Delete'), self._deleteDirectory)
         self.dirMenuActions.append(act)
         self.dirMenu.addSeparator()
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.dirMenu.addAction(self.tr('New form...'), self.__newForm)
         else:
             if self.hooks["newForm"] is not None:
@@ -332,7 +333,7 @@
         self.dirMenu.addAction(self.tr('Configure...'), self._configure)
         
         self.dirMultiMenu = QMenu(self)
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]:
+        if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]:
             self.dirMultiMenu.addAction(
                 self.tr('Compile all forms'), self.__compileAllForms)
             self.dirMultiMenu.addSeparator()
@@ -377,7 +378,9 @@
         if not self.project.isOpen():
             return
         
-        enable = self.project.getProjectType() in ("PyQt5", "E6Plugin")
+        enable = (
+            self.project.getProjectType() in ("PyQt5", "PyQt6", "E6Plugin")
+        )
         self.__pyuicConfigAct.setEnabled(enable)
         self.__pyuicMultiConfigAct.setEnabled(enable)
         self.__pyuicDirConfigAct.setEnabled(enable)
@@ -565,7 +568,7 @@
             self.hooks["newForm"](path)
         else:
             if self.project.getProjectType() in [
-                "PyQt5", "E6Plugin", "PySide2"
+                "PyQt5", "PyQt6", "E6Plugin", "PySide2"
             ]:
                 self.__newUiForm(path)
         
@@ -681,6 +684,9 @@
             if self.project.getProjectType() in ["PyQt5"]:
                 self.__uicompiler = Utilities.generatePyQtToolPath(
                     'pyuic5', ["py3uic5"])
+            elif self.project.getProjectType() in ["PyQt6"]:
+                self.__uicompiler = Utilities.generatePyQtToolPath(
+                    'pyuic6')
             elif self.project.getProjectType() in ["E6Plugin"]:
                 self.__uicompiler = Utilities.generatePyQtToolPath(
                     'pyuic5', ["py3uic5"])
@@ -703,7 +709,7 @@
     def __readStdout(self):
         """
         Private slot to handle the readyReadStandardOutput signal of the
-        pyuic5/pyside2-uic process.
+        pyuic5/pyuic6/pyside2-uic process.
         """
         if self.compileProc is None:
             return
@@ -716,7 +722,7 @@
     def __readStderr(self):
         """
         Private slot to handle the readyReadStandardError signal of the
-        pyuic5/pyside2-uic process.
+        pyuic5/pyuic6/pyside2-uic process.
         """
         if self.compileProc is None:
             return
@@ -822,12 +828,19 @@
                 # PySide2
                 if Preferences.getQt("PySide2FromImports"):
                     args.append("--from-imports")
+            elif self.project.getProjectType() == "PyQt6":
+                # PyQt6
+                if Preferences.getQt("Pyuic6Execute"):
+                    args.append("-x")
+                indentWidth = Preferences.getQt("Pyuic6Indent")
+                if indentWidth != self.Pyuic6IndentDefault:
+                    args.append("--indent={0}".format(indentWidth))
             else:
                 # PyQt5
                 if Preferences.getQt("PyuicExecute"):
                     args.append("-x")
                 indentWidth = Preferences.getQt("PyuicIndent")
-                if indentWidth != self.PyuicIndentDefault:
+                if indentWidth != self.Pyuic5IndentDefault:
                     args.append("--indent={0}".format(indentWidth))
                 if (
                     'uic5' in uicompiler and
@@ -987,7 +1000,7 @@
             self.hooks["compileChangedForms"](self.project.pdata["FORMS"])
         else:
             if self.project.getProjectType() not in [
-                "PyQt5", "E6Plugin", "PySide2"
+                "PyQt5", "PyQt6", "E6Plugin", "PySide2"
             ]:
                 # ignore the request for non Qt GUI projects
                 return
@@ -1061,7 +1074,7 @@
         
         params = self.project.pdata["UICPARAMS"]
         
-        if self.project.getProjectType() in ["PyQt5", "E6Plugin"]:
+        if self.project.getProjectType() in ["PyQt5", "PyQt6", "E6Plugin"]:
             dlg = UicCompilerOptionsDialog(params, self.getUiCompiler())
             if dlg.exec() == QDialog.Accepted:
                 package, suffix, root = dlg.getData()
--- a/eric6/Project/ProjectTranslationsBrowser.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/ProjectTranslationsBrowser.py	Tue Dec 22 19:59:29 2020 +0100
@@ -101,7 +101,8 @@
         
         self.menu = QMenu(self)
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             act = self.menu.addAction(
                 self.tr('Generate translation'), self.__generateSelected)
@@ -228,7 +229,8 @@
         
         self.backMenu = QMenu(self)
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             act = self.backMenu.addAction(
                 self.tr('Generate all translations'),
@@ -289,7 +291,8 @@
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             act = self.multiMenu.addAction(
                 self.tr('Generate translations'),
@@ -373,7 +376,8 @@
 
         self.dirMenu = QMenu(self)
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             act = self.dirMenu.addAction(
                 self.tr('Generate all translations'),
@@ -491,7 +495,8 @@
         Private slot called by the menu aboutToShow signal.
         """
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             tsFiles = 0
             qmFiles = 0
@@ -535,7 +540,8 @@
         Private slot called by the multiMenu aboutToShow signal.
         """
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             tsFiles = 0
             qmFiles = 0
@@ -577,7 +583,8 @@
         Private slot called by the dirMenu aboutToShow signal.
         """
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             if self.pylupdateProcRunning:
                 for act in self.tsprocDirMenuActions:
@@ -597,7 +604,8 @@
         Private slot called by the backMenu aboutToShow signal.
         """
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             if self.pylupdateProcRunning:
                 for act in self.tsprocBackMenuActions:
@@ -955,14 +963,16 @@
         
         for index in range(len(self.__pylupdateProcesses)):
             if proc == self.__pylupdateProcesses[index][0]:
-                try:
-                    self.__tmpProjects.remove(
-                        self.__pylupdateProcesses[index][1])
-                    os.remove(self.__pylupdateProcesses[index][1])
-                except OSError:
-                    pass
+                tmpProjectFile = self.__pylupdateProcesses[index][1]
+                if tmpProjectFile:
+                    try:
+                        self.__tmpProjects.remove(tmpProjectFile)
+                        os.remove(tmpProjectFile)
+                    except OSError:
+                        pass
                 del self.__pylupdateProcesses[index]
                 break
+        
         if not self.__pylupdateProcesses:
             # all done
             self.pylupdateProcRunning = False
@@ -1008,19 +1018,22 @@
                     self.hooks["generateSelectedWithObsolete"](li)
                     return
         
-        # generate a minimal temporary projectfile suitable for pylupdate
+        # generate a minimal temporary project file suitable for pylupdate
         self.__tmpProjects = []
         if self.project.getProjectLanguage() in [
             "Python", "Python3"
         ]:
-            ok = self.__writeTempProjectFile(langs, [".py"])
+            if self.project.getProjectType() not in ["PyQt6", "PyQt6C"]:
+                ok = self.__writeTempProjectFile(langs, [".py"])
+                if not ok:
+                    return
         else:
-            ok = False
-        if not ok:
             return
         
         if self.project.getProjectType() in ["PyQt5", "PyQt5C"]:
             self.pylupdate = Utilities.generatePyQtToolPath('pylupdate5')
+        elif self.project.getProjectType() in ["PyQt6", "PyQt6C"]:
+            self.pylupdate = Utilities.generatePyQtToolPath('pylupdate6')
         elif self.project.getProjectType() in ["E6Plugin"]:
             self.pylupdate = Utilities.generatePyQtToolPath('pylupdate5')
         elif self.project.getProjectType() in ["PySide2", "PySide2C"]:
@@ -1030,43 +1043,96 @@
             return
 
         self.__pylupdateProcesses = []
-        for tempProjectFile in self.__tmpProjects[:]:
-            proc = QProcess()
-            args = []
+        if self.project.getProjectType() in ["PyQt6", "PyQt6C"]:
+            if langs:
+                langs = [self.project.getRelativePath(lang.fileName())
+                         for lang in langs if lang.fileName().endswith('.ts')]
+            else:
+                try:
+                    pattern = self.project.pdata["TRANSLATIONPATTERN"].replace(
+                        "%language%", "*")
+                    langs = [
+                        lang for lang in self.project.pdata["TRANSLATIONS"]
+                        if fnmatch.fnmatch(lang, pattern)
+                    ]
+                except IndexError:
+                    langs = []
+            if not langs:
+                E5MessageBox.warning(
+                    self,
+                    self.tr("Write temporary project file"),
+                    self.tr("""No translation files (*.ts) selected."""))
+                return
+            for lang in langs:
+                proc = QProcess()
+                args = []
 
-            if noobsolete:
-                args.append('-noobsolete')
-            
-            args.append('-verbose')
-            path, filename = os.path.split(tempProjectFile)
-            args.append(filename)
-            proc.setWorkingDirectory(os.path.join(self.project.ppath, path))
-            proc.finished.connect(
-                lambda c, s: self.__generateTSFileDone(c, s, proc))
-            proc.readyReadStandardOutput.connect(
-                lambda: self.__readStdoutLupdate(proc))
-            proc.readyReadStandardError.connect(
-                lambda: self.__readStderrLupdate(proc))
-            
-            proc.start(self.pylupdate, args)
-            procStarted = proc.waitForStarted()
-            if procStarted:
-                self.pylupdateProcRunning = True
-                self.__pylupdateProcesses.append((proc, tempProjectFile))
-            else:
-                E5MessageBox.critical(
-                    self,
-                    self.tr('Process Generation Error'),
-                    self.tr(
-                        'Could not start {0}.<br>'
-                        'Ensure that it is in the search path.'
-                    ).format(self.pylupdate))
-                # cleanup
-                try:
-                    self.__tmpProjects.remove(tempProjectFile)
-                    os.remove(tempProjectFile)
-                except OSError:
-                    pass
+                if noobsolete:
+                    args.append('--no-obsolete')
+                
+                args += ["--ts", lang]
+                args.append(".")
+                
+                proc.setWorkingDirectory(self.project.ppath)
+                proc.finished.connect(
+                    lambda c, s: self.__generateTSFileDone(c, s, proc))
+                proc.readyReadStandardOutput.connect(
+                    lambda: self.__readStdoutLupdate(proc))
+                proc.readyReadStandardError.connect(
+                    lambda: self.__readStderrLupdate(proc))
+                
+                proc.start(self.pylupdate, args)
+                procStarted = proc.waitForStarted()
+                if procStarted:
+                    self.pylupdateProcRunning = True
+                    self.__pylupdateProcesses.append((proc, ""))
+                else:
+                    E5MessageBox.critical(
+                        self,
+                        self.tr('Process Generation Error'),
+                        self.tr(
+                            'Could not start {0}.<br>'
+                            'Ensure that it is in the search path.'
+                        ).format(self.pylupdate))
+        else:
+            for tempProjectFile in self.__tmpProjects[:]:
+                proc = QProcess()
+                args = []
+
+                if noobsolete:
+                    args.append('-noobsolete')
+                
+                args.append('-verbose')
+                path, filename = os.path.split(tempProjectFile)
+                args.append(filename)
+                proc.setWorkingDirectory(
+                    os.path.join(self.project.ppath, path))
+                proc.finished.connect(
+                    lambda c, s: self.__generateTSFileDone(c, s, proc))
+                proc.readyReadStandardOutput.connect(
+                    lambda: self.__readStdoutLupdate(proc))
+                proc.readyReadStandardError.connect(
+                    lambda: self.__readStderrLupdate(proc))
+                
+                proc.start(self.pylupdate, args)
+                procStarted = proc.waitForStarted()
+                if procStarted:
+                    self.pylupdateProcRunning = True
+                    self.__pylupdateProcesses.append((proc, tempProjectFile))
+                else:
+                    E5MessageBox.critical(
+                        self,
+                        self.tr('Process Generation Error'),
+                        self.tr(
+                            'Could not start {0}.<br>'
+                            'Ensure that it is in the search path.'
+                        ).format(self.pylupdate))
+                    # cleanup
+                    try:
+                        self.__tmpProjects.remove(tempProjectFile)
+                        os.remove(tempProjectFile)
+                    except OSError:
+                        pass
         
     def __generateAll(self):
         """
@@ -1182,7 +1248,8 @@
                 return
         
         if self.project.getProjectType() in [
-            "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C"
+            "PyQt5", "PyQt5C", "PyQt6", "PyQt6C", "E6Plugin",
+            "PySide2", "PySide2C"
         ]:
             lrelease = os.path.join(
                 Utilities.getQtBinariesPath(),
--- a/eric6/Project/UicCompilerOptionsDialog.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/UicCompilerOptionsDialog.py	Tue Dec 22 19:59:29 2020 +0100
@@ -34,8 +34,8 @@
         self.packageRootEdit.setText(compilerOptions["PackagesRoot"])
         self.suffixEdit.setText(compilerOptions["RcSuffix"])
         
-        if 'uic5' not in compiler:
-            self.packageGroup.setEnabled(False)
+        self.packageGroup.setEnabled('uic5' in compiler)
+        self.suffixGroup.setEnabled('uic6' not in compiler)
         
         msh = self.minimumSizeHint()
         self.resize(max(self.width(), msh.width()), msh.height())
--- a/eric6/Project/UicCompilerOptionsDialog.ui	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Project/UicCompilerOptionsDialog.ui	Tue Dec 22 19:59:29 2020 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>500</width>
-    <height>280</height>
+    <height>323</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -18,6 +18,22 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_4">
    <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Package Root</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <item>
+       <widget class="E5ClearableLineEdit" name="packageRootEdit">
+        <property name="toolTip">
+         <string>Enter the project relative path of the packages root directory</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="packageGroup">
      <property name="title">
       <string>'import' Package</string>
@@ -44,22 +60,6 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="groupBox">
-     <property name="title">
-      <string>Package Root</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_3">
-      <item>
-       <widget class="E5ClearableLineEdit" name="packageRootEdit">
-        <property name="toolTip">
-         <string>Enter the project relative path of the packages root directory</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
     <widget class="QGroupBox" name="suffixGroup">
      <property name="title">
       <string>Resources Suffix</string>
@@ -105,8 +105,8 @@
   </customwidget>
  </customwidgets>
  <tabstops>
+  <tabstop>packageRootEdit</tabstop>
   <tabstop>packageEdit</tabstop>
-  <tabstop>packageRootEdit</tabstop>
   <tabstop>suffixEdit</tabstop>
  </tabstops>
  <resources/>
--- a/eric6/Project/UicLoadUi.py	Mon Dec 21 13:36:24 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2020 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module to get the object name, class name or signatures of a Qt form (*.ui).
-"""
-
-import os
-import sys
-import json
-import xml.etree.ElementTree            # secok
-
-try:
-    from PyQt5.QtCore import QMetaMethod, QByteArray
-    from PyQt5.QtWidgets import QAction, QWidget, QApplication
-    from PyQt5 import uic
-except ImportError:
-    print("PyQt5 could not be found.")
-    sys.exit(1)
-
-try:
-    from PyQt5 import QtWebEngineWidgets    # __IGNORE_WARNING__
-except ImportError:
-    pass
-
-sys.path.append(os.path.dirname(os.path.dirname(__file__)))
-# add the eric package directory
-
-
-def objectName(formFile, projectPath):
-    """
-    Function to get the object name of a form.
-    
-    @param formFile file name of the form
-    @type str
-    @param projectPath directory name of the project
-    @type str
-    """
-    app = QApplication([])      # __IGNORE_WARNING__
-    try:
-        dlg = uic.loadUi(formFile, package=projectPath)
-        print(dlg.objectName())
-        sys.exit(0)
-    except (AttributeError, ImportError,
-            xml.etree.ElementTree.ParseError) as err:
-        print(str(err))
-        sys.exit(1)
-
-
-def className(formFile, projectPath):
-    """
-    Function to get the class name of a form.
-    
-    @param formFile file name of the form
-    @type str
-    @param projectPath directory name of the project
-    @type str
-    """
-    app = QApplication([])      # __IGNORE_WARNING__
-    try:
-        dlg = uic.loadUi(formFile, package=projectPath)
-        print(dlg.metaObject().className())
-        sys.exit(0)
-    except (AttributeError, ImportError,
-            xml.etree.ElementTree.ParseError) as err:
-        print(str(err))
-        sys.exit(1)
-
-
-def __mapType(type_):
-    """
-    Private function to map a type as reported by Qt's meta object to the
-    correct Python type.
-    
-    @param type_ type as reported by Qt
-    @type QByteArray or bytes
-    @return mapped Python type
-    @rtype str
-    """
-    mapped = bytes(type_).decode()
-    
-    # I. always check for *
-    mapped = mapped.replace("*", "")
-    
-    # 1. check for const
-    mapped = mapped.replace("const ", "")
-    
-    # 2. replace QString and QStringList
-    mapped = (
-        mapped
-        .replace("QStringList", "list")
-        .replace("QString", "str")
-    )
-    
-    # 3. replace double by float
-    mapped = mapped.replace("double", "float")
-    
-    return mapped
-
-
-def signatures(formFile, projectPath):
-    """
-    Function to get the signatures of form elements.
-    
-    @param formFile file name of the form
-    @type str
-    @param projectPath directory name of the project
-    @type str
-    """
-    objectsList = []
-    
-    app = QApplication([])      # __IGNORE_WARNING__
-    try:
-        dlg = uic.loadUi(formFile, package=projectPath)
-        objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction)
-        for obj in objects:
-            name = obj.objectName()
-            if not name or name.startswith("qt_"):
-                # ignore un-named or internal objects
-                continue
-            
-            metaObject = obj.metaObject()
-            objectDict = {
-                "name": name,
-                "class_name": metaObject.className(),
-                "methods": [],
-            }
-            
-            for index in range(metaObject.methodCount()):
-                metaMethod = metaObject.method(index)
-                if metaMethod.methodType() == QMetaMethod.Signal:
-                    signatureDict = {
-                        "methods": []
-                    }
-                    signatureDict["signature"] = "on_{0}_{1}".format(
-                        name,
-                        bytes(metaMethod.methodSignature()).decode()
-                    )
-                    
-                    signatureDict["methods"].append("on_{0}_{1}".format(
-                        name,
-                        bytes(metaMethod.methodSignature())
-                        .decode().split("(")[0]
-                    ))
-                    signatureDict["methods"].append("{0}({1})".format(
-                        signatureDict["methods"][-1],
-                        ", ".join([
-                            __mapType(t)
-                            for t in metaMethod.parameterTypes()
-                        ])
-                    ))
-                    
-                    returnType = __mapType(
-                        metaMethod.typeName().encode())
-                    if returnType == 'void':
-                        returnType = ""
-                    signatureDict["return_type"] = returnType
-                    parameterTypesList = [
-                        __mapType(t)
-                        for t in metaMethod.parameterTypes()
-                    ]
-                    signatureDict["parameter_types"] = parameterTypesList
-                    pyqtSignature = ", ".join(parameterTypesList)
-                    signatureDict["pyqt_signature"] = pyqtSignature
-                    
-                    parameterNames = metaMethod.parameterNames()
-                    if parameterNames:
-                        for index in range(len(parameterNames)):
-                            if not parameterNames[index]:
-                                parameterNames[index] = QByteArray(
-                                    "p{0:d}".format(index).encode("utf-8")
-                                )
-                    parameterNamesList = [bytes(n).decode()
-                                          for n in parameterNames]
-                    signatureDict["parameter_names"] = parameterNamesList
-                    methNamesSig = ", ".join(parameterNamesList)
-                    
-                    if methNamesSig:
-                        pythonSignature = "on_{0}_{1}(self, {2})".format(
-                            name,
-                            bytes(metaMethod.methodSignature())
-                            .decode().split("(")[0],
-                            methNamesSig)
-                    else:
-                        pythonSignature = "on_{0}_{1}(self)".format(
-                            name,
-                            bytes(metaMethod.methodSignature())
-                            .decode().split("(")[0])
-                    signatureDict["python_signature"] = pythonSignature
-                    
-                    objectDict["methods"].append(signatureDict)
-            
-            objectsList.append(objectDict)
-        
-        print(json.dumps(objectsList))
-        sys.exit(0)
-    except (AttributeError, ImportError,
-            xml.etree.ElementTree.ParseError) as err:
-        print(str(err))
-        sys.exit(1)
-
-
-if __name__ == "__main__":
-    if len(sys.argv) != 4:
-        print("Wrong number of arguments.")
-        sys.exit(1)
-    
-    if sys.argv[1] == "object_name":
-        objectName(sys.argv[2], sys.argv[3])
-    elif sys.argv[1] == "class_name":
-        className(sys.argv[2], sys.argv[3])
-    elif sys.argv[1] == "signatures":
-        signatures(sys.argv[2], sys.argv[3])
-    else:
-        print("Unknow operation given.")
-        sys.exit(1)
-    
-#
-# eflag: noqa = M701, M801
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Project/UicLoadUi5.py	Tue Dec 22 19:59:29 2020 +0100
@@ -0,0 +1,221 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 - 2020 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module to get the object name, class name or signatures of a Qt form (*.ui).
+"""
+
+import os
+import sys
+import json
+import xml.etree.ElementTree            # secok
+
+try:
+    from PyQt5.QtCore import QMetaMethod, QByteArray
+    from PyQt5.QtWidgets import QAction, QWidget, QApplication
+    from PyQt5 import uic
+except ImportError:
+    print("PyQt5 could not be found.")
+    sys.exit(1)
+
+try:
+    from PyQt5 import QtWebEngineWidgets    # __IGNORE_WARNING__
+except ImportError:
+    pass
+
+sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+# add the eric package directory
+
+
+def objectName(formFile, projectPath):
+    """
+    Function to get the object name of a form.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        print(dlg.objectName())
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+def className(formFile, projectPath):
+    """
+    Function to get the class name of a form.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        print(dlg.metaObject().className())
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+def __mapType(type_):
+    """
+    Private function to map a type as reported by Qt's meta object to the
+    correct Python type.
+    
+    @param type_ type as reported by Qt
+    @type QByteArray or bytes
+    @return mapped Python type
+    @rtype str
+    """
+    mapped = bytes(type_).decode()
+    
+    # I. always check for *
+    mapped = mapped.replace("*", "")
+    
+    # 1. check for const
+    mapped = mapped.replace("const ", "")
+    
+    # 2. replace QString and QStringList
+    mapped = (
+        mapped
+        .replace("QStringList", "list")
+        .replace("QString", "str")
+    )
+    
+    # 3. replace double by float
+    mapped = mapped.replace("double", "float")
+    
+    return mapped
+
+
+def signatures(formFile, projectPath):
+    """
+    Function to get the signatures of form elements.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    objectsList = []
+    
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction)
+        for obj in objects:
+            name = obj.objectName()
+            if not name or name.startswith("qt_"):
+                # ignore un-named or internal objects
+                continue
+            
+            metaObject = obj.metaObject()
+            objectDict = {
+                "name": name,
+                "class_name": metaObject.className(),
+                "methods": [],
+            }
+            
+            for index in range(metaObject.methodCount()):
+                metaMethod = metaObject.method(index)
+                if metaMethod.methodType() == QMetaMethod.Signal:
+                    signatureDict = {
+                        "methods": []
+                    }
+                    signatureDict["signature"] = "on_{0}_{1}".format(
+                        name,
+                        bytes(metaMethod.methodSignature()).decode()
+                    )
+                    
+                    signatureDict["methods"].append("on_{0}_{1}".format(
+                        name,
+                        bytes(metaMethod.methodSignature())
+                        .decode().split("(")[0]
+                    ))
+                    signatureDict["methods"].append("{0}({1})".format(
+                        signatureDict["methods"][-1],
+                        ", ".join([
+                            __mapType(t)
+                            for t in metaMethod.parameterTypes()
+                        ])
+                    ))
+                    
+                    returnType = __mapType(
+                        metaMethod.typeName().encode())
+                    if returnType == 'void':
+                        returnType = ""
+                    signatureDict["return_type"] = returnType
+                    parameterTypesList = [
+                        __mapType(t)
+                        for t in metaMethod.parameterTypes()
+                    ]
+                    signatureDict["parameter_types"] = parameterTypesList
+                    pyqtSignature = ", ".join(parameterTypesList)
+                    signatureDict["pyqt_signature"] = pyqtSignature
+                    
+                    parameterNames = metaMethod.parameterNames()
+                    if parameterNames:
+                        for index in range(len(parameterNames)):
+                            if not parameterNames[index]:
+                                parameterNames[index] = QByteArray(
+                                    "p{0:d}".format(index).encode("utf-8")
+                                )
+                    parameterNamesList = [bytes(n).decode()
+                                          for n in parameterNames]
+                    signatureDict["parameter_names"] = parameterNamesList
+                    methNamesSig = ", ".join(parameterNamesList)
+                    
+                    if methNamesSig:
+                        pythonSignature = "on_{0}_{1}(self, {2})".format(
+                            name,
+                            bytes(metaMethod.methodSignature())
+                            .decode().split("(")[0],
+                            methNamesSig)
+                    else:
+                        pythonSignature = "on_{0}_{1}(self)".format(
+                            name,
+                            bytes(metaMethod.methodSignature())
+                            .decode().split("(")[0])
+                    signatureDict["python_signature"] = pythonSignature
+                    
+                    objectDict["methods"].append(signatureDict)
+            
+            objectsList.append(objectDict)
+        
+        print(json.dumps(objectsList))
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+if __name__ == "__main__":
+    if len(sys.argv) != 4:
+        print("Wrong number of arguments.")
+        sys.exit(1)
+    
+    if sys.argv[1] == "object_name":
+        objectName(sys.argv[2], sys.argv[3])
+    elif sys.argv[1] == "class_name":
+        className(sys.argv[2], sys.argv[3])
+    elif sys.argv[1] == "signatures":
+        signatures(sys.argv[2], sys.argv[3])
+    else:
+        print("Unknow operation given.")
+        sys.exit(1)
+    
+#
+# eflag: noqa = M701, M801
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Project/UicLoadUi6.py	Tue Dec 22 19:59:29 2020 +0100
@@ -0,0 +1,222 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 - 2020 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module to get the object name, class name or signatures of a Qt form (*.ui).
+"""
+
+import os
+import sys
+import json
+import xml.etree.ElementTree            # secok
+
+try:
+    from PyQt6.QtCore import QMetaMethod, QByteArray
+    from PyQt6.QtGui import QAction
+    from PyQt6.QtWidgets import QWidget, QApplication
+    from PyQt6 import uic
+except ImportError:
+    print("PyQt6 could not be found.")
+    sys.exit(1)
+
+try:
+    from PyQt5 import QtWebEngineWidgets    # __IGNORE_WARNING__
+except ImportError:
+    pass
+
+sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+# add the eric package directory
+
+
+def objectName(formFile, projectPath):
+    """
+    Function to get the object name of a form.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        print(dlg.objectName())
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+def className(formFile, projectPath):
+    """
+    Function to get the class name of a form.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        print(dlg.metaObject().className())
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+def __mapType(type_):
+    """
+    Private function to map a type as reported by Qt's meta object to the
+    correct Python type.
+    
+    @param type_ type as reported by Qt
+    @type QByteArray or bytes
+    @return mapped Python type
+    @rtype str
+    """
+    mapped = bytes(type_).decode()
+    
+    # I. always check for *
+    mapped = mapped.replace("*", "")
+    
+    # 1. check for const
+    mapped = mapped.replace("const ", "")
+    
+    # 2. replace QString and QStringList
+    mapped = (
+        mapped
+        .replace("QStringList", "list")
+        .replace("QString", "str")
+    )
+    
+    # 3. replace double by float
+    mapped = mapped.replace("double", "float")
+    
+    return mapped
+
+
+def signatures(formFile, projectPath):
+    """
+    Function to get the signatures of form elements.
+    
+    @param formFile file name of the form
+    @type str
+    @param projectPath directory name of the project
+    @type str
+    """
+    objectsList = []
+    
+    app = QApplication([])      # __IGNORE_WARNING__
+    try:
+        dlg = uic.loadUi(formFile, package=projectPath)
+        objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction)
+        for obj in objects:
+            name = obj.objectName()
+            if not name or name.startswith("qt_"):
+                # ignore un-named or internal objects
+                continue
+            
+            metaObject = obj.metaObject()
+            objectDict = {
+                "name": name,
+                "class_name": metaObject.className(),
+                "methods": [],
+            }
+            
+            for index in range(metaObject.methodCount()):
+                metaMethod = metaObject.method(index)
+                if metaMethod.methodType() == QMetaMethod.MethodType.Signal:
+                    signatureDict = {
+                        "methods": []
+                    }
+                    signatureDict["signature"] = "on_{0}_{1}".format(
+                        name,
+                        bytes(metaMethod.methodSignature()).decode()
+                    )
+                    
+                    signatureDict["methods"].append("on_{0}_{1}".format(
+                        name,
+                        bytes(metaMethod.methodSignature())
+                        .decode().split("(")[0]
+                    ))
+                    signatureDict["methods"].append("{0}({1})".format(
+                        signatureDict["methods"][-1],
+                        ", ".join([
+                            __mapType(t)
+                            for t in metaMethod.parameterTypes()
+                        ])
+                    ))
+                    
+                    returnType = __mapType(
+                        metaMethod.typeName().encode())
+                    if returnType == 'void':
+                        returnType = ""
+                    signatureDict["return_type"] = returnType
+                    parameterTypesList = [
+                        __mapType(t)
+                        for t in metaMethod.parameterTypes()
+                    ]
+                    signatureDict["parameter_types"] = parameterTypesList
+                    pyqtSignature = ", ".join(parameterTypesList)
+                    signatureDict["pyqt_signature"] = pyqtSignature
+                    
+                    parameterNames = metaMethod.parameterNames()
+                    if parameterNames:
+                        for index in range(len(parameterNames)):
+                            if not parameterNames[index]:
+                                parameterNames[index] = QByteArray(
+                                    "p{0:d}".format(index).encode("utf-8")
+                                )
+                    parameterNamesList = [bytes(n).decode()
+                                          for n in parameterNames]
+                    signatureDict["parameter_names"] = parameterNamesList
+                    methNamesSig = ", ".join(parameterNamesList)
+                    
+                    if methNamesSig:
+                        pythonSignature = "on_{0}_{1}(self, {2})".format(
+                            name,
+                            bytes(metaMethod.methodSignature())
+                            .decode().split("(")[0],
+                            methNamesSig)
+                    else:
+                        pythonSignature = "on_{0}_{1}(self)".format(
+                            name,
+                            bytes(metaMethod.methodSignature())
+                            .decode().split("(")[0])
+                    signatureDict["python_signature"] = pythonSignature
+                    
+                    objectDict["methods"].append(signatureDict)
+            
+            objectsList.append(objectDict)
+        
+        print(json.dumps(objectsList))
+        sys.exit(0)
+    except (AttributeError, ImportError,
+            xml.etree.ElementTree.ParseError) as err:
+        print(str(err))
+        sys.exit(1)
+
+
+if __name__ == "__main__":
+    if len(sys.argv) != 4:
+        print("Wrong number of arguments.")
+        sys.exit(1)
+    
+    if sys.argv[1] == "object_name":
+        objectName(sys.argv[2], sys.argv[3])
+    elif sys.argv[1] == "class_name":
+        className(sys.argv[2], sys.argv[3])
+    elif sys.argv[1] == "signatures":
+        signatures(sys.argv[2], sys.argv[3])
+    else:
+        print("Unknow operation given.")
+        sys.exit(1)
+    
+#
+# eflag: noqa = M701, M801
--- a/eric6/UI/UserInterface.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/UI/UserInterface.py	Tue Dec 22 19:59:29 2020 +0100
@@ -2943,7 +2943,7 @@
         Private slot to initialize the actions to show the PySide
         documentation.
         """
-        if Utilities.checkPyside():
+        if Utilities.checkPyside(variant=2):
             self.pyside2DocAct = E5Action(
                 self.tr('PySide2 Documentation'),
                 self.tr('PySide&2 Documentation'),
--- a/eric6/Utilities/__init__.py	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/Utilities/__init__.py	Tue Dec 22 19:59:29 2020 +0100
@@ -1815,6 +1815,8 @@
     @return the PySide2 tool path with extension
     @rtype str
     """
+    # TODO: add support for pyside6
+    
     if variant == 1:
         # no PySide support anymore
         return ""
@@ -1824,9 +1826,13 @@
         if not hasPyside:
             return ""
         
-        venvName = Preferences.getDebugger("Python3VirtualEnv")
+        venvName = Preferences.getQt("PySide{0}VenvName".format(variant))
+        if not venvName:
+            venvName = Preferences.getDebugger("Python3VirtualEnv")
         interpreter = e5App().getObject(
             "VirtualEnvManager").getVirtualenvInterpreter(venvName)
+        if interpreter == "" or not isinpath(interpreter):
+            interpreter = sys.executable
         prefix = os.path.dirname(interpreter)
         if toolname in ["pyside2-uic"]:
             return os.path.join(prefix, "Scripts", toolname + '.exe')
@@ -1871,24 +1877,26 @@
     """
     if variant == 1:
         # no longer supported PySide
-        return [False, False]
+        return False
     
-    venvName = Preferences.getDebugger("Python3VirtualEnv")
+    venvName = Preferences.getQt("PySide{0}VenvName".format(variant))
+    if not venvName:
+        venvName = Preferences.getDebugger("Python3VirtualEnv")
     interpreter = e5App().getObject(
         "VirtualEnvManager").getVirtualenvInterpreter(venvName)
     if interpreter == "" or not isinpath(interpreter):
-        return False
-    else:
-        checker = os.path.join(
-            getConfig('ericDir'), "Utilities", "PySideImporter.py")
-        args = [checker, "-" + variant]
-        proc = QProcess()
-        proc.setProcessChannelMode(QProcess.MergedChannels)
-        proc.start(interpreter, args)
-        finished = proc.waitForFinished(30000)
-        if finished:
-            if proc.exitCode() == 0:
-                return True
+        interpreter = sys.executable
+    
+    checker = os.path.join(
+        getConfig('ericDir'), "Utilities", "PySideImporter.py")
+    args = [checker, "-" + variant]
+    proc = QProcess()
+    proc.setProcessChannelMode(QProcess.MergedChannels)
+    proc.start(interpreter, args)
+    finished = proc.waitForFinished(30000)
+    if finished:
+        if proc.exitCode() == 0:
+            return True
     
     return False
 
--- a/eric6/i18n/eric6_cs.ts	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/i18n/eric6_cs.ts	Tue Dec 22 19:59:29 2020 +0100
@@ -6640,57 +6640,57 @@
         <translation>&amp;Filtr pro:</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="557"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="574"/>
         <source>Code Generation</source>
         <translation>Generování kódu</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="212"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="225"/>
         <source>uic error</source>
         <translation>uic chyba</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="133"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="135"/>
         <source>Create Dialog Code</source>
         <translation>Vytvořit Dialog Code</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="133"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="135"/>
         <source>The file &lt;b&gt;{0}&lt;/b&gt; exists but does not contain any classes.</source>
         <translation>Soubor &lt;b&gt;{0}&lt;/b&gt; existuje ale neobsahuje žádné třídy.</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="203"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="216"/>
         <source>&lt;p&gt;There was an error loading the form &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Byla nalezena chyba načtená z &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="427"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="444"/>
         <source>&lt;p&gt;Could not open the code template file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Template soubor &lt;b&gt;{0}&lt;/b&gt; nelze otevřít.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="464"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="481"/>
         <source>&lt;p&gt;Could not open the source file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nelze ovevřít source soubor &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="557"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="574"/>
         <source>&lt;p&gt;Could not write the source file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nelze zapsat do source souboru &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="212"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="225"/>
         <source>&lt;p&gt;The project specific Python interpreter &lt;b&gt;{0}&lt;/b&gt; could not be started or did not finish within 30 seconds.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="388"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="401"/>
         <source>&lt;p&gt;Code generation for project language &quot;{0}&quot; is not supported.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="416"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="433"/>
         <source>&lt;p&gt;No code template file available for project type &quot;{0}&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6787,7 +6787,7 @@
 <context>
     <name>DebugUI</name>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1944"/>
+        <location filename="../Debugger/DebugUI.py" line="1942"/>
         <source>Run Script</source>
         <translation>Spustit skript</translation>
     </message>
@@ -6807,7 +6807,7 @@
         <translation>&lt;b&gt;Spustit skript&lt;/b&gt;&lt;p&gt;Nastavení parametrů příkazové řádky a spuštění skriptu bez debugeru. Pokud jsou v souboru neuložené změny, měly by se nejdříve uložit.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1956"/>
+        <location filename="../Debugger/DebugUI.py" line="1954"/>
         <source>Run Project</source>
         <translation>Spustit projekt</translation>
     </message>
@@ -6907,7 +6907,7 @@
         <translation>&lt;b&gt;Profilovat projekt&lt;/b&gt;&lt;p&gt;Nastavení parametrů příkazové řádky a spuštění projektu s profilováním kódu. Pokud jsou v projektu neuložené změny, měly by se nejdříve uložit.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2076"/>
+        <location filename="../Debugger/DebugUI.py" line="2074"/>
         <source>Debug Script</source>
         <translation>Debugovat skript</translation>
     </message>
@@ -6927,7 +6927,7 @@
         <translation>&lt;b&gt;Debugovat skript&lt;/b&gt;&lt;p&gt;Nastavení parametrů příkazové řádky a aktuální řádky jako první python příkaz v aktuálním editačním okně. Pokud jsou ve skriptu neuložené změny, měly by se nejdříve uložit.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2093"/>
+        <location filename="../Debugger/DebugUI.py" line="2091"/>
         <source>Debug Project</source>
         <translation>Debugovat projekt</translation>
     </message>
@@ -7204,52 +7204,52 @@
         <translation>Debug</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1154"/>
+        <location filename="../Debugger/DebugUI.py" line="1152"/>
         <source>The program being debugged contains an unspecified syntax error.</source>
         <translation>Program, který je právě debugován, obsahuje nespecifikovanou syntaktickou chybu.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1197"/>
+        <location filename="../Debugger/DebugUI.py" line="1195"/>
         <source>An unhandled exception occured. See the shell window for details.</source>
         <translation>Objevila se neošetřená výjimka. Detaily naleznete v shell okně.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1330"/>
+        <location filename="../Debugger/DebugUI.py" line="1328"/>
         <source>The program being debugged has terminated unexpectedly.</source>
         <translation>Debugovaný program byl neočekávaně ukončen.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1437"/>
+        <location filename="../Debugger/DebugUI.py" line="1435"/>
         <source>Breakpoint Condition Error</source>
         <translation>Chyba v podmíněném breakpointu</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1685"/>
+        <location filename="../Debugger/DebugUI.py" line="1683"/>
         <source>Coverage of Project</source>
         <translation>Pokrytí projektu</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1672"/>
+        <location filename="../Debugger/DebugUI.py" line="1670"/>
         <source>Coverage of Script</source>
         <translation>Pokrytí skriptu</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1956"/>
+        <location filename="../Debugger/DebugUI.py" line="1954"/>
         <source>There is no main script defined for the current project. Aborting</source>
         <translation>V aktuálním projektu není definován hlavní skript. Zrušeno</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1821"/>
+        <location filename="../Debugger/DebugUI.py" line="1819"/>
         <source>Profile of Project</source>
         <translation>Profilovat projekt</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1808"/>
+        <location filename="../Debugger/DebugUI.py" line="1806"/>
         <source>Profile of Script</source>
         <translation>Profilovat skript</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2093"/>
+        <location filename="../Debugger/DebugUI.py" line="2091"/>
         <source>There is no main script defined for the current project. No debugging possible.</source>
         <translation>V aktuálním projektu není definován hlavní skript. Debugování není možné.</translation>
     </message>
@@ -7259,12 +7259,12 @@
         <translation>Zastavit běžící skript.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1476"/>
+        <location filename="../Debugger/DebugUI.py" line="1474"/>
         <source>Watch Expression Error</source>
         <translation>Chyba sledovacího bodu</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1516"/>
+        <location filename="../Debugger/DebugUI.py" line="1514"/>
         <source>Watch expression already exists</source>
         <translation>Sledovací bod již existuje</translation>
     </message>
@@ -7301,42 +7301,42 @@
         <translation></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1173"/>
+        <location filename="../Debugger/DebugUI.py" line="1171"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; contains the syntax error &lt;b&gt;{1}&lt;/b&gt; at line &lt;b&gt;{2}&lt;/b&gt;, character &lt;b&gt;{3}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; na řádce &lt;b&gt;{1}&lt;/b&gt;, písmeno &lt;b&gt;{2}&lt;/b&gt;, obsahuje syntaktickou chybu &lt;b&gt;{3}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1247"/>
+        <location filename="../Debugger/DebugUI.py" line="1245"/>
         <source>&lt;p&gt;The debugged program raised the exception &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;br&gt;File: &lt;b&gt;{2}&lt;/b&gt;, Line: &lt;b&gt;{3}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Break here?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Debugovaný program vyvolal výjimku  &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;br&gt;Soubor: &lt;b&gt;{2}&lt;/b&gt;, řádek: &lt;b&gt;{3}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Zastavit zde?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1262"/>
+        <location filename="../Debugger/DebugUI.py" line="1260"/>
         <source>&lt;p&gt;The debugged program raised the exception &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Debugovaný program vyvolal výjimku  &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1437"/>
+        <location filename="../Debugger/DebugUI.py" line="1435"/>
         <source>&lt;p&gt;The condition of the breakpoint &lt;b&gt;{0}, {1}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Podmínka breakpointu &lt;b&gt;{0}, {1}&lt;/b&gt; obsahuje syntaktickou chybu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1476"/>
+        <location filename="../Debugger/DebugUI.py" line="1474"/>
         <source>&lt;p&gt;The watch expression &lt;b&gt;{0}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Sledovací bod &lt;b&gt;{0}&lt;/b&gt; obsahuje syntaktickou chybu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1506"/>
+        <location filename="../Debugger/DebugUI.py" line="1504"/>
         <source>&lt;p&gt;A watch expression &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; already exists.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Sledovací bod &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; již existuje.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1511"/>
+        <location filename="../Debugger/DebugUI.py" line="1509"/>
         <source>&lt;p&gt;A watch expression &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; for the variable &lt;b&gt;{1}&lt;/b&gt; already exists.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Sledovací bod &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; pro proměnnou &lt;b&gt;{1}&lt;/b&gt; již existuje.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1114"/>
+        <location filename="../Debugger/DebugUI.py" line="1113"/>
         <source>Program terminated</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7356,7 +7356,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1316"/>
+        <location filename="../Debugger/DebugUI.py" line="1314"/>
         <source>&lt;p&gt;The program generate the signal &quot;{0}&quot;.&lt;br/&gt;File: &lt;b&gt;{1}&lt;/b&gt;, Line: &lt;b&gt;{2}&lt;/b&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7376,31 +7376,31 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1100"/>
+        <location filename="../Debugger/DebugUI.py" line="1099"/>
         <source>Message: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1106"/>
+        <location filename="../Debugger/DebugUI.py" line="1105"/>
         <source>The program has terminated with an exit status of {0}.
 {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1110"/>
+        <location filename="../Debugger/DebugUI.py" line="1109"/>
         <source>&quot;{0}&quot; has terminated with an exit status of {1}.
 {2}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1119"/>
+        <location filename="../Debugger/DebugUI.py" line="1118"/>
         <source>The program has terminated with an exit status of {0}.
 {1}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1124"/>
+        <location filename="../Debugger/DebugUI.py" line="1123"/>
         <source>&quot;{0}&quot; has terminated with an exit status of {1}.
 {2}
 </source>
@@ -7427,7 +7427,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1394"/>
+        <location filename="../Debugger/DebugUI.py" line="1392"/>
         <source>No locals available.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7505,12 +7505,12 @@
         <translation>Stav</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="823"/>
+        <location filename="../Debugger/DebugViewer.py" line="825"/>
         <source>waiting at breakpoint</source>
         <translation>čekající na breakpoint</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="827"/>
+        <location filename="../Debugger/DebugViewer.py" line="829"/>
         <source>running</source>
         <translation>běžící</translation>
     </message>
@@ -7520,17 +7520,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="825"/>
+        <location filename="../Debugger/DebugViewer.py" line="827"/>
         <source>waiting at exception</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="829"/>
+        <location filename="../Debugger/DebugViewer.py" line="831"/>
         <source>unknown state ({0})</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="750"/>
+        <location filename="../Debugger/DebugViewer.py" line="751"/>
         <source>&lt;p&gt;Debugger with ID &lt;b&gt;{0}&lt;/b&gt; has been connected.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -18800,7 +18800,7 @@
 <context>
     <name>FileDialogWizardDialog</name>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="74"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="72"/>
         <source>QFileDialog Wizard</source>
         <translation>QFileDialog průvodce</translation>
     </message>
@@ -18930,7 +18930,7 @@
         <translation>Zobrazit jen adresáře</translation>
     </message>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="91"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="89"/>
         <source>Test</source>
         <translation></translation>
     </message>
@@ -19080,7 +19080,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="69"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="67"/>
         <source>E5FileDialog Wizard</source>
         <translation type="unfinished"></translation>
     </message>
@@ -26721,27 +26721,27 @@
 <context>
     <name>Globals</name>
     <message>
-        <location filename="../Globals/__init__.py" line="450"/>
+        <location filename="../Globals/__init__.py" line="453"/>
         <source>{0:4.2f} Bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="454"/>
+        <location filename="../Globals/__init__.py" line="457"/>
         <source>{0:4.2f} KiB</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="458"/>
+        <location filename="../Globals/__init__.py" line="461"/>
         <source>{0:4.2f} MiB</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="462"/>
+        <location filename="../Globals/__init__.py" line="465"/>
         <source>{0:4.2f} GiB</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="466"/>
+        <location filename="../Globals/__init__.py" line="469"/>
         <source>{0:4.2f} TiB</source>
         <translation type="unfinished"></translation>
     </message>
@@ -27501,12 +27501,12 @@
         <translation type="obsolete">&lt;b&gt;Poznámka&lt;/b&gt;: Ponechte prázdné má-li se použít proměnná prostředí PYSIDEDOCDIR, je-li nastavena.</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="49"/>
+        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="48"/>
         <source>HTML Files (*.html *.htm);;All Files (*)</source>
         <translation>HTML soubory (*.html *.htm);;Všechny soubory (*)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="35"/>
+        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="34"/>
         <source>HTML Files (*.html *.htm);;Compressed Help Files (*.chm);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53224,17 +53224,17 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="../Preferences/__init__.py" line="1628"/>
+        <location filename="../Preferences/__init__.py" line="1647"/>
         <source>Export Preferences</source>
         <translation>Předvolby exportu</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1656"/>
+        <location filename="../Preferences/__init__.py" line="1675"/>
         <source>Import Preferences</source>
         <translation>Předvolby importu</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1656"/>
+        <location filename="../Preferences/__init__.py" line="1675"/>
         <source>Properties File (*.ini);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53582,32 +53582,32 @@
         <translation type="obsolete">Kompilátor resource (Ruby, Qt4)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="202"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="214"/>
         <source>CORBA IDL Compiler</source>
         <translation>CORBA IDL kompilátor</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="341"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="353"/>
         <source>(not configured)</source>
         <translation>(nezkonfigurováno)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="399"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="420"/>
         <source>(not executable)</source>
         <translation>(nevykonavatelný)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="442"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="463"/>
         <source>(not found)</source>
         <translation>(nenalezeno)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="396"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="417"/>
         <source>(unknown)</source>
         <translation>(neznámý)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="235"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="247"/>
         <source>Spell Checker - PyEnchant</source>
         <translation></translation>
     </message>
@@ -53627,7 +53627,7 @@
         <translation type="obsolete">Kompilátor resourců (Python, PySide)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="252"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="264"/>
         <source>Source Highlighter - Pygments</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53667,57 +53667,57 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="210"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="222"/>
         <source>Protobuf Compiler</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="217"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="229"/>
         <source>gRPC Compiler</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="375"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="382"/>
         <source>(module not found)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="162"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="174"/>
         <source>Translation Extractor (Python, PySide2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="172"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="184"/>
         <source>Resource Compiler (Python, PySide2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="167"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="179"/>
         <source>Forms Compiler (Python, PySide2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="183"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="195"/>
         <source>conda Manager</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="191"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="203"/>
         <source>PyPI Package Management</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="259"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="271"/>
         <source>MicroPython - MPY Cross Compiler</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="262"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="274"/>
         <source>MicroPython - ESP Tool</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="268"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="280"/>
         <source>MicroPython - PyBoard Flasher</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53746,206 +53746,216 @@
         <source>Unavailable Tools Only</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Preferences/ProgramsDialog.py" line="161"/>
+        <source>Translation Extractor (Python, PyQt6)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ProgramsDialog.py" line="166"/>
+        <source>Forms Compiler (Python, PyQt6)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project/Project.py" line="269"/>
+        <location filename="../Project/Project.py" line="271"/>
         <source>Console</source>
         <translation>Konzole</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="270"/>
+        <location filename="../Project/Project.py" line="272"/>
         <source>Other</source>
         <translation>Ostatní</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="781"/>
+        <location filename="../Project/Project.py" line="787"/>
         <source>Read project file</source>
         <translation>Načíst soubor projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="884"/>
+        <location filename="../Project/Project.py" line="890"/>
         <source>Save project file</source>
         <translation>Uložit soubor projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="920"/>
+        <location filename="../Project/Project.py" line="926"/>
         <source>Read user project properties</source>
         <translation>Načíst uživatelská nastavení projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="944"/>
+        <location filename="../Project/Project.py" line="950"/>
         <source>Save user project properties</source>
         <translation>Uložit uživatelská nastavení projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1002"/>
+        <location filename="../Project/Project.py" line="1008"/>
         <source>Read project session</source>
         <translation>Načíst relaci projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1227"/>
+        <location filename="../Project/Project.py" line="1233"/>
         <source>Please save the project first.</source>
         <translation>Prosím, nejdříve uložte projekt.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1038"/>
+        <location filename="../Project/Project.py" line="1044"/>
         <source>Save project session</source>
         <translation>Uložit relaci projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1067"/>
+        <location filename="../Project/Project.py" line="1073"/>
         <source>Delete project session</source>
         <translation>Smazat relaci projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1101"/>
+        <location filename="../Project/Project.py" line="1107"/>
         <source>Read tasks</source>
         <translation>Načíst úlohy</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1121"/>
+        <location filename="../Project/Project.py" line="1127"/>
         <source>Save tasks</source>
         <translation>Uložit úlohy</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1180"/>
+        <location filename="../Project/Project.py" line="1186"/>
         <source>Read debugger properties</source>
         <translation>Načíst nastavení debuggeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1215"/>
+        <location filename="../Project/Project.py" line="1221"/>
         <source>Save debugger properties</source>
         <translation>Uložit nastavení debuggeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1241"/>
+        <location filename="../Project/Project.py" line="1247"/>
         <source>Delete debugger properties</source>
         <translation>Smazat nastavení debuggeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1369"/>
+        <location filename="../Project/Project.py" line="1375"/>
         <source>Add Language</source>
         <translation>Přidat jazyk</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1494"/>
+        <location filename="../Project/Project.py" line="1501"/>
         <source>Delete translation</source>
         <translation>Smazat překlad</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1659"/>
+        <location filename="../Project/Project.py" line="1666"/>
         <source>Add file</source>
         <translation>Přidat soubor</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1791"/>
+        <location filename="../Project/Project.py" line="1798"/>
         <source>The target directory must not be empty.</source>
         <translation>Cílový adresář nesmí být prázdný.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1802"/>
+        <location filename="../Project/Project.py" line="1809"/>
         <source>Add directory</source>
         <translation>Přidat adresář</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1802"/>
+        <location filename="../Project/Project.py" line="1809"/>
         <source>The source directory must not be empty.</source>
         <translation>Cílový adresář nesmí být prázdný.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1939"/>
+        <location filename="../Project/Project.py" line="1946"/>
         <source>Rename file</source>
         <translation>Přejmenovat soubor</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1963"/>
+        <location filename="../Project/Project.py" line="1970"/>
         <source>Rename File</source>
         <translation>Přejmenovat soubor</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2213"/>
+        <location filename="../Project/Project.py" line="2220"/>
         <source>Delete file</source>
         <translation>Smazat soubor</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2243"/>
+        <location filename="../Project/Project.py" line="2250"/>
         <source>Delete directory</source>
         <translation>Smazat adresář</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2338"/>
+        <location filename="../Project/Project.py" line="2345"/>
         <source>Create project directory</source>
         <translation>Vytvořit adresář projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2943"/>
+        <location filename="../Project/Project.py" line="2950"/>
         <source>New Project</source>
         <translation>Nový projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2458"/>
+        <location filename="../Project/Project.py" line="2465"/>
         <source>Add existing files to the project?</source>
         <translation>Přidat existující soubory do projektu?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2585"/>
+        <location filename="../Project/Project.py" line="2592"/>
         <source>Would you like to edit the VCS command options?</source>
         <translation>Chcete editovat parametry VCS příkazu?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3812"/>
+        <location filename="../Project/Project.py" line="3819"/>
         <source>New project</source>
         <translation>Nový projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2528"/>
+        <location filename="../Project/Project.py" line="2535"/>
         <source>Shall the project file be added to the repository?</source>
         <translation>Má být projekt přidán do repozitáře?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2557"/>
+        <location filename="../Project/Project.py" line="2564"/>
         <source>Select version control system for the project</source>
         <translation>Výběr verzovacího systému projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3826"/>
+        <location filename="../Project/Project.py" line="3833"/>
         <source>Open project</source>
         <translation>Otevřít projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3087"/>
+        <location filename="../Project/Project.py" line="3094"/>
         <source>Project Files (*.e4p)</source>
         <translation>Soubory projektu (*.e4p)</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3863"/>
+        <location filename="../Project/Project.py" line="3870"/>
         <source>Save project as</source>
         <translation>Uložit projekt jako</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3102"/>
+        <location filename="../Project/Project.py" line="3109"/>
         <source>Save File</source>
         <translation>Uložit soubor</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3138"/>
+        <location filename="../Project/Project.py" line="3145"/>
         <source>Close Project</source>
         <translation>Zavřít projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3138"/>
+        <location filename="../Project/Project.py" line="3145"/>
         <source>The current project has unsaved changes.</source>
         <translation>Aktuální projekt obsahuje neuložené změny.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3315"/>
+        <location filename="../Project/Project.py" line="3322"/>
         <source>Syntax errors detected</source>
         <translation>Zjištěny syntaktické chyby</translation>
     </message>
     <message numerus="yes">
-        <location filename="../Project/Project.py" line="3315"/>
+        <location filename="../Project/Project.py" line="3322"/>
         <source>The project contains %n file(s) with syntax errors.</source>
         <translation>
             <numerusform>Projekt obsahuje %n soubor se syntaktickými chybami.</numerusform>
@@ -53954,627 +53964,627 @@
         </translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3812"/>
+        <location filename="../Project/Project.py" line="3819"/>
         <source>&amp;New...</source>
         <translation>&amp;Nový...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3817"/>
+        <location filename="../Project/Project.py" line="3824"/>
         <source>Generate a new project</source>
         <translation>Vygenerovat nový projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3818"/>
+        <location filename="../Project/Project.py" line="3825"/>
         <source>&lt;b&gt;New...&lt;/b&gt;&lt;p&gt;This opens a dialog for entering the info for a new project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Nový...&lt;/b&gt;&lt;p&gt;Otevře se dialogové okno pro zadání informací o novém projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3826"/>
+        <location filename="../Project/Project.py" line="3833"/>
         <source>&amp;Open...</source>
         <translation>&amp;Otevřít...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3831"/>
+        <location filename="../Project/Project.py" line="3838"/>
         <source>Open an existing project</source>
         <translation>Otevřít existující projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3832"/>
-        <source>&lt;b&gt;Open...&lt;/b&gt;&lt;p&gt;This opens an existing project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Otevřít....&lt;/b&gt;&lt;p&gt;Otevře existující projekt.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3839"/>
+        <source>&lt;b&gt;Open...&lt;/b&gt;&lt;p&gt;This opens an existing project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Otevřít....&lt;/b&gt;&lt;p&gt;Otevře existující projekt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3846"/>
         <source>Close project</source>
         <translation>Zavřít projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3839"/>
+        <location filename="../Project/Project.py" line="3846"/>
         <source>&amp;Close</source>
         <translation>&amp;Zavřít</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3843"/>
+        <location filename="../Project/Project.py" line="3850"/>
         <source>Close the current project</source>
         <translation>Uzavře aktuální projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3844"/>
-        <source>&lt;b&gt;Close&lt;/b&gt;&lt;p&gt;This closes the current project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Zavřít&lt;/b&gt;&lt;p&gt;Aktuální projekt se uzavře.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3851"/>
+        <source>&lt;b&gt;Close&lt;/b&gt;&lt;p&gt;This closes the current project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Zavřít&lt;/b&gt;&lt;p&gt;Aktuální projekt se uzavře.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3858"/>
         <source>Save project</source>
         <translation>Uložit projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4043"/>
+        <location filename="../Project/Project.py" line="4050"/>
         <source>&amp;Save</source>
         <translation>&amp;Uložit</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3855"/>
+        <location filename="../Project/Project.py" line="3862"/>
         <source>Save the current project</source>
         <translation>Uložit aktuální projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3856"/>
-        <source>&lt;b&gt;Save&lt;/b&gt;&lt;p&gt;This saves the current project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Uložit&lt;/b&gt;&lt;p&gt;Aktuální projekt se uloží.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3863"/>
+        <source>&lt;b&gt;Save&lt;/b&gt;&lt;p&gt;This saves the current project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Uložit&lt;/b&gt;&lt;p&gt;Aktuální projekt se uloží.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3870"/>
         <source>Save &amp;as...</source>
         <translation>Uložit j&amp;ako...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3867"/>
+        <location filename="../Project/Project.py" line="3874"/>
         <source>Save the current project to a new file</source>
         <translation>Uloží aktuální projekt do nového souboru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3869"/>
+        <location filename="../Project/Project.py" line="3876"/>
         <source>&lt;b&gt;Save as&lt;/b&gt;&lt;p&gt;This saves the current project to a new file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Uložit jako&lt;/b&gt;&lt;p&gt;Uloží aktuální projekt do nového souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3878"/>
-        <source>Add files to project</source>
-        <translation>Přidat soubory do projektu</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3878"/>
-        <source>Add &amp;files...</source>
-        <translation>&amp;Přidat soubory...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3883"/>
-        <source>Add files to the current project</source>
-        <translation>Přidat soubory do aktuálního projektu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3885"/>
+        <source>Add files to project</source>
+        <translation>Přidat soubory do projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3885"/>
+        <source>Add &amp;files...</source>
+        <translation>&amp;Přidat soubory...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3890"/>
+        <source>Add files to the current project</source>
+        <translation>Přidat soubory do aktuálního projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3892"/>
         <source>&lt;b&gt;Add files...&lt;/b&gt;&lt;p&gt;This opens a dialog for adding files to the current project. The place to add is determined by the file extension.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Přidat soubory...&lt;/b&gt;&lt;p&gt;Otevře dialog pri přidání souborů do aktuálního projektu. Místo pro přidání je definováno extenzí souborů.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3894"/>
+        <location filename="../Project/Project.py" line="3901"/>
         <source>Add directory to project</source>
         <translation>Přidat adresář do projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3894"/>
-        <source>Add directory...</source>
-        <translation>Přidat adresář...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3899"/>
-        <source>Add a directory to the current project</source>
-        <translation>Přidat adresář do aktuálního projektu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3901"/>
+        <source>Add directory...</source>
+        <translation>Přidat adresář...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3906"/>
+        <source>Add a directory to the current project</source>
+        <translation>Přidat adresář do aktuálního projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3908"/>
         <source>&lt;b&gt;Add directory...&lt;/b&gt;&lt;p&gt;This opens a dialog for adding a directory to the current project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Přidat adresář...&lt;/b&gt;&lt;p&gt;Otevře dialog pro přičtení adresáře do aktuálního projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3909"/>
+        <location filename="../Project/Project.py" line="3916"/>
         <source>Add translation to project</source>
         <translation>Přidat překlad do projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3909"/>
-        <source>Add &amp;translation...</source>
-        <translation>Přida&amp;t překlad...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3914"/>
-        <source>Add a translation to the current project</source>
-        <translation>Přidat překlad do aktuálního projektu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3916"/>
+        <source>Add &amp;translation...</source>
+        <translation>Přida&amp;t překlad...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3921"/>
+        <source>Add a translation to the current project</source>
+        <translation>Přidat překlad do aktuálního projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3923"/>
         <source>&lt;b&gt;Add translation...&lt;/b&gt;&lt;p&gt;This opens a dialog for add a translation to the current project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Přidat překlad&lt;/b&gt;&lt;p&gt;Otevře dialog pro přidání překladu do aktuálního projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3924"/>
+        <location filename="../Project/Project.py" line="3931"/>
         <source>Search new files</source>
         <translation>Hledat nové soubory</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3924"/>
+        <location filename="../Project/Project.py" line="3931"/>
         <source>Searc&amp;h new files...</source>
         <translation>&amp;Hledat nové soubory...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3928"/>
+        <location filename="../Project/Project.py" line="3935"/>
         <source>Search new files in the project directory.</source>
         <translation>Hledat nové soubory v adresáři projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3954"/>
+        <location filename="../Project/Project.py" line="3961"/>
         <source>Project properties</source>
         <translation>Nastavení projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3954"/>
+        <location filename="../Project/Project.py" line="3961"/>
         <source>&amp;Properties...</source>
         <translation>&amp;Natavení...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3959"/>
+        <location filename="../Project/Project.py" line="3966"/>
         <source>Show the project properties</source>
         <translation>Zobrazit nastavení projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3960"/>
-        <source>&lt;b&gt;Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the project properties.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Nastavení...&lt;/b&gt;&lt;p&gt;Zobrazí dialog s editací nastavení projektu.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3967"/>
+        <source>&lt;b&gt;Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the project properties.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Nastavení...&lt;/b&gt;&lt;p&gt;Zobrazí dialog s editací nastavení projektu.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3974"/>
         <source>User project properties</source>
         <translation>Uživatelská nastavení projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3967"/>
-        <source>&amp;User Properties...</source>
-        <translation>Uživat&amp;elská nastavení...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3972"/>
-        <source>Show the user specific project properties</source>
-        <translation>Zobrazit uživatelem definovaná nastavení projektu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3974"/>
+        <source>&amp;User Properties...</source>
+        <translation>Uživat&amp;elská nastavení...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3979"/>
+        <source>Show the user specific project properties</source>
+        <translation>Zobrazit uživatelem definovaná nastavení projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3981"/>
         <source>&lt;b&gt;User Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the user specific project properties.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Uživatelská nastavení...&lt;/b&gt;&lt;p&gt;Zobrazí dialog s editací uživatelských nastavení projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3982"/>
+        <location filename="../Project/Project.py" line="3989"/>
         <source>Filetype Associations</source>
         <translation>Asociace typů souborů</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3982"/>
+        <location filename="../Project/Project.py" line="3989"/>
         <source>Filetype Associations...</source>
         <translation>Asociace typů souborů...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3986"/>
+        <location filename="../Project/Project.py" line="3993"/>
         <source>Show the project filetype associations</source>
         <translation>Zobrazit asociace typů souborů</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4018"/>
+        <location filename="../Project/Project.py" line="4025"/>
         <source>Debugger Properties</source>
         <translation>Nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4018"/>
+        <location filename="../Project/Project.py" line="4025"/>
         <source>Debugger &amp;Properties...</source>
         <translation>Nastavení &amp;debuggeru...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4022"/>
+        <location filename="../Project/Project.py" line="4029"/>
         <source>Show the debugger properties</source>
         <translation>Zobrazit nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4023"/>
+        <location filename="../Project/Project.py" line="4030"/>
         <source>&lt;b&gt;Debugger Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Nastavení debugeru...&lt;/b&gt;&lt;p&gt;Zobrazí dialog s editací nastavení debugeru.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4031"/>
+        <location filename="../Project/Project.py" line="4038"/>
         <source>Load</source>
         <translation>Načíst</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4031"/>
+        <location filename="../Project/Project.py" line="4038"/>
         <source>&amp;Load</source>
         <translation>&amp;Načíst</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4035"/>
+        <location filename="../Project/Project.py" line="4042"/>
         <source>Load the debugger properties</source>
         <translation>Načíst nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4036"/>
-        <source>&lt;b&gt;Load Debugger Properties&lt;/b&gt;&lt;p&gt;This loads the project specific debugger settings.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Načíst nastavení debugeru&lt;/b&gt;&lt;p&gt;Načtou se nastavení debugeru do projektu.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4043"/>
+        <source>&lt;b&gt;Load Debugger Properties&lt;/b&gt;&lt;p&gt;This loads the project specific debugger settings.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Načíst nastavení debugeru&lt;/b&gt;&lt;p&gt;Načtou se nastavení debugeru do projektu.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4050"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4047"/>
+        <location filename="../Project/Project.py" line="4054"/>
         <source>Save the debugger properties</source>
         <translation>Uložit nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4048"/>
-        <source>&lt;b&gt;Save Debugger Properties&lt;/b&gt;&lt;p&gt;This saves the project specific debugger settings.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Uložit nastavení debugeru&lt;/b&gt;&lt;p&gt;Uloží nastavení debugeru definovaná v projektu..&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4055"/>
-        <source>Delete</source>
-        <translation>Smazat</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4055"/>
+        <source>&lt;b&gt;Save Debugger Properties&lt;/b&gt;&lt;p&gt;This saves the project specific debugger settings.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Uložit nastavení debugeru&lt;/b&gt;&lt;p&gt;Uloží nastavení debugeru definovaná v projektu..&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4062"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4062"/>
         <source>&amp;Delete</source>
         <translation>Sma&amp;zat</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4059"/>
+        <location filename="../Project/Project.py" line="4066"/>
         <source>Delete the debugger properties</source>
         <translation>Smazat nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4060"/>
+        <location filename="../Project/Project.py" line="4067"/>
         <source>&lt;b&gt;Delete Debugger Properties&lt;/b&gt;&lt;p&gt;This deletes the file containing the project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Smazat nastavení debugeru&lt;/b&gt;&lt;p&gt;Smaže se soubor obsahující nastavení debugeru v daném projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4068"/>
+        <location filename="../Project/Project.py" line="4075"/>
         <source>Reset</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4068"/>
+        <location filename="../Project/Project.py" line="4075"/>
         <source>&amp;Reset</source>
         <translation>&amp;Reset</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4072"/>
+        <location filename="../Project/Project.py" line="4079"/>
         <source>Reset the debugger properties</source>
         <translation>Reset nastavení debugeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4073"/>
+        <location filename="../Project/Project.py" line="4080"/>
         <source>&lt;b&gt;Reset Debugger Properties&lt;/b&gt;&lt;p&gt;This resets the project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Reset nastavení debugeru&lt;/b&gt;&lt;p&gt;Zresetuje nastavení debugeru v projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4082"/>
+        <location filename="../Project/Project.py" line="4089"/>
         <source>Load session</source>
         <translation>Načíst relaci</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4086"/>
+        <location filename="../Project/Project.py" line="4093"/>
         <source>Load the projects session file.</source>
         <translation>Načíst soubor s relací projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4087"/>
+        <location filename="../Project/Project.py" line="4094"/>
         <source>&lt;b&gt;Load session&lt;/b&gt;&lt;p&gt;This loads the projects session file. The session consists of the following data.&lt;br&gt;- all open source files&lt;br&gt;- all breakpoint&lt;br&gt;- the commandline arguments&lt;br&gt;- the working directory&lt;br&gt;- the exception reporting flag&lt;/p&gt;</source>
         <translation>&lt;b&gt;Načíst relaci&lt;/b&gt;&lt;p&gt;Načte soubor s relací projektu. Relace obsahuje následující údaje:&lt;br&gt;- všechny otevřené zdrojové soubory&lt;br&gt;- všechny breakpointy&lt;br&gt;- argumenty příkazové řádky &lt;br&gt;- pracovní adresář&lt;br&gt;- příznak výjimky&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4100"/>
+        <location filename="../Project/Project.py" line="4107"/>
         <source>Save session</source>
         <translation>Uložit relaci</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4104"/>
+        <location filename="../Project/Project.py" line="4111"/>
         <source>Save the projects session file.</source>
         <translation>Uložit soubor s relací projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4105"/>
+        <location filename="../Project/Project.py" line="4112"/>
         <source>&lt;b&gt;Save session&lt;/b&gt;&lt;p&gt;This saves the projects session file. The session consists of the following data.&lt;br&gt;- all open source files&lt;br&gt;- all breakpoint&lt;br&gt;- the commandline arguments&lt;br&gt;- the working directory&lt;br&gt;- the exception reporting flag&lt;/p&gt;</source>
         <translation>&lt;b&gt;Uložit relaci&lt;/b&gt;&lt;p&gt;Uloží soubor s relací projektu. Relace obsahuje následující údaje:&lt;br&gt;- všechny otevřené zdrojové soubory&lt;br&gt;- všechny breakpointy&lt;br&gt;- argumenty příkazové řádky &lt;br&gt;- pracovní adresář&lt;br&gt;- příznak výjimky&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4118"/>
+        <location filename="../Project/Project.py" line="4125"/>
         <source>Delete session</source>
         <translation>Smazat relaci</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4122"/>
+        <location filename="../Project/Project.py" line="4129"/>
         <source>Delete the projects session file.</source>
         <translation>Smaže soubor s relací projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4123"/>
+        <location filename="../Project/Project.py" line="4130"/>
         <source>&lt;b&gt;Delete session&lt;/b&gt;&lt;p&gt;This deletes the projects session file&lt;/p&gt;</source>
         <translation>&lt;b&gt;Smazat relaci&lt;/b&gt;&lt;p&gt;Smaže soubor s relací projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4132"/>
+        <location filename="../Project/Project.py" line="4139"/>
         <source>Code Metrics</source>
         <translation>Metriky kódu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4132"/>
+        <location filename="../Project/Project.py" line="4139"/>
         <source>&amp;Code Metrics...</source>
         <translation>Metriky &amp;kódu...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4136"/>
+        <location filename="../Project/Project.py" line="4143"/>
         <source>Show some code metrics for the project.</source>
         <translation>Zobrazit metriky kódu projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4138"/>
+        <location filename="../Project/Project.py" line="4145"/>
         <source>&lt;b&gt;Code Metrics...&lt;/b&gt;&lt;p&gt;This shows some code metrics for all Python files in the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Metriky kódu...&lt;/b&gt;&lt;p&gt;Zobrazí se metriky kódu všech python souborů v projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4146"/>
+        <location filename="../Project/Project.py" line="4153"/>
         <source>Python Code Coverage</source>
         <translation>Pokrytí python kódu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4146"/>
+        <location filename="../Project/Project.py" line="4153"/>
         <source>Code Co&amp;verage...</source>
         <translation>Pokr&amp;ytí kódu...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4150"/>
+        <location filename="../Project/Project.py" line="4157"/>
         <source>Show code coverage information for the project.</source>
         <translation>Zobrazit informace pokrytí kódu projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4152"/>
+        <location filename="../Project/Project.py" line="4159"/>
         <source>&lt;b&gt;Code Coverage...&lt;/b&gt;&lt;p&gt;This shows the code coverage information for all Python files in the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Pokrytí kódu...&lt;/b&gt;&lt;p&gt;Zobrazí informace o pokrytí kódu ve všech python souborech projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5036"/>
+        <location filename="../Project/Project.py" line="5043"/>
         <source>Profile Data</source>
         <translation>Profilovat data</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4160"/>
+        <location filename="../Project/Project.py" line="4167"/>
         <source>&amp;Profile Data...</source>
         <translation>&amp;Profilovat data...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4164"/>
+        <location filename="../Project/Project.py" line="4171"/>
         <source>Show profiling data for the project.</source>
         <translation>Zobrazit profilování dat projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4166"/>
+        <location filename="../Project/Project.py" line="4173"/>
         <source>&lt;b&gt;Profile Data...&lt;/b&gt;&lt;p&gt;This shows the profiling data for the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Profilovat data&lt;/b&gt;&lt;p&gt;Zobrazí se profilování dat projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5090"/>
+        <location filename="../Project/Project.py" line="5097"/>
         <source>Application Diagram</source>
         <translation>Diagram aplikace</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4175"/>
+        <location filename="../Project/Project.py" line="4182"/>
         <source>&amp;Application Diagram...</source>
         <translation>Diagram &amp;aplikace...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4179"/>
+        <location filename="../Project/Project.py" line="4186"/>
         <source>Show a diagram of the project.</source>
         <translation>Zobrazit diagram projektu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4181"/>
+        <location filename="../Project/Project.py" line="4188"/>
         <source>&lt;b&gt;Application Diagram...&lt;/b&gt;&lt;p&gt;This shows a diagram of the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Diagram aplikace...&lt;/b&gt;&lt;p&gt;Zobrazí diagram projektu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4306"/>
+        <location filename="../Project/Project.py" line="4313"/>
         <source>&amp;Project</source>
         <translation>&amp;Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4307"/>
+        <location filename="../Project/Project.py" line="4314"/>
         <source>Open &amp;Recent Projects</source>
         <translation>Otevřít poslední p&amp;rojekty</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4312"/>
+        <location filename="../Project/Project.py" line="4319"/>
         <source>&amp;Version Control</source>
         <translation>Kontrola &amp;verzí</translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="4323"/>
+        <source>Chec&amp;k</source>
+        <translation>Zkontro&amp;lovat</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4325"/>
+        <source>Sho&amp;w</source>
+        <translation>Zo&amp;brazit</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4326"/>
+        <source>&amp;Diagrams</source>
+        <translation>&amp;Diagramy</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4315"/>
+        <source>Session</source>
+        <translation>Relace</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4328"/>
+        <source>Source &amp;Documentation</source>
+        <translation>Zd&amp;rojová dokumentace</translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="4316"/>
-        <source>Chec&amp;k</source>
-        <translation>Zkontro&amp;lovat</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4318"/>
-        <source>Sho&amp;w</source>
-        <translation>Zo&amp;brazit</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4319"/>
-        <source>&amp;Diagrams</source>
-        <translation>&amp;Diagramy</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4308"/>
-        <source>Session</source>
-        <translation>Relace</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4321"/>
-        <source>Source &amp;Documentation</source>
-        <translation>Zd&amp;rojová dokumentace</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4309"/>
         <source>Debugger</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4320"/>
+        <location filename="../Project/Project.py" line="4327"/>
         <source>Pac&amp;kagers</source>
         <translation>Balíč&amp;ky</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4446"/>
+        <location filename="../Project/Project.py" line="4453"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4512"/>
+        <location filename="../Project/Project.py" line="4519"/>
         <source>&amp;Clear</source>
         <translation>&amp;Vyčistit</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4685"/>
+        <location filename="../Project/Project.py" line="4692"/>
         <source>Search New Files</source>
         <translation>Hledat nové soubory</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4685"/>
+        <location filename="../Project/Project.py" line="4692"/>
         <source>There were no new files found to be added.</source>
         <translation>Nebyly nalezeny žádné soubory, které je možné přidat.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4833"/>
+        <location filename="../Project/Project.py" line="4840"/>
         <source>Version Control System</source>
         <translation>Version Control System</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4963"/>
+        <location filename="../Project/Project.py" line="4970"/>
         <source>Coverage Data</source>
         <translation>Datové pokrytí</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5013"/>
+        <location filename="../Project/Project.py" line="5020"/>
         <source>There is no main script defined for the current project. Aborting</source>
         <translation>V aktuálním projektu nebyl určen hlavní skript. Zrušeno</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4986"/>
+        <location filename="../Project/Project.py" line="4993"/>
         <source>Code Coverage</source>
         <translation>Pokrytí kódu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4986"/>
+        <location filename="../Project/Project.py" line="4993"/>
         <source>Please select a coverage file</source>
         <translation>Prosím, vyberte soubor pokrytí</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5036"/>
+        <location filename="../Project/Project.py" line="5043"/>
         <source>Please select a profile file</source>
         <translation>Prosím, vyberte soubor s profilem</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5090"/>
+        <location filename="../Project/Project.py" line="5097"/>
         <source>Include module names?</source>
         <translation>Včetně jmen modulů?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5285"/>
+        <location filename="../Project/Project.py" line="5292"/>
         <source>Create Package List</source>
         <translation>Vytvořit seznam balíčků</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4204"/>
+        <location filename="../Project/Project.py" line="4211"/>
         <source>Create &amp;Package List</source>
         <translation type="unfinished">Vytvořit Plugin &amp;archiv</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5558"/>
+        <location filename="../Project/Project.py" line="5565"/>
         <source>Create Plugin Archive</source>
         <translation>Vytvořit Plugin archiv</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5234"/>
+        <location filename="../Project/Project.py" line="5241"/>
         <source>&lt;p&gt;The file &lt;b&gt;PKGLIST&lt;/b&gt; already exists.&lt;/p&gt;&lt;p&gt;Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;PKGLIST&lt;/b&gt; již existuje.&lt;/p&gt;&lt;p&gt;Přepsat jej?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5304"/>
+        <location filename="../Project/Project.py" line="5311"/>
         <source>The project does not have a main script defined. Aborting...</source>
         <translation>Projekt nemá definován hlavní skript. Zrušeno...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1690"/>
+        <location filename="../Project/Project.py" line="1697"/>
         <source>&lt;p&gt;The source directory doesn&apos;t contain any files belonging to the selected category.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Zdrojový adresář neobsahuje žádné soubory související s danou kategorií.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2943"/>
+        <location filename="../Project/Project.py" line="2950"/>
         <source>Select Version Control System</source>
         <translation>Vybrat Version Control System</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2564"/>
+        <location filename="../Project/Project.py" line="2571"/>
         <source>None</source>
         <translation>None</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="367"/>
+        <location filename="../Project/Project.py" line="370"/>
         <source>Registering Project Type</source>
         <translation>Zaregistrovat typ projektu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4220"/>
+        <location filename="../Project/Project.py" line="4227"/>
         <source>Create Plugin &amp;Archives</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1369"/>
+        <location filename="../Project/Project.py" line="1375"/>
         <source>You have to specify a translation pattern first.</source>
         <translation>Nejdříve musíte specifikovat vzor překladu.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2666"/>
+        <location filename="../Project/Project.py" line="2673"/>
         <source>Translation Pattern</source>
         <translation>Vzor překladu</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2666"/>
+        <location filename="../Project/Project.py" line="2673"/>
         <source>Enter the path pattern for translation files (use &apos;%language%&apos; in place of the language code):</source>
         <translation>Zadejte vzor cesty pro soubory s překlady (použijte  &apos;%language%&apos; na místě s kódem jazyka):</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4000"/>
+        <location filename="../Project/Project.py" line="4007"/>
         <source>Lexer Associations</source>
         <translation>Spojení lexeru</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4000"/>
+        <location filename="../Project/Project.py" line="4007"/>
         <source>Lexer Associations...</source>
         <translation>Spojení lexeru...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4004"/>
+        <location filename="../Project/Project.py" line="4011"/>
         <source>Show the project lexer associations (overriding defaults)</source>
         <translation>Zobrazit spojení lexeru projektu (přepíše výchozí)</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4006"/>
+        <location filename="../Project/Project.py" line="4013"/>
         <source>&lt;b&gt;Lexer Associations...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the lexer associations of the project. These associations override the global lexer associations. Lexers are used to highlight the editor text.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Spojení lexeru...&lt;/b&gt;&lt;p&gt;Zobrazuje dialog s editací spojení lexeru projektu. Tato spojení přepisují globální lexer spojení. Lexer je použit pro zvýraznění textu v editoru.&lt;/p&gt;</translation>
     </message>
@@ -54589,152 +54599,152 @@
         <translation>Python3 soubory (*.py *.py3);;Python3 GUI soubory (*.pyw *.pyw3);;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="781"/>
+        <location filename="../Project/Project.py" line="787"/>
         <source>&lt;p&gt;The project file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor projektu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="884"/>
+        <location filename="../Project/Project.py" line="890"/>
         <source>&lt;p&gt;The project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do souboru projektu &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="920"/>
+        <location filename="../Project/Project.py" line="926"/>
         <source>&lt;p&gt;The user specific project properties file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Uživatelská nastavení projektu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="944"/>
+        <location filename="../Project/Project.py" line="950"/>
         <source>&lt;p&gt;The user specific project properties file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do souboru s uživatelskými nastaveními  &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1002"/>
+        <location filename="../Project/Project.py" line="1008"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor s relací projektu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1038"/>
+        <location filename="../Project/Project.py" line="1044"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do souboru s relací projektu &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1067"/>
+        <location filename="../Project/Project.py" line="1073"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor s relací projektu &lt;b&gt;{0}&lt;/b&gt; nelze smazat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1101"/>
+        <location filename="../Project/Project.py" line="1107"/>
         <source>&lt;p&gt;The tasks file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor s úlohami &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1121"/>
+        <location filename="../Project/Project.py" line="1127"/>
         <source>&lt;p&gt;The tasks file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do souboru s úlohami &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1180"/>
+        <location filename="../Project/Project.py" line="1186"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor s nastaveními debuggeru &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1215"/>
+        <location filename="../Project/Project.py" line="1221"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do souboru s nastaveními debuggeru &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1241"/>
+        <location filename="../Project/Project.py" line="1247"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor s nastaveními debuggeru &lt;b&gt;{0}&lt;/b&gt; nelze smazat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1723"/>
+        <location filename="../Project/Project.py" line="1730"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;&lt;p&gt;Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; již existuje.&lt;/p&gt;&lt;p&gt;Má se přepsat?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3102"/>
+        <location filename="../Project/Project.py" line="3109"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; již existuje.&lt;/p&gt;&lt;p&gt;Má se přepsat?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1963"/>
+        <location filename="../Project/Project.py" line="1970"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be renamed.&lt;br /&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; nemůže být přejmenován.&lt;br /&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2338"/>
+        <location filename="../Project/Project.py" line="2345"/>
         <source>&lt;p&gt;The project directory &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Adresář projektu &lt;b&gt;{0}&lt;/b&gt; nelze vytvořit.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4833"/>
+        <location filename="../Project/Project.py" line="4840"/>
         <source>&lt;p&gt;The selected VCS &lt;b&gt;{0}&lt;/b&gt; could not be found.&lt;br/&gt;Disabling version control.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Vybrané VCS &lt;b&gt;{0}&lt;/b&gt; nebylo nalezeno.&lt;br/&gt;Kontrola verzí vypnuta.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5285"/>
+        <location filename="../Project/Project.py" line="5292"/>
         <source>&lt;p&gt;The file &lt;b&gt;PKGLIST&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;PKGLIST&lt;/b&gt; nelze vytvořit.&lt;/p&gt;&lt;p&gt;Důvod: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5444"/>
+        <location filename="../Project/Project.py" line="5451"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be stored in the archive. Ignoring it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; nelze uložit do archivu. Ingorováno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5517"/>
+        <location filename="../Project/Project.py" line="5524"/>
         <source>&lt;p&gt;The plugin file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Plugin soubor &lt;b&gt;{0}&lt;/b&gt; nelze přečíst.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1646"/>
+        <location filename="../Project/Project.py" line="1653"/>
         <source>&lt;p&gt;The selected file &lt;b&gt;{0}&lt;/b&gt; could not be added to &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Reason: {2}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Vybraný soubor &lt;b&gt;{0}&lt;/b&gt; nelze přidat do &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Důvod: {2}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1705"/>
+        <location filename="../Project/Project.py" line="1712"/>
         <source>&lt;p&gt;The target directory &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Cílový adresář &lt;b&gt;{0}&lt;/b&gt; nelze vytvořit.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2424"/>
+        <location filename="../Project/Project.py" line="2431"/>
         <source>Create main script</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2424"/>
+        <location filename="../Project/Project.py" line="2431"/>
         <source>&lt;p&gt;The mainscript &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4189"/>
+        <location filename="../Project/Project.py" line="4196"/>
         <source>Load Diagram</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4189"/>
+        <location filename="../Project/Project.py" line="4196"/>
         <source>&amp;Load Diagram...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4193"/>
+        <location filename="../Project/Project.py" line="4200"/>
         <source>Load a diagram from file.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4195"/>
+        <location filename="../Project/Project.py" line="4202"/>
         <source>&lt;b&gt;Load Diagram...&lt;/b&gt;&lt;p&gt;This loads a diagram from file.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="367"/>
+        <location filename="../Project/Project.py" line="370"/>
         <source>&lt;p&gt;The Project type &lt;b&gt;{0}&lt;/b&gt; is already registered.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="355"/>
+        <location filename="../Project/Project.py" line="358"/>
         <source>&lt;p&gt;The Project type &lt;b&gt;{0}&lt;/b&gt; is already registered with Programming Language &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -54749,276 +54759,286 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4821"/>
+        <location filename="../Project/Project.py" line="4828"/>
         <source>&lt;p&gt;The selected VCS &lt;b&gt;{0}&lt;/b&gt; could not be found. &lt;br/&gt;Reverting override.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5558"/>
+        <location filename="../Project/Project.py" line="5565"/>
         <source>&lt;p&gt;The plugin file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt; &lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4209"/>
+        <location filename="../Project/Project.py" line="4216"/>
         <source>Create an initial PKGLIST file for an eric6 plugin.</source>
         <translation type="unfinished">Vytvořit soubor eric5 plugin archivu. {6 ?}</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4211"/>
+        <location filename="../Project/Project.py" line="4218"/>
         <source>&lt;b&gt;Create Package List&lt;/b&gt;&lt;p&gt;This creates an initial list of files to include in an eric6 plugin archive. The list is created from the project file.&lt;/p&gt;</source>
         <translation type="unfinished">&lt;b&gt;Vytvořit Plugin archiv&lt;/b&gt;&lt;p&gt;Vytvoří soubor s eric5 plugin archivem za použití seznamu souborů daných v PKGLIST souboru. Jméno archivu je odvozeno ze jména hlavního skriptu.&lt;/p&gt; {6 ?}</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4225"/>
+        <location filename="../Project/Project.py" line="4232"/>
         <source>Create eric6 plugin archive files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4227"/>
+        <location filename="../Project/Project.py" line="4234"/>
         <source>&lt;b&gt;Create Plugin Archives&lt;/b&gt;&lt;p&gt;This creates eric6 plugin archive files using the list of files given in a PKGLIST* file. The archive name is built from the main script name if not designated in the package list file.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5408"/>
+        <location filename="../Project/Project.py" line="5415"/>
         <source>&lt;p&gt;The eric6 plugin archive file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished">&lt;p&gt;Soubor s eric5 plugin archivem &lt;b&gt;{0}&lt;/b&gt; nelze vytvořit. Zrušeno...&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt; {6 ?} {0}?} {1}?}</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="268"/>
+        <location filename="../Project/Project.py" line="270"/>
         <source>Eric6 Plugin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2913"/>
+        <location filename="../Project/Project.py" line="2920"/>
         <source>Create project management directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2913"/>
+        <location filename="../Project/Project.py" line="2920"/>
         <source>&lt;p&gt;The project directory &lt;b&gt;{0}&lt;/b&gt; is not writable.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Alt+Ctrl+P</source>
         <comment>Project|Search Project File</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3945"/>
+        <location filename="../Project/Project.py" line="3952"/>
         <source>Search for a file in the project list of files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3947"/>
+        <location filename="../Project/Project.py" line="3954"/>
         <source>&lt;b&gt;Search Project File&lt;/b&gt;&lt;p&gt;This searches for a file in the project list of files.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Search Project File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Search Project File...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5340"/>
+        <location filename="../Project/Project.py" line="5347"/>
         <source>Create Plugin Archives</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4237"/>
-        <source>Create Plugin Archives (Snapshot)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4237"/>
-        <source>Create Plugin Archives (&amp;Snapshot)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4242"/>
-        <source>Create eric6 plugin archive files (snapshot releases).</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4244"/>
+        <source>Create Plugin Archives (Snapshot)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4244"/>
+        <source>Create Plugin Archives (&amp;Snapshot)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4249"/>
+        <source>Create eric6 plugin archive files (snapshot releases).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4251"/>
         <source>&lt;b&gt;Create Plugin Archives (Snapshot)&lt;/b&gt;&lt;p&gt;This creates eric6 plugin archive files using the list of files given in the PKGLIST* file. The archive name is built from the main script name if not designated in the package list file. The version entry of the main script is modified to reflect a snapshot release.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5318"/>
+        <location filename="../Project/Project.py" line="5325"/>
         <source>Select package lists:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5336"/>
+        <location filename="../Project/Project.py" line="5343"/>
         <source>Creating plugin archives...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="5343"/>
+        <source>Abort</source>
+        <translation type="unfinished">Přerušit</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5343"/>
+        <source>%v/%m Archives</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5359"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5470"/>
+        <source>&lt;p&gt;The eric6 plugin archive files were created with some errors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5473"/>
+        <source>&lt;p&gt;The eric6 plugin archive files were created successfully.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="5336"/>
-        <source>Abort</source>
-        <translation type="unfinished">Přerušit</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5336"/>
-        <source>%v/%m Archives</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5352"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5463"/>
-        <source>&lt;p&gt;The eric6 plugin archive files were created with some errors.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5466"/>
-        <source>&lt;p&gt;The eric6 plugin archive files were created successfully.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5329"/>
         <source>&lt;p&gt;No package list files (PKGLIST*) available or selected. Aborting...&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5380"/>
+        <location filename="../Project/Project.py" line="5387"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; is not ready yet.&lt;/p&gt;&lt;p&gt;Please rework it and delete the&apos;; initial_list&apos; line of the header.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3930"/>
+        <location filename="../Project/Project.py" line="3937"/>
         <source>&lt;b&gt;Search new files...&lt;/b&gt;&lt;p&gt;This searches for new files (sources, *.ui, *.idl, *.proto) in the project directory and registered subdirectories.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3988"/>
+        <location filename="../Project/Project.py" line="3995"/>
         <source>&lt;b&gt;Filetype Associations...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the file type associations of the project. These associations determine the type (source, form, interface, protocol or others) with a filename pattern. They are used when adding a file to the project and when performing a search for new files.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1494"/>
+        <location filename="../Project/Project.py" line="1501"/>
         <source>&lt;p&gt;The selected translation file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2213"/>
+        <location filename="../Project/Project.py" line="2220"/>
         <source>&lt;p&gt;The selected file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2243"/>
+        <location filename="../Project/Project.py" line="2250"/>
         <source>&lt;p&gt;The selected directory &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2739"/>
+        <location filename="../Project/Project.py" line="2746"/>
         <source>Create Makefile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2739"/>
+        <location filename="../Project/Project.py" line="2746"/>
         <source>&lt;p&gt;The makefile &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5744"/>
+        <location filename="../Project/Project.py" line="5751"/>
         <source>Execute Make</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4258"/>
+        <location filename="../Project/Project.py" line="4265"/>
         <source>&amp;Execute Make</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4262"/>
+        <location filename="../Project/Project.py" line="4269"/>
         <source>Perform a &apos;make&apos; run.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4264"/>
+        <location filename="../Project/Project.py" line="4271"/>
         <source>&lt;b&gt;Execute Make&lt;/b&gt;&lt;p&gt;This performs a &apos;make&apos; run to rebuild the configured target.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="5731"/>
+        <source>Test for Changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4279"/>
+        <source>&amp;Test for Changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4283"/>
+        <source>Question &apos;make&apos;, if a rebuild is needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4285"/>
+        <source>&lt;b&gt;Test for Changes&lt;/b&gt;&lt;p&gt;This questions &apos;make&apos;, if a rebuild of the configured target is necessary.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4330"/>
+        <source>Make</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5679"/>
+        <source>The make process did not start.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="5724"/>
-        <source>Test for Changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4272"/>
-        <source>&amp;Test for Changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4276"/>
-        <source>Question &apos;make&apos;, if a rebuild is needed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4278"/>
-        <source>&lt;b&gt;Test for Changes&lt;/b&gt;&lt;p&gt;This questions &apos;make&apos;, if a rebuild of the configured target is necessary.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4323"/>
-        <source>Make</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5672"/>
-        <source>The make process did not start.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5717"/>
         <source>The make process crashed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5727"/>
+        <location filename="../Project/Project.py" line="5734"/>
         <source>&lt;p&gt;There are changes that require the configured make target &lt;b&gt;{0}&lt;/b&gt; to be rebuilt.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5732"/>
+        <location filename="../Project/Project.py" line="5739"/>
         <source>&lt;p&gt;There are changes that require the default make target to be rebuilt.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5744"/>
+        <location filename="../Project/Project.py" line="5751"/>
         <source>The makefile contains errors.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="281"/>
+        <location filename="../Project/Project.py" line="284"/>
         <source>PySide2 GUI</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="282"/>
+        <location filename="../Project/Project.py" line="285"/>
         <source>PySide2 Console</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4311"/>
+        <location filename="../Project/Project.py" line="4318"/>
         <source>Project-T&amp;ools</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="344"/>
+        <location filename="../Project/Project.py" line="347"/>
         <source>&lt;p&gt;The Programming Language &lt;b&gt;{0}&lt;/b&gt; is not supported (project type: {1}).&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Project/Project.py" line="268"/>
+        <source>PyQt6 GUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="269"/>
+        <source>PyQt6 Console</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProjectBaseBrowser</name>
@@ -55275,292 +55295,292 @@
 <context>
     <name>ProjectFormsBrowser</name>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="999"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="1012"/>
         <source>Forms</source>
         <translation>Formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="69"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="70"/>
         <source>&lt;b&gt;Project Forms Browser&lt;/b&gt;&lt;p&gt;This allows to easily see all forms contained in the current project. Several actions can be executed via the context menu.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Prohlížeč formulářů projektu&lt;/b&gt;&lt;p&gt;Umožňuje jednoduše vidět všechny formuláře aktuálního projektu. Několik akcí lze provést i přes kontextové menu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="88"/>
-        <source>Dialog</source>
-        <translation>Dialog</translation>
-    </message>
-    <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="89"/>
-        <source>Widget</source>
-        <translation>Widget</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="93"/>
-        <source>Dialog with Buttons (Bottom)</source>
-        <translation>Dialog s tlačítky (dole)</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="95"/>
-        <source>Dialog with Buttons (Right)</source>
-        <translation>Dialog s tlačítky (vpravo)</translation>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="90"/>
-        <source>Main Window</source>
-        <translation>Hlavní okno aplikace</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="91"/>
-        <source>Dialog with Buttonbox (Bottom)</source>
-        <translation>Dialog s boxem s tlačítky (dole)</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="92"/>
-        <source>Dialog with Buttonbox (Right)</source>
-        <translation>Dialog s boxem s tlačítky (vpravo)</translation>
+        <source>Widget</source>
+        <translation>Widget</translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="94"/>
+        <source>Dialog with Buttons (Bottom)</source>
+        <translation>Dialog s tlačítky (dole)</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="96"/>
+        <source>Dialog with Buttons (Right)</source>
+        <translation>Dialog s tlačítky (vpravo)</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="91"/>
+        <source>Main Window</source>
+        <translation>Hlavní okno aplikace</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="92"/>
+        <source>Dialog with Buttonbox (Bottom)</source>
+        <translation>Dialog s boxem s tlačítky (dole)</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="93"/>
+        <source>Dialog with Buttonbox (Right)</source>
+        <translation>Dialog s boxem s tlačítky (vpravo)</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="95"/>
         <source>Dialog with Buttons (Bottom-Center)</source>
         <translation>Dialog s tlačítky (dole uprostřed)</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="151"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="154"/>
         <source>Compile form</source>
         <translation>Kompilovat formulář</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="345"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="346"/>
         <source>Compile all forms</source>
         <translation>Kompilovat všechny formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="251"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="252"/>
         <source>Open in Qt-Designer</source>
         <translation>Otevřít v Qt-Designeru</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="253"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="254"/>
         <source>Open in Editor</source>
         <translation>Otevřít v editoru</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="146"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="149"/>
         <source>Preview form</source>
         <translation>Náhled formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="256"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="257"/>
         <source>Preview translations</source>
         <translation>Náhled překladů</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="179"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="182"/>
         <source>Rename file</source>
         <translation>Přejmenovat soubor</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="304"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="305"/>
         <source>Remove from project</source>
         <translation>Odebrat z projektu</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="307"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="308"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="315"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="316"/>
         <source>New form...</source>
         <translation>Nový formulář...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="351"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="352"/>
         <source>Add forms...</source>
         <translation>Přidat formuláře...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="353"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="354"/>
         <source>Add forms directory...</source>
         <translation>Přidat adresář s formuláři...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="356"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="357"/>
         <source>Expand all directories</source>
         <translation>Rozložit všechny adresáře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="358"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="359"/>
         <source>Collapse all directories</source>
         <translation>Složit všechny adresáře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="260"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="261"/>
         <source>Compile forms</source>
         <translation>Kompilovat formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="624"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="627"/>
         <source>New Form</source>
         <translation>Nový formulář</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="579"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="582"/>
         <source>Select a form type:</source>
         <translation>Vybrat typ formuláře:</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="612"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="615"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>Soubor již existuje! Přepsat jej?</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="652"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="655"/>
         <source>Delete forms</source>
         <translation>Smazat formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="652"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="655"/>
         <source>Do you really want to delete these forms from the project?</source>
         <translation>Opravdu chcete odebrat tyto formuláře z projektu?</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="791"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="797"/>
         <source>Form Compilation</source>
         <translation>Kompilace formuláře</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="763"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="769"/>
         <source>The compilation of the form file was successful.</source>
         <translation>Kompilace souboru s formulářem byla úspěšná.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="791"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="797"/>
         <source>The compilation of the form file failed.</source>
         <translation>Kompilace souboru s formulářem selhala.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="864"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="877"/>
         <source>Process Generation Error</source>
         <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="956"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="969"/>
         <source>Compiling forms...</source>
         <translation>Kompilovat formuláře...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="995"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="1008"/>
         <source>Abort</source>
         <translation>Přerušit</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="995"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="1008"/>
         <source>Determining changed forms...</source>
         <translation>Určení změněných formulářů...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="1025"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="1038"/>
         <source>Compiling changed forms...</source>
         <translation>Kompilování změněných formulářů...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="162"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="165"/>
         <source>Generate Dialog Code...</source>
         <translation>Generovat kód Dialog...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="270"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="271"/>
         <source>Open</source>
         <translation>Otevřít</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="593"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="596"/>
         <source>Qt User-Interface Files (*.ui);;All Files (*)</source>
         <translation>Qt User-Interface soubory (*.ui);;Všechny soubory (*)</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="361"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="362"/>
         <source>Configure...</source>
         <translation>Konfigurovat...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="324"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="325"/>
         <source>Copy Path to Clipboard</source>
         <translation>Kopírovat cestu do schránky</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="624"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="627"/>
         <source>&lt;p&gt;The new form file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br&gt;Problem: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nový soubor s formulářem &lt;b&gt;{0}&lt;/b&gt; se nepodařilo vytvořit..&lt;br&gt;Problém: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="778"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="784"/>
         <source>&lt;p&gt;The compilation of the form file failed.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Kompilace formuláře se nepodařila.&lt;/p&gt;&lt;p&gt;Důvod: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="864"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="877"/>
         <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
         <translation>Nelze spustit {0}.&lt;br&gt;Ověřte, že je umístěn v požadované cestě.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="97"/>
-        <source>QWizard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="98"/>
-        <source>QWizardPage</source>
+        <source>QWizard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="99"/>
-        <source>QDockWidget</source>
+        <source>QWizardPage</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="100"/>
-        <source>QFrame</source>
+        <source>QDockWidget</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="101"/>
-        <source>QGroupBox</source>
+        <source>QFrame</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="102"/>
-        <source>QScrollArea</source>
+        <source>QGroupBox</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="103"/>
-        <source>QMdiArea</source>
+        <source>QScrollArea</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="104"/>
-        <source>QTabWidget</source>
+        <source>QMdiArea</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="105"/>
-        <source>QToolBox</source>
+        <source>QTabWidget</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Project/ProjectFormsBrowser.py" line="106"/>
+        <source>QToolBox</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectFormsBrowser.py" line="107"/>
         <source>QStackedWidget</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="995"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="1008"/>
         <source>%v/%m Forms</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/ProjectFormsBrowser.py" line="339"/>
+        <location filename="../Project/ProjectFormsBrowser.py" line="340"/>
         <source>Configure uic Compiler</source>
         <translation type="unfinished"></translation>
     </message>
@@ -56586,187 +56606,187 @@
         <translation>&lt;b&gt;Prohlížeč jazykových překladů projektu&lt;/b&gt;&lt;p&gt;Umožňuje jednoduše vidět všechny překlady aktuálního projektu. Několik akcí lze provést i přes kontextové menu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="154"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="155"/>
         <source>Generate translation</source>
         <translation>Generovat překlad</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="162"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="163"/>
         <source>Generate translation (with obsolete)</source>
         <translation>Generovat překlad (původní)</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="404"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="408"/>
         <source>Generate all translations</source>
         <translation>Generovat všechny překlady</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="411"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="415"/>
         <source>Generate all translations (with obsolete)</source>
         <translation>Generovat všechny překlady (původní)</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="305"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="308"/>
         <source>Open in Qt-Linguist</source>
         <translation>Otevřít v  Qt-Linguist</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="352"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="355"/>
         <source>Open in Editor</source>
         <translation>Otevřít v editoru</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="196"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="197"/>
         <source>Release translation</source>
         <translation>Zveřejnit překlad</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="419"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="423"/>
         <source>Release all translations</source>
         <translation>Zveřejnit všechny překlady</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="138"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="139"/>
         <source>Preview translation</source>
         <translation>Náhled překladu</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="391"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="395"/>
         <source>Preview all translations</source>
         <translation>Náhled všech překladů</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="365"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="368"/>
         <source>Remove from project</source>
         <translation>Odebrat z projektu</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="426"/>
-        <source>Delete</source>
-        <translation>Smazat</translation>
-    </message>
-    <message>
         <location filename="../Project/ProjectTranslationsBrowser.py" line="430"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="434"/>
         <source>Add translation...</source>
         <translation>Přidat překlad...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="432"/>
-        <source>Add translation files...</source>
-        <translation>Přidat soubory s překladem...</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="330"/>
-        <source>Generate translations</source>
-        <translation>Generovat překlady</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="338"/>
-        <source>Generate translations (with obsolete)</source>
-        <translation>Generovat překlady (původní)</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="357"/>
-        <source>Release translations</source>
-        <translation>Zveřejnit překlady</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="317"/>
-        <source>Preview translations</source>
-        <translation>Náhled překladů</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="677"/>
-        <source>Delete translation files</source>
-        <translation>Smazat soubory s překlady</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="677"/>
-        <source>Do you really want to delete these translation files from the project?</source>
-        <translation>Opravdu chcete odebrat tyto soubory s překlady z projektu?</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1207"/>
-        <source>Write temporary project file</source>
-        <translation>Zapsat dočasný soubor projektu</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1207"/>
-        <source>No translation files (*.ts) selected.</source>
-        <translation>Nebyly vybrány žádné soubory s překlady (*.ts).</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
-        <source>Translation file generation</source>
-        <translation>Generování souboru s překladem</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="938"/>
-        <source>The generation of the translation files (*.ts) was successful.</source>
-        <translation>Generování souboru s překladem (*.ts) bylo úspěšné.</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1235"/>
-        <source>Process Generation Error</source>
-        <translation>Chyba v procesu generování</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1145"/>
-        <source>Translation file release</source>
-        <translation>Zveřejnění souboru s překladem</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1129"/>
-        <source>The release of the translation files (*.qm) was successful.</source>
-        <translation>Zveřejnění souboru s překladem (*.qm) bylo úspěšné.</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1145"/>
-        <source>The release of the translation files (*.qm) has failed.</source>
-        <translation>Zveřejnění souboru s překladem (*.qm) selhalo.</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="439"/>
-        <source>Configure...</source>
-        <translation>Konfigurovat...</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="396"/>
-        <source>Extract messages</source>
-        <translation>Extrahovat zprávy</translation>
-    </message>
-    <message>
         <location filename="../Project/ProjectTranslationsBrowser.py" line="436"/>
-        <source>Copy Path to Clipboard</source>
-        <translation>Kopírovat cestu do schránky</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="822"/>
-        <source>&lt;p&gt;The temporary project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Do dočasného souboru projektu &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1057"/>
-        <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
-        <translation>Nelze spustit {0}.&lt;br&gt;Ověřte, že je umístěn v požadované cestě.</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1235"/>
-        <source>&lt;p&gt;Could not start lrelease.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Nemohu spustit zveřejnění.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="347"/>
-        <source>Open</source>
-        <translation type="unfinished">Otevřít</translation>
+        <source>Add translation files...</source>
+        <translation>Přidat soubory s překladem...</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="333"/>
+        <source>Generate translations</source>
+        <translation>Generovat překlady</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="341"/>
+        <source>Generate translations (with obsolete)</source>
+        <translation>Generovat překlady (původní)</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="360"/>
+        <source>Release translations</source>
+        <translation>Zveřejnit překlady</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="320"/>
+        <source>Preview translations</source>
+        <translation>Náhled překladů</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="685"/>
+        <source>Delete translation files</source>
+        <translation>Smazat soubory s překlady</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="685"/>
+        <source>Do you really want to delete these translation files from the project?</source>
+        <translation>Opravdu chcete odebrat tyto soubory s překlady z projektu?</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1274"/>
+        <source>Write temporary project file</source>
+        <translation>Zapsat dočasný soubor projektu</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1274"/>
+        <source>No translation files (*.ts) selected.</source>
+        <translation>Nebyly vybrány žádné soubory s překlady (*.ts).</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="957"/>
+        <source>Translation file generation</source>
+        <translation>Generování souboru s překladem</translation>
     </message>
     <message>
         <location filename="../Project/ProjectTranslationsBrowser.py" line="946"/>
+        <source>The generation of the translation files (*.ts) was successful.</source>
+        <translation>Generování souboru s překladem (*.ts) bylo úspěšné.</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1302"/>
+        <source>Process Generation Error</source>
+        <translation>Chyba v procesu generování</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1211"/>
+        <source>Translation file release</source>
+        <translation>Zveřejnění souboru s překladem</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1195"/>
+        <source>The release of the translation files (*.qm) was successful.</source>
+        <translation>Zveřejnění souboru s překladem (*.qm) bylo úspěšné.</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1211"/>
+        <source>The release of the translation files (*.qm) has failed.</source>
+        <translation>Zveřejnění souboru s překladem (*.qm) selhalo.</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="443"/>
+        <source>Configure...</source>
+        <translation>Konfigurovat...</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="400"/>
+        <source>Extract messages</source>
+        <translation>Extrahovat zprávy</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="440"/>
+        <source>Copy Path to Clipboard</source>
+        <translation>Kopírovat cestu do schránky</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="830"/>
+        <source>&lt;p&gt;The temporary project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Do dočasného souboru projektu &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1123"/>
+        <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
+        <translation>Nelze spustit {0}.&lt;br&gt;Ověřte, že je umístěn v požadované cestě.</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1302"/>
+        <source>&lt;p&gt;Could not start lrelease.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Nemohu spustit zveřejnění.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="350"/>
+        <source>Open</source>
+        <translation type="unfinished">Otevřít</translation>
+    </message>
+    <message>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="954"/>
         <source> The process has crashed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="957"/>
         <source>The generation of the translation files (*.ts) has failed.{0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -61862,22 +61882,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="219"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="436"/>
         <source>Indent Width:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="417"/>
         <source>Select the indent width (default: 4)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="320"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="525"/>
         <source>Generate imports relative to &apos;.&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="289"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="494"/>
         <source>Tools Directory:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -61887,17 +61907,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="204"/>
-        <source>Enter the path of the PyQt tools directory, if they are not found.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.py" line="86"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.py" line="114"/>
         <source>Sample: {0}designer{1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="305"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="510"/>
         <source>Enter the path of the PySide2 tools directory, if they are not found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -61912,27 +61927,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="213"/>
-        <source>pyuic Options</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="265"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="407"/>
         <source>Select to generate extra code to test and display the form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="268"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="410"/>
         <source>Generate Extra Test Code</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="281"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="452"/>
         <source>PySide2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="314"/>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="519"/>
         <source>pyside2-uic Options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -61953,6 +61963,51 @@
 &lt;p&gt;Enter a postfix used to determine the Qt tool executable name. It is composed of the prefix, the tool name and the postfix. The executable extension is added automatically on Windows.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="186"/>
+        <source>PyQt 5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="460"/>
+        <source>Virtual Environment:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="473"/>
+        <source>Select the virtual environment to be used</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="480"/>
+        <source>Press to open the virtual environment manager dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="244"/>
+        <source>Enter the path of the PyQt 5 tools directory, if they are not found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="253"/>
+        <source>pyuic5 Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/>
+        <source>PyQt 6</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="379"/>
+        <source>Enter the path of the PyQt 6 tools directory, if they are not found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="388"/>
+        <source>pyuic6 Options</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Queues</name>
@@ -77287,17 +77342,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/UicCompilerOptionsDialog.ui" line="23"/>
+        <location filename="../Project/UicCompilerOptionsDialog.ui" line="39"/>
         <source>&apos;import&apos; Package</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/UicCompilerOptionsDialog.ui" line="29"/>
+        <location filename="../Project/UicCompilerOptionsDialog.ui" line="45"/>
         <source>Enter the package name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/UicCompilerOptionsDialog.ui" line="36"/>
+        <location filename="../Project/UicCompilerOptionsDialog.ui" line="52"/>
         <source>&lt;b&gt;Note&lt;/b&gt;: This generates statements like &apos;from PACKAGE import ...&apos;.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -77317,12 +77372,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/UicCompilerOptionsDialog.ui" line="49"/>
+        <location filename="../Project/UicCompilerOptionsDialog.ui" line="23"/>
         <source>Package Root</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/UicCompilerOptionsDialog.ui" line="55"/>
+        <location filename="../Project/UicCompilerOptionsDialog.ui" line="29"/>
         <source>Enter the project relative path of the packages root directory</source>
         <translation type="unfinished"></translation>
     </message>
Binary file eric6/i18n/eric6_de.qm has changed
--- a/eric6/i18n/eric6_de.ts	Mon Dec 21 13:36:24 2020 +0100
+++ b/eric6/i18n/eric6_de.ts	Tue Dec 22 19:59:29 2020 +0100
@@ -6499,57 +6499,57 @@
         <translation>&amp;Filtere mit:</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="557"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="574"/>
         <source>Code Generation</source>
         <translation>Codeerzeugung</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="427"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="444"/>
         <source>&lt;p&gt;Could not open the code template file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Codevorlagendatei „{0}“ konnte nicht geöffnet werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="464"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="481"/>
         <source>&lt;p&gt;Could not open the source file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Quelltextdatei „{0}“ konnte nicht geöffnet werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="557"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="574"/>
         <source>&lt;p&gt;Could not write the source file &quot;{0}&quot;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Quelltextdatei „{0}“ konnte nicht geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="212"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="225"/>
         <source>uic error</source>
         <translation>uic-Fehler</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="203"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="216"/>
         <source>&lt;p&gt;There was an error loading the form &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Es gab einen Fehler beim Laden des Formulars &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="133"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="135"/>
         <source>Create Dialog Code</source>
         <translation>Formularcode-Generator</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="133"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="135"/>
         <source>The file &lt;b&gt;{0}&lt;/b&gt; exists but does not contain any classes.</source>
         <translation>Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert, enthält jedoch keine Klassen.</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="212"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="225"/>
         <source>&lt;p&gt;The project specific Python interpreter &lt;b&gt;{0}&lt;/b&gt; could not be started or did not finish within 30 seconds.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Projekt spezifische Python Interpreter &lt;b&gt;{0}&lt;/b&gt; konnte nicht gestarted werden oder endete nicht innerhalb 30 Sekunden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="388"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="401"/>
         <source>&lt;p&gt;Code generation for project language &quot;{0}&quot; is not supported.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Codegenerierung für die Projektsprache &quot;{0}&quot; wird nicht unterstützt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/CreateDialogCodeDialog.py" line="416"/>
+        <location filename="../Project/CreateDialogCodeDialog.py" line="433"/>
         <source>&lt;p&gt;No code template file available for project type &quot;{0}&quot;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Es ist keine Code Vorlagedatei für den Projekttyp &quot;{0}&quot; verfügbar.&lt;/p&gt;</translation>
     </message>
@@ -6648,7 +6648,7 @@
 <context>
     <name>DebugUI</name>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1944"/>
+        <location filename="../Debugger/DebugUI.py" line="1942"/>
         <source>Run Script</source>
         <translation>Skript ausführen</translation>
     </message>
@@ -6663,7 +6663,7 @@
         <translation>Das aktuelle Skript ausführen</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1956"/>
+        <location filename="../Debugger/DebugUI.py" line="1954"/>
         <source>Run Project</source>
         <translation>Projekt ausführen</translation>
     </message>
@@ -6768,27 +6768,27 @@
         <translation>&lt;b&gt;Anhalten&lt;/b&gt;&lt;p&gt;Beende das Debuggen des laufenden Programms.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1154"/>
+        <location filename="../Debugger/DebugUI.py" line="1152"/>
         <source>The program being debugged contains an unspecified syntax error.</source>
         <translation>Das untersuchte Programm enthält einen unspezifizierten Syntaxfehler.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1197"/>
+        <location filename="../Debugger/DebugUI.py" line="1195"/>
         <source>An unhandled exception occured. See the shell window for details.</source>
         <translation>Eine nicht abgefangene Ausnahme ist aufgetreten. Details finden Sie im Shell-Fenster.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1330"/>
+        <location filename="../Debugger/DebugUI.py" line="1328"/>
         <source>The program being debugged has terminated unexpectedly.</source>
         <translation>Das untersuchte Programm wurde unerwartet beendet.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2093"/>
+        <location filename="../Debugger/DebugUI.py" line="2091"/>
         <source>Debug Project</source>
         <translation>Projekt debuggen</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2093"/>
+        <location filename="../Debugger/DebugUI.py" line="2091"/>
         <source>There is no main script defined for the current project. No debugging possible.</source>
         <translation>Das aktuelle Projekt besitzt kein Hauptskript. Debuggen ist nicht möglich.</translation>
     </message>
@@ -6828,7 +6828,7 @@
         <translation>&lt;b&gt;Skript ausführen&lt;/b&gt;&lt;p&gt;Bestimme die Kommandozeilenparameter und führe das Skript außerhalb des Debuggers aus. Falls die Datei ungesicherte Änderungen hat, so können diese zunächst gesichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="2076"/>
+        <location filename="../Debugger/DebugUI.py" line="2074"/>
         <source>Debug Script</source>
         <translation>Skript debuggen</translation>
     </message>
@@ -6863,7 +6863,7 @@
         <translation>&lt;b&gt;Projekt debuggen&lt;/b&gt;&lt;p&gt;Bestimme die Kommandozeilenparameter und setze die erste ausführbare Python-Zeile des Hauptskriptes des aktuellen Projektes als aktuelle Zeile. Falls Dateien des aktuellen Projektes ungesicherte Änderungen haben, so können diese zunächst gesichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1956"/>
+        <location filename="../Debugger/DebugUI.py" line="1954"/>
         <source>There is no main script defined for the current project. Aborting</source>
         <translation>Für das aktuelle Projekt ist kein Hauptskript festgelegt. Abbruch</translation>
     </message>
@@ -6913,12 +6913,12 @@
         <translation>&lt;b&gt;Abdeckungslauf des Projektes&lt;/b&gt;&lt;p&gt;Bestimme die Kommandozeilenparameter und führe das Hauptskript des aktuellen Projektes unter Kontrolle eines Abdeckungsanalysetools aus. Falls Dateien des aktuellen Projektes ungesicherte Änderungen haben, so können diese zunächst gesichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1685"/>
+        <location filename="../Debugger/DebugUI.py" line="1683"/>
         <source>Coverage of Project</source>
         <translation>Abdeckung des Projektes</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1672"/>
+        <location filename="../Debugger/DebugUI.py" line="1670"/>
         <source>Coverage of Script</source>
         <translation>Abdeckung des Skriptes</translation>
     </message>
@@ -6963,12 +6963,12 @@
         <translation>&lt;b&gt;Projektprofil&lt;/b&gt;&lt;p&gt;Bestimme die Kommandozeilenparameter und führe das Hauptskript des aktuellen Projektes unter Kontrolle des Python-Profilers aus. Falls Dateien des aktuellen Projektes ungesicherte Änderungen haben, so können diese zunächst gesichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1821"/>
+        <location filename="../Debugger/DebugUI.py" line="1819"/>
         <source>Profile of Project</source>
         <translation>Projektprofil</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1808"/>
+        <location filename="../Debugger/DebugUI.py" line="1806"/>
         <source>Profile of Script</source>
         <translation>Skriptprofil</translation>
     </message>
@@ -7073,17 +7073,17 @@
         <translation>&lt;b&gt;Variablenfilter&lt;/b&gt;&lt;p&gt;Konfigurieren der Variablenfilter. Nur Variablen mit einem Typ, der nicht ausgewählt ist, werden im globalen oder lokalen Variablenfenster während einer Debuggingsitzung angezeigt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1262"/>
+        <location filename="../Debugger/DebugUI.py" line="1260"/>
         <source>&lt;p&gt;The debugged program raised the exception &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das untersuchte Programm erzeugte die Ausnahme &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;„&lt;b&gt;{1}&lt;/b&gt;“&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1437"/>
+        <location filename="../Debugger/DebugUI.py" line="1435"/>
         <source>Breakpoint Condition Error</source>
         <translation>Fehler in Haltepunktbedingung</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1437"/>
+        <location filename="../Debugger/DebugUI.py" line="1435"/>
         <source>&lt;p&gt;The condition of the breakpoint &lt;b&gt;{0}, {1}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Bedingung des Haltepunktes &lt;b&gt;{0}, {1}&lt;/b&gt; enthält einen Syntaxfehler.&lt;/p&gt;</translation>
     </message>
@@ -7115,12 +7115,12 @@
         <translation>Debug</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1247"/>
+        <location filename="../Debugger/DebugUI.py" line="1245"/>
         <source>&lt;p&gt;The debugged program raised the exception &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;&quot;&lt;b&gt;{1}&lt;/b&gt;&quot;&lt;br&gt;File: &lt;b&gt;{2}&lt;/b&gt;, Line: &lt;b&gt;{3}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Break here?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das untersuchte Programm erzeugte die Ausnahme &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;„&lt;b&gt;{1}&lt;/b&gt;“&lt;br&gt;Datei: &lt;b&gt;{2}&lt;/b&gt;, Zeile: &lt;b&gt;{3}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Anhalten?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1173"/>
+        <location filename="../Debugger/DebugUI.py" line="1171"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; contains the syntax error &lt;b&gt;{1}&lt;/b&gt; at line &lt;b&gt;{2}&lt;/b&gt;, character &lt;b&gt;{3}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; enthält den Syntaxfehler &lt;b&gt;{1}&lt;/b&gt; in Zeile &lt;b&gt;{2}&lt;/b&gt;, Position &lt;b&gt;{3}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
@@ -7130,27 +7130,27 @@
         <translation>Halte das laufende Skript an.</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1476"/>
+        <location filename="../Debugger/DebugUI.py" line="1474"/>
         <source>Watch Expression Error</source>
         <translation>Fehler in Beobachtungsausdruck</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1476"/>
+        <location filename="../Debugger/DebugUI.py" line="1474"/>
         <source>&lt;p&gt;The watch expression &lt;b&gt;{0}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Beobachtungsausdrucks &lt;b&gt;{0}&lt;/b&gt; enthält einen Syntaxfehler.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1506"/>
+        <location filename="../Debugger/DebugUI.py" line="1504"/>
         <source>&lt;p&gt;A watch expression &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; already exists.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Ein Beobachtungsausdruck „&lt;b&gt;{0}&lt;/b&gt;“ existiert bereits.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1511"/>
+        <location filename="../Debugger/DebugUI.py" line="1509"/>
         <source>&lt;p&gt;A watch expression &apos;&lt;b&gt;{0}&lt;/b&gt;&apos; for the variable &lt;b&gt;{1}&lt;/b&gt; already exists.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Ein Beobachtungsausdruck „&lt;b&gt;{0}&lt;/b&gt;“ für die Variable &lt;b&gt;{1}&lt;/b&gt; existiert bereits.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1516"/>
+        <location filename="../Debugger/DebugUI.py" line="1514"/>
         <source>Watch expression already exists</source>
         <translation>Beobachtungsausdruck existiert bereits</translation>
     </message>
@@ -7192,7 +7192,7 @@
         <translation>Haltepunkt bearbeiten …</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1114"/>
+        <location filename="../Debugger/DebugUI.py" line="1113"/>
         <source>Program terminated</source>
         <translation>Programm beendet</translation>
     </message>
@@ -7212,7 +7212,7 @@
         <translation>&lt;b&gt;Anhalten&lt;/b&gt;&lt;p&gt;Dies hält das Skript, das im Debugger läuft, an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1316"/>
+        <location filename="../Debugger/DebugUI.py" line="1314"/>
         <source>&lt;p&gt;The program generate the signal &quot;{0}&quot;.&lt;br/&gt;File: &lt;b&gt;{1}&lt;/b&gt;, Line: &lt;b&gt;{2}&lt;/b&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Programm erzeugte das Signal &quot;{0}&quot;.&lt;br/&gt;Datei: &lt;b&gt;{1}&lt;/b&gt;, Zeile: &lt;b&gt;{2}&lt;/b&gt;&lt;/p&gt;</translation>
     </message>
@@ -7232,26 +7232,26 @@
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; wurde mit dem Status {1} beendet.&lt;/p&gt;{2}</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1100"/>
+        <location filename="../Debugger/DebugUI.py" line="1099"/>
         <source>Message: {0}</source>
         <translation>Nachricht: {0}</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1106"/>
+        <location filename="../Debugger/DebugUI.py" line="1105"/>
         <source>The program has terminated with an exit status of {0}.
 {1}</source>
         <translation>Das Programm wurde mit dem Status {0} beendet.
 {1}</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1110"/>
+        <location filename="../Debugger/DebugUI.py" line="1109"/>
         <source>&quot;{0}&quot; has terminated with an exit status of {1}.
 {2}</source>
         <translation>„{0}“ wurde mit dem Status {1} beendet.
 {2}</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1119"/>
+        <location filename="../Debugger/DebugUI.py" line="1118"/>
         <source>The program has terminated with an exit status of {0}.
 {1}
 </source>
@@ -7260,7 +7260,7 @@
 </translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1124"/>
+        <location filename="../Debugger/DebugUI.py" line="1123"/>
         <source>&quot;{0}&quot; has terminated with an exit status of {1}.
 {2}
 </source>
@@ -7289,7 +7289,7 @@
         <translation>&lt;b&gt;Instruktionszeiger zur Cursorposition bewegen&lt;/b&gt;&lt;p&gt;Bewege den Python Instruktionszeiger zur aktuellen Cursorposition, ohne Programmteile dazwischen auszuführen.&lt;/p&gt;&lt;p&gt;Es ist nicht möglich, aus einer Funktion herauszuspringen oder in eine Schleife hinein. In diesem Fall wird eine Fehlermeldung im Log-Fenster ausgegeben.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugUI.py" line="1394"/>
+        <location filename="../Debugger/DebugUI.py" line="1392"/>
         <source>No locals available.</source>
         <translation>Keine lokalen Variablen verfügbar.</translation>
     </message>
@@ -7367,12 +7367,12 @@
         <translation>Status</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="823"/>
+        <location filename="../Debugger/DebugViewer.py" line="825"/>
         <source>waiting at breakpoint</source>
         <translation>am Haltepunkt wartend</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="827"/>
+        <location filename="../Debugger/DebugViewer.py" line="829"/>
         <source>running</source>
         <translation>ausführend</translation>
     </message>
@@ -7382,17 +7382,17 @@
         <translation>Debugger:</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="825"/>
+        <location filename="../Debugger/DebugViewer.py" line="827"/>
         <source>waiting at exception</source>
         <translation>an Ausnahme wartend</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="829"/>
+        <location filename="../Debugger/DebugViewer.py" line="831"/>
         <source>unknown state ({0})</source>
         <translation>unbekannter Status ({0})</translation>
     </message>
     <message>
-        <location filename="../Debugger/DebugViewer.py" line="750"/>
+        <location filename="../Debugger/DebugViewer.py" line="751"/>
         <source>&lt;p&gt;Debugger with ID &lt;b&gt;{0}&lt;/b&gt; has been connected.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Debugger mit der ID &lt;b&gt;{0}&lt;/b&gt; wurde verbunden.&lt;/p&gt;</translation>
     </message>
@@ -18137,7 +18137,7 @@
 <context>
     <name>FileDialogWizardDialog</name>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="74"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="72"/>
         <source>QFileDialog Wizard</source>
         <translation>QFileDialog-Assistent</translation>
     </message>
@@ -18267,7 +18267,7 @@
         <translation>nur Verzeichnisse anzeigen</translation>
     </message>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="91"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="89"/>
         <source>Test</source>
         <translation>Test</translation>
     </message>
@@ -18417,7 +18417,7 @@
         <translation>Gib die Liste der unterstützten Schemata durch Leerzeichen getrennt ein</translation>
     </message>
     <message>
-        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="69"/>
+        <location filename="../Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py" line="67"/>
         <source>E5FileDialog Wizard</source>
         <translation>E5FileDialog-Assistent</translation>
     </message>
@@ -26085,27 +26085,27 @@
 <context>
     <name>Globals</name>
     <message>
-        <location filename="../Globals/__init__.py" line="450"/>
+        <location filename="../Globals/__init__.py" line="453"/>
         <source>{0:4.2f} Bytes</source>
         <translation>{0:4.2f} Bytes</translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="454"/>
+        <location filename="../Globals/__init__.py" line="457"/>
         <source>{0:4.2f} KiB</source>
         <translation>{0:4.2f} KiB</translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="458"/>
+        <location filename="../Globals/__init__.py" line="461"/>
         <source>{0:4.2f} MiB</source>
         <translation>{0:4.2f} MiB</translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="462"/>
+        <location filename="../Globals/__init__.py" line="465"/>
         <source>{0:4.2f} GiB</source>
         <translation>{0:4.2f} GiB</translation>
     </message>
     <message>
-        <location filename="../Globals/__init__.py" line="466"/>
+        <location filename="../Globals/__init__.py" line="469"/>
         <source>{0:4.2f} TiB</source>
         <translation>{0:4.2f} TiB</translation>
     </message>
@@ -26501,12 +26501,12 @@
         <translation>&lt;b&gt;Hilfedokumentation einstellen&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="49"/>
+        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="48"/>
         <source>HTML Files (*.html *.htm);;All Files (*)</source>
         <translation>HTML-Dateien (*.html *.htm);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="35"/>
+        <location filename="../Preferences/ConfigurationPages/HelpDocumentationPage.py" line="34"/>
         <source>HTML Files (*.html *.htm);;Compressed Help Files (*.chm);;All Files (*)</source>
         <translation>HTML-Dateien (*.html *.htm);;Komprimierte Hilfedateien (*.chm);; Alle Dateien (*)</translation>
     </message>
@@ -49969,17 +49969,17 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="../Preferences/__init__.py" line="1628"/>
+        <location filename="../Preferences/__init__.py" line="1647"/>
         <source>Export Preferences</source>
         <translation>Einstellungen exportieren</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1656"/>
+        <location filename="../Preferences/__init__.py" line="1675"/>
         <source>Import Preferences</source>
         <translation>Einstellungen importieren</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1656"/>
+        <location filename="../Preferences/__init__.py" line="1675"/>
         <source>Properties File (*.ini);;All Files (*)</source>
         <translation>Properties-Dateien (*.ini);;Alle Dateien (*)</translation>
     </message>
@@ -50302,22 +50302,22 @@
         <translation>Drücke, um nach Programmen zu suchen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="202"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="214"/>
         <source>CORBA IDL Compiler</source>
         <translation>CORBA IDL Compiler</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="341"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="353"/>
         <source>(not configured)</source>
         <translation>(nicht konfiguriert)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="399"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="420"/>
         <source>(not executable)</source>
         <translation>(nicht ausführbar)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="442"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="463"/>
         <source>(not found)</source>
         <translation>(nicht gefunden)</translation>
     </message>
@@ -50327,17 +50327,17 @@
         <translation>Externe Werkzeuge</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="396"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="417"/>
         <source>(unknown)</source>
         <translation>(unbekannt)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="235"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="247"/>
         <source>Spell Checker - PyEnchant</source>
         <translation>Rechtschreibprüfung – PyEnchant</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="252"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="264"/>
         <source>Source Highlighter - Pygments</source>
         <translation>Quelltextfärber – Pygments</translation>
     </message>
@@ -50377,57 +50377,57 @@
         <translation>Ressourcencompiler (Python, PyQt5)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="210"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="222"/>
         <source>Protobuf Compiler</source>
         <translation>Protobuf Compiler</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="217"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="229"/>
         <source>gRPC Compiler</source>
         <translation>gRPC Compiler</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="375"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="382"/>
         <source>(module not found)</source>
         <translation>(Modul nicht gefunden)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="162"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="174"/>
         <source>Translation Extractor (Python, PySide2)</source>
         <translation>Übersetzungsextraktor (Python, PySide2)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="172"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="184"/>
         <source>Resource Compiler (Python, PySide2)</source>
         <translation>Ressourcencompiler (Python, PySide2)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="167"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="179"/>
         <source>Forms Compiler (Python, PySide2)</source>
         <translation>Formularcompiler (Python, PySide2)</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="183"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="195"/>
         <source>conda Manager</source>
         <translation>Conda Manager</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="191"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="203"/>
         <source>PyPI Package Management</source>
         <translation>PyPI Paketverwaltung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="259"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="271"/>
         <source>MicroPython - MPY Cross Compiler</source>
         <translation>MicroPython - MPY Cross Compiler</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="262"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="274"/>
         <source>MicroPython - ESP Tool</source>
         <translation>MicroPython - ESP Werkzeug</translation>
     </message>
     <message>
-        <location filename="../Preferences/ProgramsDialog.py" line="268"/>
+        <location filename="../Preferences/ProgramsDialog.py" line="280"/>
         <source>MicroPython - PyBoard Flasher</source>
         <translation>MicroPython - PyBoard Flasher</translation>
     </message>
@@ -50456,826 +50456,836 @@
         <source>Unavailable Tools Only</source>
         <translation>Nur Nicht Verfügbare Werkzeuge</translation>
     </message>
+    <message>
+        <location filename="../Preferences/ProgramsDialog.py" line="161"/>
+        <source>Translation Extractor (Python, PyQt6)</source>
+        <translation>Übersetzungsextraktor (Python, PyQt6)</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ProgramsDialog.py" line="166"/>
+        <source>Forms Compiler (Python, PyQt6)</source>
+        <translation>Formularcompiler (Python, PyQt6)</translation>
+    </message>
 </context>
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project/Project.py" line="781"/>
+        <location filename="../Project/Project.py" line="787"/>
         <source>Read project file</source>
         <translation>Projektdatei lesen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1494"/>
+        <location filename="../Project/Project.py" line="1501"/>
         <source>Delete translation</source>
         <translation>Übersetzung löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1659"/>
+        <location filename="../Project/Project.py" line="1666"/>
         <source>Add file</source>
         <translation>Datei hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2213"/>
+        <location filename="../Project/Project.py" line="2220"/>
         <source>Delete file</source>
         <translation>Datei löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2338"/>
+        <location filename="../Project/Project.py" line="2345"/>
         <source>Create project directory</source>
         <translation>Projektverzeichnis erstellen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3826"/>
+        <location filename="../Project/Project.py" line="3833"/>
         <source>Open project</source>
         <translation>Projekt öffnen</translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="3870"/>
+        <source>Save project as</source>
+        <translation>Projekt speichern unter</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3109"/>
+        <source>Save File</source>
+        <translation>Datei speichern</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3145"/>
+        <source>Close Project</source>
+        <translation>Projekt schließen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3145"/>
+        <source>The current project has unsaved changes.</source>
+        <translation>Das aktuelle Projekt hat ungesicherte Änderungen.</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4050"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Speichern</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3819"/>
+        <source>New project</source>
+        <translation>Neues Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3819"/>
+        <source>&amp;New...</source>
+        <translation>&amp;Neu...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3824"/>
+        <source>Generate a new project</source>
+        <translation>Erstelle ein neues Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3825"/>
+        <source>&lt;b&gt;New...&lt;/b&gt;&lt;p&gt;This opens a dialog for entering the info for a new project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Neu...&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog zur Eingabe der Informationen des neuen Projektes.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3833"/>
+        <source>&amp;Open...</source>
+        <translation>&amp;Öffnen...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3838"/>
+        <source>Open an existing project</source>
+        <translation>Öffnet ein bestehendes Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3839"/>
+        <source>&lt;b&gt;Open...&lt;/b&gt;&lt;p&gt;This opens an existing project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Öffnen...&lt;/b&gt;&lt;p&gt;Dies öffnet ein bestehendes Projekt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3846"/>
+        <source>Close project</source>
+        <translation>Projekt schließen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3846"/>
+        <source>&amp;Close</source>
+        <translation>Schl&amp;ießen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3850"/>
+        <source>Close the current project</source>
+        <translation>Schließt das aktuelle Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3851"/>
+        <source>&lt;b&gt;Close&lt;/b&gt;&lt;p&gt;This closes the current project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Schließen&lt;/b&gt;&lt;p&gt;Dies schließt das aktuelle Projekt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3858"/>
+        <source>Save project</source>
+        <translation>Projekt speichern</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3862"/>
+        <source>Save the current project</source>
+        <translation>Speichert das aktuelle Projekt</translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="3863"/>
-        <source>Save project as</source>
-        <translation>Projekt speichern unter</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3102"/>
-        <source>Save File</source>
-        <translation>Datei speichern</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3138"/>
-        <source>Close Project</source>
-        <translation>Projekt schließen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3138"/>
-        <source>The current project has unsaved changes.</source>
-        <translation>Das aktuelle Projekt hat ungesicherte Änderungen.</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4043"/>
-        <source>&amp;Save</source>
-        <translation>&amp;Speichern</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3812"/>
-        <source>New project</source>
-        <translation>Neues Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3812"/>
-        <source>&amp;New...</source>
-        <translation>&amp;Neu...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3817"/>
-        <source>Generate a new project</source>
-        <translation>Erstelle ein neues Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3818"/>
-        <source>&lt;b&gt;New...&lt;/b&gt;&lt;p&gt;This opens a dialog for entering the info for a new project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Neu...&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog zur Eingabe der Informationen des neuen Projektes.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3826"/>
-        <source>&amp;Open...</source>
-        <translation>&amp;Öffnen...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3831"/>
-        <source>Open an existing project</source>
-        <translation>Öffnet ein bestehendes Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3832"/>
-        <source>&lt;b&gt;Open...&lt;/b&gt;&lt;p&gt;This opens an existing project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Öffnen...&lt;/b&gt;&lt;p&gt;Dies öffnet ein bestehendes Projekt.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3839"/>
-        <source>Close project</source>
-        <translation>Projekt schließen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3839"/>
-        <source>&amp;Close</source>
-        <translation>Schl&amp;ießen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3843"/>
-        <source>Close the current project</source>
-        <translation>Schließt das aktuelle Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3844"/>
-        <source>&lt;b&gt;Close&lt;/b&gt;&lt;p&gt;This closes the current project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Schließen&lt;/b&gt;&lt;p&gt;Dies schließt das aktuelle Projekt.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3851"/>
-        <source>Save project</source>
-        <translation>Projekt speichern</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3855"/>
-        <source>Save the current project</source>
-        <translation>Speichert das aktuelle Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3856"/>
         <source>&lt;b&gt;Save&lt;/b&gt;&lt;p&gt;This saves the current project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Speichern&lt;/b&gt;&lt;p&gt;Dies speichert das aktuelle Projekt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3867"/>
+        <location filename="../Project/Project.py" line="3874"/>
         <source>Save the current project to a new file</source>
         <translation>Speichert das aktuelle Projekt in eine neue Datei</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3869"/>
+        <location filename="../Project/Project.py" line="3876"/>
         <source>&lt;b&gt;Save as&lt;/b&gt;&lt;p&gt;This saves the current project to a new file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Speichern unter&lt;/b&gt;&lt;p&gt;Dies speichert das aktuelle Projekt in eine neue Datei.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3909"/>
+        <location filename="../Project/Project.py" line="3916"/>
         <source>Add translation to project</source>
         <translation>Übersetzung zum Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3909"/>
-        <source>Add &amp;translation...</source>
-        <translation>&amp;Übersetzung hinzufügen...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3914"/>
-        <source>Add a translation to the current project</source>
-        <translation>Eine Übersetzung zum aktuellen Projekt hinzufügen</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3916"/>
+        <source>Add &amp;translation...</source>
+        <translation>&amp;Übersetzung hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3921"/>
+        <source>Add a translation to the current project</source>
+        <translation>Eine Übersetzung zum aktuellen Projekt hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3923"/>
         <source>&lt;b&gt;Add translation...&lt;/b&gt;&lt;p&gt;This opens a dialog for add a translation to the current project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Übersetzung hinzufügen...&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog, mit dem eine Übersetzung zum aktuellen Projekt hinzugefügt werden kann.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3954"/>
+        <location filename="../Project/Project.py" line="3961"/>
         <source>Project properties</source>
         <translation>Projekteigenschaften</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3954"/>
+        <location filename="../Project/Project.py" line="3961"/>
         <source>&amp;Properties...</source>
         <translation>&amp;Eigenschaften...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3959"/>
+        <location filename="../Project/Project.py" line="3966"/>
         <source>Show the project properties</source>
         <translation>Zeigt die Projekteigenschaften an</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3960"/>
+        <location filename="../Project/Project.py" line="3967"/>
         <source>&lt;b&gt;Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the project properties.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Eigenschaften...&lt;/b&gt;&lt;p&gt;Dies zeigt einen Dialog an, mit dem die Projekteigenschaften bearbeitet werden können.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4307"/>
+        <location filename="../Project/Project.py" line="4314"/>
         <source>Open &amp;Recent Projects</source>
         <translation>Zu&amp;letzt geöffnete Projekte</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1791"/>
+        <location filename="../Project/Project.py" line="1798"/>
         <source>The target directory must not be empty.</source>
         <translation>Das Zielverzeichnis darf nicht leer sein.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3924"/>
+        <location filename="../Project/Project.py" line="3931"/>
         <source>Search new files</source>
         <translation>Neue Dateien suchen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3924"/>
+        <location filename="../Project/Project.py" line="3931"/>
         <source>Searc&amp;h new files...</source>
         <translation>Neue &amp;Dateien suchen...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3928"/>
+        <location filename="../Project/Project.py" line="3935"/>
         <source>Search new files in the project directory.</source>
         <translation>Sucht neue Dateien im Projektverzeichnis.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1802"/>
+        <location filename="../Project/Project.py" line="1809"/>
         <source>Add directory</source>
         <translation>Verzeichnis hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1802"/>
+        <location filename="../Project/Project.py" line="1809"/>
         <source>The source directory must not be empty.</source>
         <translation>Das Quellverzeichnis darf nicht leer sein.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1369"/>
+        <location filename="../Project/Project.py" line="1375"/>
         <source>Add Language</source>
         <translation>Sprache hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3863"/>
+        <location filename="../Project/Project.py" line="3870"/>
         <source>Save &amp;as...</source>
         <translation>Speichern &amp;unter...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4833"/>
+        <location filename="../Project/Project.py" line="4840"/>
         <source>Version Control System</source>
         <translation>Versionskontrollsystem</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4685"/>
+        <location filename="../Project/Project.py" line="4692"/>
         <source>Search New Files</source>
         <translation>Neue Dateien suchen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4685"/>
+        <location filename="../Project/Project.py" line="4692"/>
         <source>There were no new files found to be added.</source>
         <translation>Es wurden keine neuen Dateien gefunden.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1002"/>
+        <location filename="../Project/Project.py" line="1008"/>
         <source>Read project session</source>
         <translation>Projektsitzung lesen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1227"/>
+        <location filename="../Project/Project.py" line="1233"/>
         <source>Please save the project first.</source>
         <translation>Bitte speichern Sie zuerst das Projekt.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1038"/>
+        <location filename="../Project/Project.py" line="1044"/>
         <source>Save project session</source>
         <translation>Projektsitzung speichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4082"/>
+        <location filename="../Project/Project.py" line="4089"/>
         <source>Load session</source>
         <translation>Sitzung laden</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4086"/>
+        <location filename="../Project/Project.py" line="4093"/>
         <source>Load the projects session file.</source>
         <translation>Laden der Projektsitzung.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4100"/>
+        <location filename="../Project/Project.py" line="4107"/>
         <source>Save session</source>
         <translation>Sitzung speichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4104"/>
+        <location filename="../Project/Project.py" line="4111"/>
         <source>Save the projects session file.</source>
         <translation>Speichern der Projektsitzung.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4087"/>
+        <location filename="../Project/Project.py" line="4094"/>
         <source>&lt;b&gt;Load session&lt;/b&gt;&lt;p&gt;This loads the projects session file. The session consists of the following data.&lt;br&gt;- all open source files&lt;br&gt;- all breakpoint&lt;br&gt;- the commandline arguments&lt;br&gt;- the working directory&lt;br&gt;- the exception reporting flag&lt;/p&gt;</source>
         <translation>&lt;b&gt;Sitzung laden&lt;/b&gt;&lt;p&gt;Dies lädt eine Projektsitzungsdatei. Die Sitzung enthält die folgenden Daten.&lt;br&gt;- alle offenen Quelltextdateien&lt;br&gt;- alle Haltepunkte&lt;br&gt;- die Kommandozeilenparameter&lt;br&gt;- das Arbeitsverzeichnis&lt;br&gt;- das Ausnahmemeldungsflag&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4105"/>
+        <location filename="../Project/Project.py" line="4112"/>
         <source>&lt;b&gt;Save session&lt;/b&gt;&lt;p&gt;This saves the projects session file. The session consists of the following data.&lt;br&gt;- all open source files&lt;br&gt;- all breakpoint&lt;br&gt;- the commandline arguments&lt;br&gt;- the working directory&lt;br&gt;- the exception reporting flag&lt;/p&gt;</source>
         <translation>&lt;b&gt;Sitzung speichern&lt;/b&gt;&lt;p&gt;Dies speichert eine Projektsitzungsdatei. Die Sitzung enthält die folgenden Daten.&lt;br&gt;- alle offenen Quelltextdateien&lt;br&gt;- alle Haltepunkte&lt;br&gt;- die Kommandozeilenparameter&lt;br&gt;- das Arbeitsverzeichnis&lt;br&gt;- das Ausnahmemeldungsflag&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4321"/>
+        <location filename="../Project/Project.py" line="4328"/>
         <source>Source &amp;Documentation</source>
         <translation>&amp;Quelltextdokumentation</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4316"/>
+        <location filename="../Project/Project.py" line="4323"/>
         <source>Chec&amp;k</source>
         <translation>&amp;Prüfen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4132"/>
+        <location filename="../Project/Project.py" line="4139"/>
         <source>Code Metrics</source>
         <translation>Quelltextmetriken</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4132"/>
+        <location filename="../Project/Project.py" line="4139"/>
         <source>&amp;Code Metrics...</source>
         <translation>&amp;Quelltextmetriken...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4136"/>
+        <location filename="../Project/Project.py" line="4143"/>
         <source>Show some code metrics for the project.</source>
         <translation>Zeige einige Quelltextmetriken für das Projekt.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4138"/>
+        <location filename="../Project/Project.py" line="4145"/>
         <source>&lt;b&gt;Code Metrics...&lt;/b&gt;&lt;p&gt;This shows some code metrics for all Python files in the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Quelltextmetriken...&lt;/b&gt;&lt;p&gt;Dies zeigt einige Quelltextmetriken für alle Python-Dateien des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4146"/>
+        <location filename="../Project/Project.py" line="4153"/>
         <source>Python Code Coverage</source>
         <translation>Python-Quelltext-Abdeckung</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4146"/>
+        <location filename="../Project/Project.py" line="4153"/>
         <source>Code Co&amp;verage...</source>
         <translation>&amp;Quelltext Abdeckung...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4150"/>
+        <location filename="../Project/Project.py" line="4157"/>
         <source>Show code coverage information for the project.</source>
         <translation>Zeige die Quelltextabdeckung für das Projekt.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4152"/>
+        <location filename="../Project/Project.py" line="4159"/>
         <source>&lt;b&gt;Code Coverage...&lt;/b&gt;&lt;p&gt;This shows the code coverage information for all Python files in the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Quelltext Abdeckung...&lt;/b&gt;&lt;p&gt;Dies zeigt die Quelltextabdeckung für alle Python-Dateien des Projektes an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5036"/>
+        <location filename="../Project/Project.py" line="5043"/>
         <source>Profile Data</source>
         <translation>Profildaten</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4160"/>
+        <location filename="../Project/Project.py" line="4167"/>
         <source>&amp;Profile Data...</source>
         <translation>&amp;Profildaten...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4164"/>
+        <location filename="../Project/Project.py" line="4171"/>
         <source>Show profiling data for the project.</source>
         <translation>Zeige Profildaten des aktuellen Projektes.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4166"/>
+        <location filename="../Project/Project.py" line="4173"/>
         <source>&lt;b&gt;Profile Data...&lt;/b&gt;&lt;p&gt;This shows the profiling data for the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Profildaten...&lt;/b&gt;&lt;p&gt;Dies zeigt die Profildaten des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4318"/>
+        <location filename="../Project/Project.py" line="4325"/>
         <source>Sho&amp;w</source>
         <translation>&amp;Zeige</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5013"/>
+        <location filename="../Project/Project.py" line="5020"/>
         <source>There is no main script defined for the current project. Aborting</source>
         <translation>Für das aktuelle Projekt ist kein Hauptskript festgelegt. Abbruch</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4963"/>
+        <location filename="../Project/Project.py" line="4970"/>
         <source>Coverage Data</source>
         <translation>Quelltext Abdeckungsdaten</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4312"/>
-        <source>&amp;Version Control</source>
-        <translation>&amp;Versionskontrolle</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5090"/>
-        <source>Application Diagram</source>
-        <translation>Applikations-Diagramm</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4175"/>
-        <source>&amp;Application Diagram...</source>
-        <translation>&amp;Applikations-Diagramm...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4179"/>
-        <source>Show a diagram of the project.</source>
-        <translation>Zeigt ein Diagramm des Projektes.</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4181"/>
-        <source>&lt;b&gt;Application Diagram...&lt;/b&gt;&lt;p&gt;This shows a diagram of the project.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Applikations-Diagramm...&lt;/b&gt;&lt;p&gt;Dies zeigt ein Diagramm des Projektes.&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4319"/>
+        <source>&amp;Version Control</source>
+        <translation>&amp;Versionskontrolle</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5097"/>
+        <source>Application Diagram</source>
+        <translation>Applikations-Diagramm</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4182"/>
+        <source>&amp;Application Diagram...</source>
+        <translation>&amp;Applikations-Diagramm...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4186"/>
+        <source>Show a diagram of the project.</source>
+        <translation>Zeigt ein Diagramm des Projektes.</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4188"/>
+        <source>&lt;b&gt;Application Diagram...&lt;/b&gt;&lt;p&gt;This shows a diagram of the project.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Applikations-Diagramm...&lt;/b&gt;&lt;p&gt;Dies zeigt ein Diagramm des Projektes.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4326"/>
         <source>&amp;Diagrams</source>
         <translation>&amp;Diagramme</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="884"/>
+        <location filename="../Project/Project.py" line="890"/>
         <source>Save project file</source>
         <translation>Projektdatei speichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4986"/>
+        <location filename="../Project/Project.py" line="4993"/>
         <source>Code Coverage</source>
         <translation>Quelltext Abdeckung</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4986"/>
+        <location filename="../Project/Project.py" line="4993"/>
         <source>Please select a coverage file</source>
         <translation>Bitte wählen Sie eine Datei mit Abdeckungsdaten</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5036"/>
+        <location filename="../Project/Project.py" line="5043"/>
         <source>Please select a profile file</source>
         <translation>Bitte wählen Sie eine Datei mit Profildaten</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3894"/>
+        <location filename="../Project/Project.py" line="3901"/>
         <source>Add directory to project</source>
         <translation>Verzeichnis zum Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3894"/>
-        <source>Add directory...</source>
-        <translation>Verzeichnis hinzufügen...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3899"/>
-        <source>Add a directory to the current project</source>
-        <translation>Füge den Inhalt eines Verzeichnisses zum Projekt hinzu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3901"/>
+        <source>Add directory...</source>
+        <translation>Verzeichnis hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3906"/>
+        <source>Add a directory to the current project</source>
+        <translation>Füge den Inhalt eines Verzeichnisses zum Projekt hinzu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3908"/>
         <source>&lt;b&gt;Add directory...&lt;/b&gt;&lt;p&gt;This opens a dialog for adding a directory to the current project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Verzeichnis hinzufügen&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog, mit dem ein Verzeichnis bzw. der Inhalt eines Verzeichnisses zum aktuellen Projekt hinzugefügt werden kann.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1939"/>
+        <location filename="../Project/Project.py" line="1946"/>
         <source>Rename file</source>
         <translation>Datei umbenennen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1963"/>
+        <location filename="../Project/Project.py" line="1970"/>
         <source>Rename File</source>
         <translation>Datei umbenennen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2528"/>
+        <location filename="../Project/Project.py" line="2535"/>
         <source>Shall the project file be added to the repository?</source>
         <translation>Soll die Projektdatei zum Repository hinzugefügt werden?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2943"/>
+        <location filename="../Project/Project.py" line="2950"/>
         <source>New Project</source>
         <translation>Neues Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2458"/>
+        <location filename="../Project/Project.py" line="2465"/>
         <source>Add existing files to the project?</source>
         <translation>Existierende Dateien dem Projekt hinzufügen?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2585"/>
+        <location filename="../Project/Project.py" line="2592"/>
         <source>Would you like to edit the VCS command options?</source>
         <translation>Möchten Sie die VCS-Befehlsoptionen bearbeiten?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2557"/>
+        <location filename="../Project/Project.py" line="2564"/>
         <source>Select version control system for the project</source>
         <translation>Wähle das Versionskontrollsystem für das Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="781"/>
+        <location filename="../Project/Project.py" line="787"/>
         <source>&lt;p&gt;The project file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Projektdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="884"/>
+        <location filename="../Project/Project.py" line="890"/>
         <source>&lt;p&gt;The project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Projektdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1002"/>
+        <location filename="../Project/Project.py" line="1008"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Projektsitzungsdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1038"/>
+        <location filename="../Project/Project.py" line="1044"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Projektsitzungsdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3102"/>
+        <location filename="../Project/Project.py" line="3109"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2338"/>
+        <location filename="../Project/Project.py" line="2345"/>
         <source>&lt;p&gt;The project directory &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Projektverzeichnis &lt;b&gt;{0}&lt;/b&gt; konnte nicht erstellt werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1067"/>
+        <location filename="../Project/Project.py" line="1073"/>
         <source>Delete project session</source>
         <translation>Projektsitzung löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1067"/>
+        <location filename="../Project/Project.py" line="1073"/>
         <source>&lt;p&gt;The project session file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Projektsitzungsdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelöscht werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4118"/>
+        <location filename="../Project/Project.py" line="4125"/>
         <source>Delete session</source>
         <translation>Sitzung löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4122"/>
+        <location filename="../Project/Project.py" line="4129"/>
         <source>Delete the projects session file.</source>
         <translation>Löscht die Projektsitzungsdatei.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4123"/>
+        <location filename="../Project/Project.py" line="4130"/>
         <source>&lt;b&gt;Delete session&lt;/b&gt;&lt;p&gt;This deletes the projects session file&lt;/p&gt;</source>
         <translation>&lt;b&gt;Sitzung löschen&lt;/b&gt;&lt;p&gt;Dies löscht die Sitzungsdatei des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="269"/>
+        <location filename="../Project/Project.py" line="271"/>
         <source>Console</source>
         <translation>Konsole</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="270"/>
+        <location filename="../Project/Project.py" line="272"/>
         <source>Other</source>
         <translation>Sonstige</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5090"/>
+        <location filename="../Project/Project.py" line="5097"/>
         <source>Include module names?</source>
         <translation>Modulnamen anzeigen?</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2243"/>
+        <location filename="../Project/Project.py" line="2250"/>
         <source>Delete directory</source>
         <translation>Verzeichnis löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1101"/>
+        <location filename="../Project/Project.py" line="1107"/>
         <source>Read tasks</source>
         <translation>Aufgaben lesen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1101"/>
+        <location filename="../Project/Project.py" line="1107"/>
         <source>&lt;p&gt;The tasks file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Aufgabendatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1121"/>
+        <location filename="../Project/Project.py" line="1127"/>
         <source>Save tasks</source>
         <translation>Aufgaben speichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1121"/>
+        <location filename="../Project/Project.py" line="1127"/>
         <source>&lt;p&gt;The tasks file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Aufgabendatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1180"/>
+        <location filename="../Project/Project.py" line="1186"/>
         <source>Read debugger properties</source>
         <translation>Debugger-Eigenschaften lesen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1180"/>
+        <location filename="../Project/Project.py" line="1186"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei mit den projektspezifischen Debugger-Eigenschaften &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1215"/>
+        <location filename="../Project/Project.py" line="1221"/>
         <source>Save debugger properties</source>
         <translation>Debugger-Eigenschaften speichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1215"/>
+        <location filename="../Project/Project.py" line="1221"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei mit den projektspezifischen Debugger-Eigenschaften &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1241"/>
+        <location filename="../Project/Project.py" line="1247"/>
         <source>Delete debugger properties</source>
         <translation>Debugger-Eigenschaften löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1241"/>
+        <location filename="../Project/Project.py" line="1247"/>
         <source>&lt;p&gt;The project debugger properties file &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei mit den projektspezifischen Debugger-Eigenschaften &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelöscht werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4018"/>
+        <location filename="../Project/Project.py" line="4025"/>
         <source>Debugger Properties</source>
         <translation>Debugger-Eigenschaften</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4018"/>
+        <location filename="../Project/Project.py" line="4025"/>
         <source>Debugger &amp;Properties...</source>
         <translation>Debugger-&amp;Eigenschaften...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4022"/>
+        <location filename="../Project/Project.py" line="4029"/>
         <source>Show the debugger properties</source>
         <translation>Debugger-Eigenschaften anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4023"/>
+        <location filename="../Project/Project.py" line="4030"/>
         <source>&lt;b&gt;Debugger Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Debugger-Eigenschaften...&lt;/b&gt;&lt;p&gt;Dies zeigt einen Dialog an, um die projektspezifischen Debugger-Einstellungen zu bearbeiten.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4031"/>
+        <location filename="../Project/Project.py" line="4038"/>
         <source>Load</source>
         <translation>Laden</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4031"/>
+        <location filename="../Project/Project.py" line="4038"/>
         <source>&amp;Load</source>
         <translation>&amp;Laden</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4035"/>
+        <location filename="../Project/Project.py" line="4042"/>
         <source>Load the debugger properties</source>
         <translation>Debugger-Eigenschaften laden</translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="4050"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4054"/>
+        <source>Save the debugger properties</source>
+        <translation>Debugger-Eigenschaften speichern</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4062"/>
+        <source>Delete</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4062"/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Löschen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4066"/>
+        <source>Delete the debugger properties</source>
+        <translation>Debugger-Eigenschaften löschen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4075"/>
+        <source>Reset</source>
+        <translation>Zurücksetzen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4075"/>
+        <source>&amp;Reset</source>
+        <translation>&amp;Zurücksetzen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4079"/>
+        <source>Reset the debugger properties</source>
+        <translation>Debugger-Eigenschaften zurücksetzen</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4316"/>
+        <source>Debugger</source>
+        <translation>Debugger</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4315"/>
+        <source>Session</source>
+        <translation>Sitzung</translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="4043"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4047"/>
-        <source>Save the debugger properties</source>
-        <translation>Debugger-Eigenschaften speichern</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4055"/>
-        <source>Delete</source>
-        <translation>Löschen</translation>
+        <source>&lt;b&gt;Load Debugger Properties&lt;/b&gt;&lt;p&gt;This loads the project specific debugger settings.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Debugger-Eigenschaften laden&lt;/b&gt;&lt;p&gt;Dies lädt die projektspezifischen Debugger-Einstellungen.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../Project/Project.py" line="4055"/>
-        <source>&amp;Delete</source>
-        <translation>&amp;Löschen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4059"/>
-        <source>Delete the debugger properties</source>
-        <translation>Debugger-Eigenschaften löschen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4068"/>
-        <source>Reset</source>
-        <translation>Zurücksetzen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4068"/>
-        <source>&amp;Reset</source>
-        <translation>&amp;Zurücksetzen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4072"/>
-        <source>Reset the debugger properties</source>
-        <translation>Debugger-Eigenschaften zurücksetzen</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4309"/>
-        <source>Debugger</source>
-        <translation>Debugger</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4308"/>
-        <source>Session</source>
-        <translation>Sitzung</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4036"/>
-        <source>&lt;b&gt;Load Debugger Properties&lt;/b&gt;&lt;p&gt;This loads the project specific debugger settings.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Debugger-Eigenschaften laden&lt;/b&gt;&lt;p&gt;Dies lädt die projektspezifischen Debugger-Einstellungen.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4048"/>
         <source>&lt;b&gt;Save Debugger Properties&lt;/b&gt;&lt;p&gt;This saves the project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Debugger-Eigenschaften speichern&lt;/b&gt;&lt;p&gt;Dies speichert die projektspezifischen Debugger-Einstellungen.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4060"/>
+        <location filename="../Project/Project.py" line="4067"/>
         <source>&lt;b&gt;Delete Debugger Properties&lt;/b&gt;&lt;p&gt;This deletes the file containing the project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Debugger-Eigenschaften löschen&lt;/b&gt;&lt;p&gt;Dies löscht die Datei mit den projektspezifischen Debugger-Einstellungen.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4073"/>
+        <location filename="../Project/Project.py" line="4080"/>
         <source>&lt;b&gt;Reset Debugger Properties&lt;/b&gt;&lt;p&gt;This resets the project specific debugger settings.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Debugger-Eigenschaften zurücksetzen&lt;/b&gt;&lt;p&gt;Dies setzt die projektspezifischen Debugger-Einstellungen zurück.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3982"/>
+        <location filename="../Project/Project.py" line="3989"/>
         <source>Filetype Associations</source>
         <translation>Dateitypzuordnungen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3982"/>
+        <location filename="../Project/Project.py" line="3989"/>
         <source>Filetype Associations...</source>
         <translation>Dateitypzuordnungen...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3986"/>
+        <location filename="../Project/Project.py" line="3993"/>
         <source>Show the project filetype associations</source>
         <translation>Zeigt die Dateitypzuordnungen des Projektes</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4320"/>
+        <location filename="../Project/Project.py" line="4327"/>
         <source>Pac&amp;kagers</source>
         <translation>Pa&amp;ketierer</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3878"/>
+        <location filename="../Project/Project.py" line="3885"/>
         <source>Add files to project</source>
         <translation>Dateien zum Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3878"/>
-        <source>Add &amp;files...</source>
-        <translation>&amp;Dateien hinzufügen...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3883"/>
-        <source>Add files to the current project</source>
-        <translation>Fügt Dateien zum aktuellen Projekt hinzu</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3885"/>
+        <source>Add &amp;files...</source>
+        <translation>&amp;Dateien hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3890"/>
+        <source>Add files to the current project</source>
+        <translation>Fügt Dateien zum aktuellen Projekt hinzu</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3892"/>
         <source>&lt;b&gt;Add files...&lt;/b&gt;&lt;p&gt;This opens a dialog for adding files to the current project. The place to add is determined by the file extension.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Dateien hinzufügen...&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog, mit dem Dateien zum aktuellen Projekt hinzugefügt werden kann. Der Ort, an dem sie eingefügt werden, wird durch die Dateinamenerweiterung bestimmt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1963"/>
+        <location filename="../Project/Project.py" line="1970"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be renamed.&lt;br /&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht umbenannt werden.&lt;br /&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3087"/>
+        <location filename="../Project/Project.py" line="3094"/>
         <source>Project Files (*.e4p)</source>
         <translation>Projektdateien (*.e4p)</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4306"/>
+        <location filename="../Project/Project.py" line="4313"/>
         <source>&amp;Project</source>
         <translation>&amp;Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4446"/>
+        <location filename="../Project/Project.py" line="4453"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4512"/>
+        <location filename="../Project/Project.py" line="4519"/>
         <source>&amp;Clear</source>
         <translation>&amp;Löschen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1723"/>
+        <location filename="../Project/Project.py" line="1730"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;&lt;p&gt;Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="920"/>
+        <location filename="../Project/Project.py" line="926"/>
         <source>Read user project properties</source>
         <translation>Nutzer bezogene Projektdaten lesen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="920"/>
+        <location filename="../Project/Project.py" line="926"/>
         <source>&lt;p&gt;The user specific project properties file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei mit den Nutzer bezogenen Projektdaten &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="944"/>
+        <location filename="../Project/Project.py" line="950"/>
         <source>Save user project properties</source>
         <translation>Nutzer bezogene Projektdaten sichern</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="944"/>
+        <location filename="../Project/Project.py" line="950"/>
         <source>&lt;p&gt;The user specific project properties file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei mit den Nutzer bezogenen Projektdaten &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3967"/>
-        <source>User project properties</source>
-        <translation>Nutzer bezogene Projektdaten</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3967"/>
-        <source>&amp;User Properties...</source>
-        <translation>&amp;Nutzer bezogene Projektdaten...</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="3972"/>
-        <source>Show the user specific project properties</source>
-        <translation>Zeigt die Nutzer bezogenen Projektdaten an</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="3974"/>
+        <source>User project properties</source>
+        <translation>Nutzer bezogene Projektdaten</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3974"/>
+        <source>&amp;User Properties...</source>
+        <translation>&amp;Nutzer bezogene Projektdaten...</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3979"/>
+        <source>Show the user specific project properties</source>
+        <translation>Zeigt die Nutzer bezogenen Projektdaten an</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="3981"/>
         <source>&lt;b&gt;User Properties...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the user specific project properties.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Nutzer bezogene Projektdaten...&lt;/b&gt;&lt;p&gt;Dies zeigt einen Dialog an, um Nutzer bezogene Projektdaten zu bearbeiten.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3315"/>
+        <location filename="../Project/Project.py" line="3322"/>
         <source>Syntax errors detected</source>
         <translation>Syntaxfehler gefunden</translation>
     </message>
     <message numerus="yes">
-        <location filename="../Project/Project.py" line="3315"/>
+        <location filename="../Project/Project.py" line="3322"/>
         <source>The project contains %n file(s) with syntax errors.</source>
         <translation>
             <numerusform>Das Projekt beinhaltet eine Datei mit Syntaxfehlern.</numerusform>
@@ -51283,102 +51293,102 @@
         </translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5285"/>
+        <location filename="../Project/Project.py" line="5292"/>
         <source>Create Package List</source>
         <translation>Erzeuge Paketliste</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4204"/>
+        <location filename="../Project/Project.py" line="4211"/>
         <source>Create &amp;Package List</source>
         <translation>Erzeuge &amp;Paketliste</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5558"/>
+        <location filename="../Project/Project.py" line="5565"/>
         <source>Create Plugin Archive</source>
         <translation>Erzeuge Plugin Archiv</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5234"/>
+        <location filename="../Project/Project.py" line="5241"/>
         <source>&lt;p&gt;The file &lt;b&gt;PKGLIST&lt;/b&gt; already exists.&lt;/p&gt;&lt;p&gt;Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;PKGLIST&lt;/b&gt; existiert bereits.&lt;/p&gt;&lt;p&gt;Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5285"/>
+        <location filename="../Project/Project.py" line="5292"/>
         <source>&lt;p&gt;The file &lt;b&gt;PKGLIST&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;PKGLIST&lt;/b&gt; konnte nicht erzeugt werden.&lt;/p&gt;&lt;p&gt;Ursache: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5304"/>
+        <location filename="../Project/Project.py" line="5311"/>
         <source>The project does not have a main script defined. Aborting...</source>
         <translation>Für das Projekt wurde kein Hauptskript angegeben. Abbruch...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1690"/>
+        <location filename="../Project/Project.py" line="1697"/>
         <source>&lt;p&gt;The source directory doesn&apos;t contain any files belonging to the selected category.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Quellverzeichnis enthält keine Dateien, die zur gewählten Kategorie gehören.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2943"/>
+        <location filename="../Project/Project.py" line="2950"/>
         <source>Select Version Control System</source>
         <translation>Versionskontrollsystem auswählen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2564"/>
+        <location filename="../Project/Project.py" line="2571"/>
         <source>None</source>
         <translation>Keines</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="367"/>
+        <location filename="../Project/Project.py" line="370"/>
         <source>Registering Project Type</source>
         <translation>Projekttyp Registrierung</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5444"/>
+        <location filename="../Project/Project.py" line="5451"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be stored in the archive. Ignoring it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht im Archiv gespeichert werde. Sie wird ignoriert.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5517"/>
+        <location filename="../Project/Project.py" line="5524"/>
         <source>&lt;p&gt;The plugin file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Plugindatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;br&gt;Grund: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1369"/>
+        <location filename="../Project/Project.py" line="1375"/>
         <source>You have to specify a translation pattern first.</source>
         <translation>Sie müssen zuerst ein Übersetzungsmuster festlegen.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2666"/>
+        <location filename="../Project/Project.py" line="2673"/>
         <source>Translation Pattern</source>
         <translation>Übersetzungsmuster</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2666"/>
+        <location filename="../Project/Project.py" line="2673"/>
         <source>Enter the path pattern for translation files (use &apos;%language%&apos; in place of the language code):</source>
         <translation>Gib das Pfadmuster für Übersetzungsdateien ein (benutze „%language%“ anstelle des Sprachcodes):</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4833"/>
+        <location filename="../Project/Project.py" line="4840"/>
         <source>&lt;p&gt;The selected VCS &lt;b&gt;{0}&lt;/b&gt; could not be found.&lt;br/&gt;Disabling version control.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das ausgewählte Versionskontrollsystem &lt;b&gt;{0}&lt;/b&gt; konnte nicht gefunden werden.&lt;br/&gt;Versionskontrolle nicht möglich.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4000"/>
+        <location filename="../Project/Project.py" line="4007"/>
         <source>Lexer Associations</source>
         <translation>Lexerzuordnungen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4000"/>
+        <location filename="../Project/Project.py" line="4007"/>
         <source>Lexer Associations...</source>
         <translation>Lexerzuordnungen...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4004"/>
+        <location filename="../Project/Project.py" line="4011"/>
         <source>Show the project lexer associations (overriding defaults)</source>
         <translation>Zeigt die projektspezifischen Lexerzuordnungen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4006"/>
+        <location filename="../Project/Project.py" line="4013"/>
         <source>&lt;b&gt;Lexer Associations...&lt;/b&gt;&lt;p&gt;This shows a dialog to edit the lexer associations of the project. These associations override the global lexer associations. Lexers are used to highlight the editor text.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lexerzuordnungen&lt;/b&gt;&lt;p&gt;Dies öffnet einen Dialog, um die projektspezifischen Lexerzuordnungen zu bearbeiten. Diese Zuordnungen überschreiben die globalen Lexerzuordnungen. Lexer werden verwendet, um den Editortext einzufärben.&lt;/p&gt;</translation>
     </message>
@@ -51388,52 +51398,52 @@
         <translation>Python 3-Dateien (*.py *.py3);;Python 3-GUI-Dateien (*.pyw *.pyw3);;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1646"/>
+        <location filename="../Project/Project.py" line="1653"/>
         <source>&lt;p&gt;The selected file &lt;b&gt;{0}&lt;/b&gt; could not be added to &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Reason: {2}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die ausgewählte Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht zu &lt;b&gt;{1}&lt;/b&gt; hinzugefügt werden.&lt;/p&gt;&lt;p&gt;Ursache: {2}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="1705"/>
+        <location filename="../Project/Project.py" line="1712"/>
         <source>&lt;p&gt;The target directory &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Zielverzeichnis &lt;b&gt;{0}&lt;/b&gt; konnte nicht erstellt werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2424"/>
+        <location filename="../Project/Project.py" line="2431"/>
         <source>Create main script</source>
         <translation>Hauptskript erzeugen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2424"/>
+        <location filename="../Project/Project.py" line="2431"/>
         <source>&lt;p&gt;The mainscript &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Hauptskript &lt;b&gt;{0}&lt;/b&gt; konnte nicht erzeugt werden.&lt;br/&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4189"/>
+        <location filename="../Project/Project.py" line="4196"/>
         <source>Load Diagram</source>
         <translation>Diagramm laden</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4189"/>
+        <location filename="../Project/Project.py" line="4196"/>
         <source>&amp;Load Diagram...</source>
         <translation>Diagramm &amp;laden...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4193"/>
+        <location filename="../Project/Project.py" line="4200"/>
         <source>Load a diagram from file.</source>
         <translation>Lade ein Diagramm aus einer Datei.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4195"/>
+        <location filename="../Project/Project.py" line="4202"/>
         <source>&lt;b&gt;Load Diagram...&lt;/b&gt;&lt;p&gt;This loads a diagram from file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Diagramm laden...&lt;/b&gt;&lt;p&gt;Dies lädt ein Diagramm aus einer Datei.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="367"/>
+        <location filename="../Project/Project.py" line="370"/>
         <source>&lt;p&gt;The Project type &lt;b&gt;{0}&lt;/b&gt; is already registered.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Projekttyp &lt;b&gt;{0}&lt;/b&gt; ist bereits registriert.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="355"/>
+        <location filename="../Project/Project.py" line="358"/>
         <source>&lt;p&gt;The Project type &lt;b&gt;{0}&lt;/b&gt; is already registered with Programming Language &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Projekttyp &lt;b&gt;{0}&lt;/b&gt; ist bereits für die Programmiersprache &lt;b&gt;{1}&lt;/b&gt; registriert.&lt;/p&gt;</translation>
     </message>
@@ -51448,281 +51458,291 @@
         <translation>PyQt5 Kommandozeile</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4821"/>
+        <location filename="../Project/Project.py" line="4828"/>
         <source>&lt;p&gt;The selected VCS &lt;b&gt;{0}&lt;/b&gt; could not be found. &lt;br/&gt;Reverting override.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das ausgewählte Versionskontrollsystem &lt;b&gt;{0}&lt;/b&gt; konnte nicht gefunden werden.&lt;br/&gt;Ignoriere Übersteuerung.&lt;/p&gt;&lt;p&gt;{1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5558"/>
+        <location filename="../Project/Project.py" line="5565"/>
         <source>&lt;p&gt;The plugin file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt; &lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Plugindatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;br&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4209"/>
+        <location filename="../Project/Project.py" line="4216"/>
         <source>Create an initial PKGLIST file for an eric6 plugin.</source>
         <translation>Erzeugt eine erste PKGLIST-Datei für ein eric6-Plugin.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4211"/>
+        <location filename="../Project/Project.py" line="4218"/>
         <source>&lt;b&gt;Create Package List&lt;/b&gt;&lt;p&gt;This creates an initial list of files to include in an eric6 plugin archive. The list is created from the project file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Erzeuge Paketliste&lt;/b&gt;&lt;p&gt;Dies erzeugt eine erste Liste von Dateien, die in ein eric6-Pluginarchive einbezogen werden sollen. Die Liste wird aus der Projektdatei erzeugt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5408"/>
+        <location filename="../Project/Project.py" line="5415"/>
         <source>&lt;p&gt;The eric6 plugin archive file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die eric6 Plugin Archivdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht erzeugt werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="268"/>
+        <location filename="../Project/Project.py" line="270"/>
         <source>Eric6 Plugin</source>
         <translation>Eric6 Plugin</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2913"/>
+        <location filename="../Project/Project.py" line="2920"/>
         <source>Create project management directory</source>
         <translation>Projektverwaltungsverzeichnis erstellen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="2913"/>
+        <location filename="../Project/Project.py" line="2920"/>
         <source>&lt;p&gt;The project directory &lt;b&gt;{0}&lt;/b&gt; is not writable.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Projektverzeichnis &lt;b&gt;{0}&lt;/b&gt; ist nicht beschreibbar.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Alt+Ctrl+P</source>
         <comment>Project|Search Project File</comment>
         <translation>Alt+Ctrl+P</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3945"/>
+        <location filename="../Project/Project.py" line="3952"/>
         <source>Search for a file in the project list of files.</source>
         <translation>Suche nach einer Datei in der Liste der Projektdateien.</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3947"/>
+        <location filename="../Project/Project.py" line="3954"/>
         <source>&lt;b&gt;Search Project File&lt;/b&gt;&lt;p&gt;This searches for a file in the project list of files.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Projektdatei suchen&lt;/b&gt;&lt;p&gt;Dies sucht nach einer Datei in der Liste der Projektdateien.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Search Project File</source>
         <translation>Projektdatei suchen</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3939"/>
+        <location filename="../Project/Project.py" line="3946"/>
         <source>Search Project File...</source>
         <translation>Projektdatei suchen...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5340"/>
+        <location filename="../Project/Project.py" line="5347"/>
         <source>Create Plugin Archives</source>
         <translation>Erzeuge Plugin Archive</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4220"/>
-        <source>Create Plugin &amp;Archives</source>
-        <translation>Erzeuge Plugin &amp;Archive</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4225"/>
-        <source>Create eric6 plugin archive files.</source>
-        <translation>Erzeugt eric6 Plugin Archivdateien.</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4227"/>
+        <source>Create Plugin &amp;Archives</source>
+        <translation>Erzeuge Plugin &amp;Archive</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4232"/>
+        <source>Create eric6 plugin archive files.</source>
+        <translation>Erzeugt eric6 Plugin Archivdateien.</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4234"/>
         <source>&lt;b&gt;Create Plugin Archives&lt;/b&gt;&lt;p&gt;This creates eric6 plugin archive files using the list of files given in a PKGLIST* file. The archive name is built from the main script name if not designated in the package list file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Erzeuge Pluginarchive&lt;/b&gt;&lt;p&gt;Dies erzeugt eric6-Pluginarchivdateien mit den Dateien, die in einer PKGLIST*-Datei angegeben wurden. Der Archivname wird aus dem Namen des Hauptskriptes generiert, falls er nicht in der Paketlistendatei angegeben ist.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4237"/>
+        <location filename="../Project/Project.py" line="4244"/>
         <source>Create Plugin Archives (Snapshot)</source>
         <translation>Erzeuge Plugin Archive (Snapshot)</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="4237"/>
-        <source>Create Plugin Archives (&amp;Snapshot)</source>
-        <translation>Erzeuge Plugin Archive (&amp;Snapshot)</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="4242"/>
-        <source>Create eric6 plugin archive files (snapshot releases).</source>
-        <translation>Erzeugt eric6 Plugin Archivdateien (Snapshot Releases).</translation>
-    </message>
-    <message>
         <location filename="../Project/Project.py" line="4244"/>
+        <source>Create Plugin Archives (&amp;Snapshot)</source>
+        <translation>Erzeuge Plugin Archive (&amp;Snapshot)</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4249"/>
+        <source>Create eric6 plugin archive files (snapshot releases).</source>
+        <translation>Erzeugt eric6 Plugin Archivdateien (Snapshot Releases).</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="4251"/>
         <source>&lt;b&gt;Create Plugin Archives (Snapshot)&lt;/b&gt;&lt;p&gt;This creates eric6 plugin archive files using the list of files given in the PKGLIST* file. The archive name is built from the main script name if not designated in the package list file. The version entry of the main script is modified to reflect a snapshot release.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Erzeuge Pluginarchive (Snapshot)&lt;/b&gt;&lt;p&gt;Dies erzeugt eric6-Pluginarchivdateien mit den Dateien, die in der PKGLIST*-Datei angegeben wurden. Der Archivname wird aus dem Namen des Hauptskriptes generiert, falls er nicht in der Paketlistendatei angegeben ist. Der Versionseintrag des Hauptskriptes wird verändert, um ein Snapshot Release anzuzeigen.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5318"/>
+        <location filename="../Project/Project.py" line="5325"/>
         <source>Select package lists:</source>
         <translation>Wähle Paketlisten:</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5336"/>
+        <location filename="../Project/Project.py" line="5343"/>
         <source>Creating plugin archives...</source>
         <translation>Erzeuge Plugin Archive...</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5336"/>
+        <location filename="../Project/Project.py" line="5343"/>
         <source>Abort</source>
         <translation>Abbruch</translation>
     </message>
     <message>
+        <location filename="../Project/Project.py" line="5343"/>
+        <source>%v/%m Archives</source>
+        <translation>%v/%m Archive</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5359"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geladen werden.&lt;br/&gt;Grund: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5470"/>
+        <source>&lt;p&gt;The eric6 plugin archive files were created with some errors.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Die eric6 Plugin Archivdateien wurden mit einigen Fehlern erzeugt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Project/Project.py" line="5473"/>
+        <source>&lt;p&gt;The eric6 plugin archive files were created successfully.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Die eric6 Plugin Archivdateien wurden erfolgreich erzeugt.&lt;/p&gt;</translation>
+    </message>
+    <message>
         <location filename="../Project/Project.py" line="5336"/>
-        <source>%v/%m Archives</source>
-        <translation>%v/%m Archive</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5352"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geladen werden.&lt;br/&gt;Grund: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5463"/>
-        <source>&lt;p&gt;The eric6 plugin archive files were created with some errors.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die eric6 Plugin Archivdateien wurden mit einigen Fehlern erzeugt.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5466"/>
-        <source>&lt;p&gt;The eric6 plugin archive files were created successfully.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die eric6 Plugin Archivdateien wurden erfolgreich erzeugt.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Project/Project.py" line="5329"/>
         <source>&lt;p&gt;No package list files (PKGLIST*) available or selected. Aborting...&lt;/p&gt;</source>
         <translation>&lt;p&gt;Keine Paketlistendateien (PKGLIST*) verfügbar oder ausgewählt. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="5380"/>
+        <location filename="../Project/Project.py" line="5387"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; is not ready yet.&lt;/p&gt;&lt;p&gt;Please rework it and delete the&apos;; initial_list&apos; line of the header.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; ist noch nicht bereit.&lt;/p&gt;&lt;p&gt;Bitte überarbeite sie und löschen die Zeile &apos;; initial_list&apos; des Dateikopfes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/Project.py" line="3930"/>
+        <location filename="../Project/Project.py" line="3937"/>
         <source>&lt;b&gt;Search new files...&lt;/b&gt;&lt;p&gt;This searches for new files (sources, *.ui, *.idl, *.proto) in the project directory and registered subdirectories.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Neue Dateien suchen...&lt;/b&gt;&lt;p&gt;Dies sucht im Projektverzeichnis und in registrierten Unterverzeichnissen nach neuen Dateien (Quellen, *.ui, *.idl, *.proto).&lt;/p&gt;</translation>
     </message