Changed to use the virtual environment manager as of eric 18.07. release-2.4.0

Sat, 23 Jun 2018 17:45:53 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Jun 2018 17:45:53 +0200
changeset 114
4de6dbce4dd6
parent 113
10364f51ba54
child 115
54fadc25c04a

Changed to use the virtual environment manager as of eric 18.07.

ChangeLog file | annotate | diff | comparison | revisions
PluginProjectPyramid.py file | annotate | diff | comparison | revisions
PluginProjectPyramid.zip file | annotate | diff | comparison | revisions
PluginPyramid.e4p file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.py file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.ui file | annotate | diff | comparison | revisions
ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html file | annotate | diff | comparison | revisions
ProjectPyramid/Project.py file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.qm file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.ts file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_en.ts file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_es.ts file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_ru.ts file | annotate | diff | comparison | revisions
--- a/ChangeLog	Sat Mar 31 13:41:00 2018 +0200
+++ b/ChangeLog	Sat Jun 23 17:45:53 2018 +0200
@@ -1,5 +1,9 @@
 ChangeLog
 ---------
+Version 2.4.0:
+- bug fixes
+- changed to use the virtual environment manager as of eric 18.07
+
 Version 2.3.5:
 - bug fixes
 
--- a/PluginProjectPyramid.py	Sat Mar 31 13:41:00 2018 +0200
+++ b/PluginProjectPyramid.py	Sat Jun 23 17:45:53 2018 +0200
@@ -28,7 +28,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "2.3.5"
+version = "2.4.0"
 className = "ProjectPyramidPlugin"
 packageName = "ProjectPyramid"
 shortDescription = "Project support for Pyramid projects."
@@ -120,13 +120,21 @@
         self.__initialize()
         
         self.__defaults = {
+            "VirtualEnvironmentNamePy2": "",
+            "VirtualEnvironmentNamePy3": "",
+            
+            # these are obsolete and kept for use with eric <18.07
             "VirtualEnvironmentPy2": "",
             "VirtualEnvironmentPy3": "",
+            
             "Python2ConsoleType": "python",
             "Python3ConsoleType": "python",
+            
             "PyramidDocUrl": "http://docs.pylonsproject.org/projects/"
                              "pyramid/en/latest/index.html",
+            
             "TranslationsEditor": "",
+            
             "UseExternalBrowser": False,
         }
         if isWindowsPlatform():
@@ -363,7 +371,8 @@
         Preferences.Prefs.settings.setValue(
             self.PreferencesKey + "/" + key, value)
         
-        if key in ["VirtualEnvironmentPy2", "VirtualEnvironmentPy3"]:
+        if key in ["VirtualEnvironmentPy2", "VirtualEnvironmentPy3",
+                   "VirtualEnvironmentNamePy2", "VirtualEnvironmentNamePy3"]:
             self.__reregisterProjectType()
         elif key == "TranslationsEditor":
             if self.__object:
Binary file PluginProjectPyramid.zip has changed
--- a/PluginPyramid.e4p	Sat Mar 31 13:41:00 2018 +0200
+++ b/PluginPyramid.e4p	Sat Jun 23 17:45:53 2018 +0200
@@ -253,6 +253,15 @@
         <value>
           <dict>
             <key>
+              <string>BlankLines</string>
+            </key>
+            <value>
+              <tuple>
+                <int>2</int>
+                <int>1</int>
+              </tuple>
+            </value>
+            <key>
               <string>BuiltinsChecker</string>
             </key>
             <value>
@@ -311,7 +320,7 @@
               <string>ExcludeMessages</string>
             </key>
             <value>
-              <string>C101, E265, E266, E305, E402, M811, N802, N803, N807, N808, N821, W293, M201</string>
+              <string>C101, E265, E266, E305, E402, M201, M811, N802, N803, N807, N808, N821, W293, W504</string>
             </value>
             <key>
               <string>FixCodes</string>
--- a/ProjectPyramid/ConfigurationPage/PyramidPage.py	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.py	Sat Jun 23 17:45:53 2018 +0200
@@ -13,6 +13,7 @@
 
 from E5Gui.E5Completers import E5DirCompleter
 from E5Gui import E5FileDialog
+from E5Gui.E5Application import e5App
 
 from Preferences.ConfigurationPages.ConfigurationPageBase import \
     ConfigurationPageBase
@@ -71,6 +72,26 @@
         self.py3ShellCombo.addItem(self.tr("IPython"), "ipython")
         self.py3ShellCombo.addItem(self.tr("bpython"), "bpython")
         
+        try:
+            venvManager = e5App().getObject("VirtualEnvManager")
+            
+            self.py2VenvNameComboBox.addItems(
+                [""] + sorted(venvManager.getVirtualenvNamesForVariant(2)))
+            self.py3VenvNameComboBox.addItems(
+                [""] + sorted(venvManager.getVirtualenvNamesForVariant(3)))
+            
+            self.pyramidVirtualEnvPy2Group.hide()
+            self.pyramidVirtualEnvPy3Group.hide()
+            
+            self.__hasVirtualEnvironmentManager = True
+        except KeyError:
+            venvManager = None
+            
+            self.pyramidVirtualEnvironmentPy2Group.hide()
+            self.pyramidVirtualEnvironmentPy3Group.hide()
+            
+            self.__hasVirtualEnvironmentManager = False
+        
         # set initial values
         self.consoleCommandCombo.setEditText(
             self.__plugin.getPreferences("ConsoleCommand"))
@@ -78,13 +99,31 @@
         self.externalBrowserCheckBox.setChecked(
             self.__plugin.getPreferences("UseExternalBrowser"))
         
-        self.virtualEnvPy2Edit.setText(
-            self.__plugin.getPreferences("VirtualEnvironmentPy2"))
-        self.virtualEnvPy3Edit.setText(
-            self.__plugin.getPreferences("VirtualEnvironmentPy3"))
-        
+        if venvManager:
+            venvName = self.__plugin.getPreferences(
+                "VirtualEnvironmentNamePy2")
+            if venvName:
+                index = self.py2VenvNameComboBox.findText(venvName)
+                if index < 0:
+                    index = 0
+                self.py2VenvNameComboBox.setCurrentIndex(index)
+        else:
+            self.virtualEnvPy2Edit.setText(
+                self.__plugin.getPreferences("VirtualEnvironmentPy2"))
         self.py2ShellCombo.setCurrentIndex(self.py2ShellCombo.findData(
             self.__plugin.getPreferences("Python2ConsoleType")))
+        
+        if venvManager:
+            venvName = self.__plugin.getPreferences(
+                "VirtualEnvironmentNamePy3")
+            if venvName:
+                index = self.py3VenvNameComboBox.findText(venvName)
+                if index < 0:
+                    index = 0
+                self.py3VenvNameComboBox.setCurrentIndex(index)
+        else:
+            self.virtualEnvPy3Edit.setText(
+                self.__plugin.getPreferences("VirtualEnvironmentPy3"))
         self.py3ShellCombo.setCurrentIndex(self.py3ShellCombo.findData(
             self.__plugin.getPreferences("Python3ConsoleType")))
         
@@ -104,14 +143,24 @@
         self.__plugin.setPreferences(
             "UseExternalBrowser", self.externalBrowserCheckBox.isChecked())
         
-        self.__plugin.setPreferences(
-            "VirtualEnvironmentPy2", self.virtualEnvPy2Edit.text())
-        self.__plugin.setPreferences(
-            "VirtualEnvironmentPy3", self.virtualEnvPy3Edit.text())
-        
+        if self.__hasVirtualEnvironmentManager:
+            self.__plugin.setPreferences(
+                "VirtualEnvironmentNamePy2",
+                self.py2VenvNameComboBox.currentText())
+        else:
+            self.__plugin.setPreferences(
+                "VirtualEnvironmentPy2", self.virtualEnvPy2Edit.text())
         self.__plugin.setPreferences(
             "Python2ConsoleType",
             self.py2ShellCombo.itemData(self.py2ShellCombo.currentIndex()))
+        
+        if self.__hasVirtualEnvironmentManager:
+            self.__plugin.setPreferences(
+                "VirtualEnvironmentNamePy3",
+                self.py3VenvNameComboBox.currentText())
+        else:
+            self.__plugin.setPreferences(
+                "VirtualEnvironmentPy3", self.virtualEnvPy3Edit.text())
         self.__plugin.setPreferences(
             "Python3ConsoleType",
             self.py3ShellCombo.itemData(self.py3ShellCombo.currentIndex()))
--- a/ProjectPyramid/ConfigurationPage/PyramidPage.ui	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.ui	Sat Jun 23 17:45:53 2018 +0200
@@ -7,10 +7,10 @@
     <x>0</x>
     <y>0</y>
     <width>528</width>
-    <height>1006</height>
+    <height>1265</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -97,8 +97,8 @@
      <property name="title">
       <string>Python 3</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_5">
-      <item row="0" column="0" colspan="2">
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
        <widget class="QGroupBox" name="pyramidVirtualEnvPy3Group">
         <property name="title">
          <string>Pyramid Virtual Environment</string>
@@ -133,25 +133,51 @@
         </layout>
        </widget>
       </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="label_9">
-        <property name="text">
-         <string>Pyramid Python Console:</string>
+      <item>
+       <widget class="QGroupBox" name="pyramidVirtualEnvironmentPy3Group">
+        <property name="title">
+         <string>Pyramid Virtual Environment</string>
         </property>
+        <layout class="QVBoxLayout" name="verticalLayout_6">
+         <item>
+          <widget class="QLabel" name="label_13">
+           <property name="text">
+            <string>Select the Virtual Environment to be used with Pyramid</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="py3VenvNameComboBox"/>
+         </item>
+        </layout>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="QComboBox" name="py3ShellCombo">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="toolTip">
-         <string>Select the Python console type</string>
-        </property>
-       </widget>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_3">
+        <item>
+         <widget class="QLabel" name="label_9">
+          <property name="text">
+           <string>Pyramid Python Console:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="py3ShellCombo">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Select the Python console type</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
@@ -161,8 +187,8 @@
      <property name="title">
       <string>Python 2</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_3">
-      <item row="0" column="0" colspan="2">
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
        <widget class="QGroupBox" name="pyramidVirtualEnvPy2Group">
         <property name="title">
          <string>Pyramid Virtual Environment</string>
@@ -197,25 +223,51 @@
         </layout>
        </widget>
       </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="label_8">
-        <property name="text">
-         <string>Pyramid Python Console:</string>
+      <item>
+       <widget class="QGroupBox" name="pyramidVirtualEnvironmentPy2Group">
+        <property name="title">
+         <string>Pyramid Virtual Environment</string>
         </property>
+        <layout class="QVBoxLayout" name="verticalLayout_4">
+         <item>
+          <widget class="QLabel" name="label_12">
+           <property name="text">
+            <string>Select the Virtual Environment to be used with Pyramid</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="py2VenvNameComboBox"/>
+         </item>
+        </layout>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="QComboBox" name="py2ShellCombo">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="toolTip">
-         <string>Select the Python console type</string>
-        </property>
-       </widget>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QLabel" name="label_8">
+          <property name="text">
+           <string>Pyramid Python Console:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="py2ShellCombo">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Select the Python console type</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
@@ -305,9 +357,11 @@
   <tabstop>externalBrowserCheckBox</tabstop>
   <tabstop>virtualEnvPy3Edit</tabstop>
   <tabstop>virtualEnvPy3Button</tabstop>
+  <tabstop>py3VenvNameComboBox</tabstop>
   <tabstop>py3ShellCombo</tabstop>
   <tabstop>virtualEnvPy2Edit</tabstop>
   <tabstop>virtualEnvPy2Button</tabstop>
+  <tabstop>py2VenvNameComboBox</tabstop>
   <tabstop>py2ShellCombo</tabstop>
   <tabstop>urlEdit</tabstop>
   <tabstop>urlResetButton</tabstop>
--- a/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html	Sat Jun 23 17:45:53 2018 +0200
@@ -82,7 +82,7 @@
 <td>Private method to get the path of the debugger environment.</td>
 </tr><tr>
 <td><a href="#Project.__getExecutablePaths">__getExecutablePaths</a></td>
-<td>Private method to build all full path of an executable file from the environment.</td>
+<td>Private method to build all full paths of an executable file from the environment.</td>
 </tr><tr>
 <td><a href="#Project.__getInitDbCommand">__getInitDbCommand</a></td>
 <td>Private method to create the path to the initialization script.</td>
@@ -96,6 +96,9 @@
 <td><a href="#Project.__initializeDatabase">__initializeDatabase</a></td>
 <td>Private slot to initialize the database of the Pyramid project.</td>
 </tr><tr>
+<td><a href="#Project.__isSuitableForVariant">__isSuitableForVariant</a></td>
+<td>Private method to test, if a detected command file is suitable for the given Python variant.</td>
+</tr><tr>
 <td><a href="#Project.__normalizeList">__normalizeList</a></td>
 <td>Private method to normalize a list of file names.</td>
 </tr><tr>
@@ -286,7 +289,7 @@
 <h4>Project.__getExecutablePaths</h4>
 <b>__getExecutablePaths</b>(<i>file</i>)
 <p>
-        Private method to build all full path of an executable file from
+        Private method to build all full paths of an executable file from
         the environment.
 </p><dl>
 <dt><i>file</i></dt>
@@ -346,7 +349,31 @@
 <b>__initializeDatabase</b>(<i></i>)
 <p>
         Private slot to initialize the database of the Pyramid project.
-</p><a NAME="Project.__normalizeList" ID="Project.__normalizeList"></a>
+</p><a NAME="Project.__isSuitableForVariant" ID="Project.__isSuitableForVariant"></a>
+<h4>Project.__isSuitableForVariant</h4>
+<b>__isSuitableForVariant</b>(<i>variant, line0</i>)
+<p>
+        Private method to test, if a detected command file is suitable for the
+        given Python variant.
+</p><dl>
+<dt><i>variant</i> (str (one of Python2 or Python3))</dt>
+<dd>
+Python variant to test for
+</dd><dt><i>line0</i> (str)</dt>
+<dd>
+first line of the executable
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a suitable command
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="Project.__normalizeList" ID="Project.__normalizeList"></a>
 <h4>Project.__normalizeList</h4>
 <b>__normalizeList</b>(<i>filenames</i>)
 <p>
--- a/ProjectPyramid/Project.py	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/Project.py	Sat Jun 23 17:45:53 2018 +0200
@@ -108,6 +108,10 @@
         self.__plugin = plugin
         self.__ui = parent
         self.__e5project = e5App().getObject("Project")
+        try:
+            self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
+        except KeyError:
+            self.__virtualEnvManager = None
         self.__hooksInstalled = False
         
         self.__menus = {}   # dictionary with references to menus
@@ -569,7 +573,7 @@
     
     def __getExecutablePaths(self, file):
         """
-        Private method to build all full path of an executable file from
+        Private method to build all full paths of an executable file from
         the environment.
         
         @param file filename of the executable (string)
@@ -623,27 +627,50 @@
                     if fullCmd != cmd:
                         variants.append(variant)
                 else:
-                    try:
-                        fullCmds = Utilities.getExecutablePaths(cmd)
-                    except AttributeError:
-                        fullCmds = self.__getExecutablePaths(cmd)
-                    for fullCmd in fullCmds:
+                    if cmd:
                         try:
-                            f = open(fullCmd, 'r', encoding='utf-8')
-                            l0 = f.readline()
-                            f.close()
-                        except (IOError, OSError):
-                            l0 = ""
-                        if variant.lower() in l0.lower() or \
-                            "{0}.".format(variant[-1]) in l0 or \
-                            (variant == "Python2" and
-                             "python3" not in l0.lower() and
-                             "python" in l0.lower()):
-                            variants.append(variant)
-                            break
+                            fullCmds = Utilities.getExecutablePaths(cmd)
+                        except AttributeError:
+                            fullCmds = self.__getExecutablePaths(cmd)
+                        for fullCmd in fullCmds:
+                            try:
+                                f = open(fullCmd, 'r', encoding='utf-8')
+                                l0 = f.readline()
+                                f.close()
+                            except (IOError, OSError):
+                                l0 = ""
+                            if self.__isSuitableForVariant(variant, l0):
+                                variants.append(variant)
+                                break
         
         return variants
     
+    def __isSuitableForVariant(self, variant, line0):
+        """
+        Private method to test, if a detected command file is suitable for the
+        given Python variant.
+        
+        @param variant Python variant to test for
+        @type str (one of Python2 or Python3)
+        @param line0 first line of the executable
+        @type str
+        @return flag indicating a suitable command
+        @rtype bool
+        """
+        assert variant in ("Python2", "Python3")
+        
+        l0 = line0.lower()
+        ok = (variant.lower() in l0 or
+              "{0}.".format(variant[-1]) in l0)
+        if variant == "Python2":
+            ok |= "python3" not in l0 and "python" in l0
+            ok |= "pypy2" in l0
+            ok |= "pypy3" not in l0 and "pypy" in l0
+        else:
+            ok |= "pypy3" in l0
+        
+        return ok
+    
     def __getVirtualEnvironment(self, language=""):
         """
         Private method to get the path of the virtual environment.
@@ -654,12 +681,34 @@
         """
         if not language:
             language = self.__e5project.getProjectLanguage()
-        if language == "Python3":
-            virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy3")
-        elif language == "Python2":
-            virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy2")
+        if self.__virtualEnvManager:
+            if language == "Python3":
+                venvName = self.__plugin.getPreferences(
+                    "VirtualEnvironmentNamePy3")
+            elif language == "Python2":
+                venvName = self.__plugin.getPreferences(
+                    "VirtualEnvironmentNamePy2")
+            else:
+                venvName = ""
+            if venvName:
+                virtEnv = self.__virtualEnvManager.getVirtualenvDirectory(
+                    venvName)
+                if not virtEnv:
+                    virtEnv = os.path.dirname(
+                        self.__virtualEnvManager.getVirtualenvInterpreter(
+                            venvName))
+                    if virtEnv.endswith(("Scripts", "bin")):
+                        virtEnv = os.path.dirname(virtEnv)
+            else:
+                virtEnv = ""
         else:
-            virtEnv = ""
+            # backward compatibility
+            if language == "Python3":
+                virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy3")
+            elif language == "Python2":
+                virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy2")
+            else:
+                virtEnv = ""
         if virtEnv and not os.path.exists(virtEnv):
             virtEnv = ""
         return virtEnv
@@ -674,23 +723,40 @@
         """
         if not language:
             language = self.__e5project.getProjectLanguage()
-        if language == "Python3":
-            debugEnv = Preferences.getDebugger("Python3Interpreter")
-            if not debugEnv and sys.version_info[0] == 3:
-                debugEnv = sys.executable
-        elif language == "Python2":
-            debugEnv = Preferences.getDebugger("PythonInterpreter")
-            if not debugEnv and sys.version_info[0] == 2:
-                debugEnv = sys.executable
+        if self.__virtualEnvManager:
+            debugEnv = self.__getVirtualEnvironment(language)
+            if not debugEnv:
+                if language == "Python3":
+                    venvName = Preferences.getDebugger("Python3VirtualEnv")
+                elif language == "Python2":
+                    venvName = Preferences.getDebugger("Python2VirtualEnv")
+                else:
+                    venvName = ""
+                
+                if venvName:
+                    debugEnv = self.__virtualEnvManager.getVirtualenvDirectory(
+                        venvName)
+                else:
+                    debugEnv = ""
         else:
-            debugEnv = sys.executable
-        debugEnv = os.path.dirname(debugEnv)
-        if debugEnv and not os.path.exists(debugEnv):
-            if (language == "Python3" and sys.version_info[0] == 3) or \
-               (language == "Python2" and sys.version_info[0] == 2):
-                debugEnv = sys.exec_prefix
+            # backward compatibility
+            if language == "Python3":
+                debugEnv = Preferences.getDebugger("Python3Interpreter")
+                if not debugEnv and sys.version_info[0] == 3:
+                    debugEnv = sys.executable
+            elif language == "Python2":
+                debugEnv = Preferences.getDebugger("PythonInterpreter")
+                if not debugEnv and sys.version_info[0] == 2:
+                    debugEnv = sys.executable
             else:
-                debugEnv = ""
+                debugEnv = sys.executable
+            debugEnv = os.path.dirname(debugEnv)
+            if debugEnv and not os.path.exists(debugEnv):
+                if (language == "Python3" and sys.version_info[0] == 3) or \
+                   (language == "Python2" and sys.version_info[0] == 2):
+                    debugEnv = sys.exec_prefix
+                else:
+                    debugEnv = ""
         return debugEnv
 
     def getPyramidCommand(self, cmd, language=""):
@@ -702,6 +768,9 @@
             for (string, one of '', 'Python2' or 'Python3')
         @return full pyramid command (string)
         """
+        if not language:
+            language = self.__e5project.getProjectLanguage()
+        
         virtualEnv = self.__getVirtualEnvironment(language)
         if isWindowsPlatform() and not virtualEnv:
             virtualEnv = self.__getDebugEnvironment(language)
@@ -733,52 +802,74 @@
         @return python command (string)
         """
         language = self.__e5project.getProjectLanguage()
-        virtualEnv = self.__getVirtualEnvironment()
-        if isWindowsPlatform():
-            pythonExeList = ["python.exe", "pypy.exe"]
-            if not virtualEnv:
-                virtualEnv = self.__getDebugEnvironment(language)
-            for pythonExe in pythonExeList:
-                for python in [
-                    os.path.join(virtualEnv, "Scripts", pythonExe),
-                    os.path.join(virtualEnv, "bin", pythonExe),
-                    os.path.join(virtualEnv, pythonExe)
-                ]:
-                    if os.path.exists(python):
-                        break
-                else:
-                    python = ""
-                
-                if python:
-                    break
+        if self.__virtualEnvManager:
+            if language == "Python3":
+                venvName = self.__plugin.getPreferences(
+                    "VirtualEnvironmentNamePy3")
+                if not venvName:
+                    # if none configured, use the global one
+                    venvName = Preferences.getDebugger("Python3VirtualEnv")
+            elif language == "Python2":
+                venvName = self.__plugin.getPreferences(
+                    "VirtualEnvironmentNamePy2")
+                if not venvName:
+                    # if none configured, use the global one
+                    venvName = Preferences.getDebugger("Python2VirtualEnv")
+            else:
+                venvName = ""
+            if venvName:
+                python = self.__virtualEnvManager.getVirtualenvInterpreter(
+                    venvName)
             else:
                 python = ""
         else:
-            if language == "Python3":
-                pythonExeList = ["python3", "pypy3"]
-            elif language == "Python2":
-                pythonExeList = ["python2", "pypy2"]
-            if not virtualEnv:
-                virtualEnv = self.__getDebugEnvironment(language)
-            
-            for pythonExe in pythonExeList:
-                for python in [
-                    os.path.join(virtualEnv, "bin", pythonExe),
-                    # omit the version character
-                    os.path.join(virtualEnv, "bin", pythonExe)[:-1],
-                    os.path.join(virtualEnv, pythonExe),
-                    # omit the version character
-                    os.path.join(virtualEnv, pythonExe)[:-1],
-                ]:
-                    if os.path.exists(python):
+            # backward compatibility
+            virtualEnv = self.__getVirtualEnvironment()
+            if isWindowsPlatform():
+                pythonExeList = ["python.exe", "pypy.exe"]
+                if not virtualEnv:
+                    virtualEnv = self.__getDebugEnvironment(language)
+                for pythonExe in pythonExeList:
+                    for python in [
+                        os.path.join(virtualEnv, "Scripts", pythonExe),
+                        os.path.join(virtualEnv, "bin", pythonExe),
+                        os.path.join(virtualEnv, pythonExe)
+                    ]:
+                        if os.path.exists(python):
+                            break
+                    else:
+                        python = ""
+                    
+                    if python:
                         break
                 else:
                     python = ""
-            
-                if python:
-                    break
             else:
-                python = ""
+                if language == "Python3":
+                    pythonExeList = ["python3", "pypy3"]
+                elif language == "Python2":
+                    pythonExeList = ["python2", "pypy2"]
+                if not virtualEnv:
+                    virtualEnv = self.__getDebugEnvironment(language)
+                
+                for pythonExe in pythonExeList:
+                    for python in [
+                        os.path.join(virtualEnv, "bin", pythonExe),
+                        # omit the version character
+                        os.path.join(virtualEnv, "bin", pythonExe)[:-1],
+                        os.path.join(virtualEnv, pythonExe),
+                        # omit the version character
+                        os.path.join(virtualEnv, pythonExe)[:-1],
+                    ]:
+                        if os.path.exists(python):
+                            break
+                    else:
+                        python = ""
+                
+                    if python:
+                        break
+                else:
+                    python = ""
         
         return python
     
Binary file ProjectPyramid/i18n/pyramid_de.qm has changed
--- a/ProjectPyramid/i18n/pyramid_de.ts	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/i18n/pyramid_de.ts	Sat Jun 23 17:45:53 2018 +0200
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
+<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="">
 <context>
     <name>CreateParametersDialog</name>
     <message>
@@ -154,480 +153,480 @@
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project.py" line="120"/>
+        <location filename="../Project.py" line="130"/>
         <source>Current Pyramid Project</source>
         <translation>Aktuelles Pyramid Projekt</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="125"/>
+        <location filename="../Project.py" line="135"/>
         <source>Selects the current Pyramid project</source>
         <translation>Wählt das aktuelle Pyramid Projekt aus</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="127"/>
+        <location filename="../Project.py" line="137"/>
         <source>&lt;b&gt;Current Pyramid Project&lt;/b&gt;&lt;p&gt;Selects the Pyramid project. Used for multi-project Pyramid projects to switch between the projects.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Aktuelles Pyramid Projekt&lt;/b&gt;&lt;p&gt;Wählt das Pyramid Projekt aus. Wird bei Multiprojekt Pyramid Projekten eingesetzt, um zwischen den Projekten umzuschalten.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="912"/>
+        <location filename="../Project.py" line="1017"/>
         <source>Create Pyramid Project</source>
         <translation>Pyramid Projekt erstellen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="139"/>
+        <location filename="../Project.py" line="149"/>
         <source>Create Pyramid &amp;Project</source>
         <translation>Pyramid &amp;Projekt erstellen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="144"/>
+        <location filename="../Project.py" line="154"/>
         <source>Creates a new Pyramid project</source>
         <translation>Erstellt ein neues Pyramid Projekt</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="146"/>
+        <location filename="../Project.py" line="156"/>
         <source>&lt;b&gt;Create Pyramid Project&lt;/b&gt;&lt;p&gt;Creates a new Pyramid project using &quot;pcreate&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Pyramid Projekt erstellen&lt;/b&gt;&lt;p&gt;Erstellt ein neues Pyramid Projekt mittels &quot;pcreate&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1084"/>
+        <location filename="../Project.py" line="1189"/>
         <source>Run Server</source>
         <translation>Server starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="157"/>
+        <location filename="../Project.py" line="167"/>
         <source>Run &amp;Server</source>
         <translation>&amp;Server starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="162"/>
+        <location filename="../Project.py" line="172"/>
         <source>Starts the Pyramid Web server</source>
         <translation>Startet den Pyramid Web Server</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="164"/>
+        <location filename="../Project.py" line="174"/>
         <source>&lt;b&gt;Run Server&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server using &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Server starten&lt;/b&gt;&lt;p&gt;Startet den Pyramid Web Server mittels &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with Logging</source>
         <translation>Server mit Logging starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with &amp;Logging</source>
         <translation>Server mit &amp;Logging starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="177"/>
+        <location filename="../Project.py" line="187"/>
         <source>Starts the Pyramid Web server with logging</source>
         <translation>Startet den Pyramid Web Server mit Logging</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="179"/>
+        <location filename="../Project.py" line="189"/>
         <source>&lt;b&gt;Run Server with Logging&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server with logging using &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Server mit Logging starten&lt;/b&gt;&lt;p&gt;Startet den Pyramid Web Server mit Logging mittels &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Run Web-Browser</source>
         <translation>Web-Browser starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="187"/>
+        <location filename="../Project.py" line="197"/>
         <source>Run &amp;Web-Browser</source>
         <translation>Web-&amp;Browser starten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="192"/>
+        <location filename="../Project.py" line="202"/>
         <source>Starts the default Web-Browser with the URL of the Pyramid Web server</source>
         <translation>Startet den Standard Web-Browser mit der URL des Pyramid Web-Servers</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="195"/>
+        <location filename="../Project.py" line="205"/>
         <source>&lt;b&gt;Run Web-Browser&lt;/b&gt;&lt;p&gt;Starts the default Web-Browser with the URL of the Pyramid Web server.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Web-Browser starten&lt;/b&gt;&lt;p&gt;Startet den Standard Web-Browser mit der URL des Pyramid Web-Servers.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1176"/>
+        <location filename="../Project.py" line="1281"/>
         <source>Start Pyramid Python Console</source>
         <translation>Starte Pyramid Python Konsole</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="203"/>
+        <location filename="../Project.py" line="213"/>
         <source>Start Pyramid &amp;Python Console</source>
         <translation>Starte Pyramid &amp;Python Konsole</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="208"/>
+        <location filename="../Project.py" line="218"/>
         <source>Starts an interactive Python interpreter</source>
         <translation>Startet einen interaktiven Python Interpreter</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="210"/>
+        <location filename="../Project.py" line="220"/>
         <source>&lt;b&gt;Start Pyramid Python Console&lt;/b&gt;&lt;p&gt;Starts an interactive Python interpreter.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Starte Pyramid Python Konsole&lt;/b&gt;&lt;p&gt;Startet einen interaktiven Python Interpreter&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1215"/>
+        <location filename="../Project.py" line="1320"/>
         <source>Setup Development Environment</source>
         <translation>Entwicklungsumgebung einrichten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="221"/>
+        <location filename="../Project.py" line="231"/>
         <source>Setup &amp;Development Environment</source>
         <translation>Entwicklungs&amp;umgebung einrichten</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="226"/>
+        <location filename="../Project.py" line="236"/>
         <source>Setup the Pyramid project in development mode</source>
         <translation>Richtet das Pyramid Projekt im Entwicklungsmodus ein</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="228"/>
+        <location filename="../Project.py" line="238"/>
         <source>&lt;b&gt;Setup Development Environment&lt;/b&gt;&lt;p&gt;Setup the Pyramid project in development mode using &quot;python setup.py develop&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Entwicklungsumgebung einrichten&lt;/b&gt;&lt;p&gt;Richtet das Pyramid Projekt im Entwicklungsmodus mittels &quot;python setup.py develop&quot; ein.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1308"/>
+        <location filename="../Project.py" line="1413"/>
         <source>Initialize Database</source>
         <translation>Datenbank initialisieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="240"/>
+        <location filename="../Project.py" line="250"/>
         <source>Initialize &amp;Database</source>
         <translation>&amp;Datenbank initialisieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="245"/>
+        <location filename="../Project.py" line="255"/>
         <source>Initializes (or re-initializes) the database of the current Pyramid project</source>
         <translation>Initialisiert (oder reinitialisiert) die Datenbank des aktuellen Pyramid Projektes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="248"/>
+        <location filename="../Project.py" line="258"/>
         <source>&lt;b&gt;Initialize Database&lt;/b&gt;&lt;p&gt;Initializes (or re-initializes) the database of the current Pyramid project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Datenbank initialisieren&lt;/b&gt;&lt;p&gt;Initialisiert (oder reinitialisiert) die Datenbank des aktuellen Pyramid Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Show Matching Views</source>
         <translation>Passende Ansichten anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="260"/>
+        <location filename="../Project.py" line="270"/>
         <source>Show Matching &amp;Views</source>
         <translation>Passende &amp;Ansichten anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="265"/>
+        <location filename="../Project.py" line="275"/>
         <source>Show views matching a given URL</source>
         <translation>Zeigt Ansichten zu einer gegebenen URL an</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="267"/>
+        <location filename="../Project.py" line="277"/>
         <source>&lt;b&gt;Show Matching Views&lt;/b&gt;&lt;p&gt;Show views matching a given URL.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Passende Ansichten anzeigen&lt;/b&gt;&lt;p&gt;Zeigt Ansichten zu einer gegebenen URL an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1372"/>
+        <location filename="../Project.py" line="1477"/>
         <source>Show Routes</source>
         <translation>Routen anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="274"/>
+        <location filename="../Project.py" line="284"/>
         <source>Show &amp;Routes</source>
         <translation>&amp;Routen anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="279"/>
+        <location filename="../Project.py" line="289"/>
         <source>Show all URL dispatch routes used by a Pyramid application</source>
         <translation>Zeigt alle durch eine Pyramid Anwendung verwendete URL Routen an</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="281"/>
+        <location filename="../Project.py" line="291"/>
         <source>&lt;b&gt;Show Routes&lt;/b&gt;&lt;p&gt;Show all URL dispatch routes used by a Pyramid application in the order in which they are evaluated.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Routen anzeigen&lt;/b&gt;&lt;p&gt;Zeigt alle durch eine Pyramid Anwendung verwendete URL Routen in der Reihenfolge ihrer Auswertung an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1394"/>
+        <location filename="../Project.py" line="1499"/>
         <source>Show Tween Objects</source>
         <translation>Tween Objekte anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="289"/>
+        <location filename="../Project.py" line="299"/>
         <source>Show &amp;Tween Objects</source>
         <translation>&amp;Tween Objekte anzeigen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="294"/>
+        <location filename="../Project.py" line="304"/>
         <source>Show all implicit and explicit tween objects used by a Pyramid application</source>
         <translation>Zeigt alle von einer Pyramid Anwendung verwendeten impliziten und expliziten Tween Objekte an</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="297"/>
+        <location filename="../Project.py" line="307"/>
         <source>&lt;b&gt;Show Tween Objects&lt;/b&gt;&lt;p&gt;Show all implicit and explicit tween objects used by a Pyramid application.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Tween Objekte anzeigen&lt;/b&gt;&lt;p&gt;Zeigt alle von einer Pyramid Anwendung verwendeten impliziten und expliziten Tween Objekte an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build Distribution</source>
         <translation>Distribution erzeugen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build &amp;Distribution</source>
         <translation>&amp;Distribution erzeugen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="314"/>
+        <location filename="../Project.py" line="324"/>
         <source>Builds a distribution file for the Pyramid project</source>
         <translation>Erzeugt Dateien zur Distribution eines Pyramid Projektes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="316"/>
+        <location filename="../Project.py" line="326"/>
         <source>&lt;b&gt;Build Distribution&lt;/b&gt;&lt;p&gt;Builds a distribution file for the Pyramid project using &quot;python setup.py sdist&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Distribution erzeugen&lt;/b&gt;&lt;p&gt;Erzeugt Dateien zur Distribution eines Pyramid Projektes mittels &quot;python setup.py sdist&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>Documentation</source>
         <translation>Dokumentation</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>D&amp;ocumentation</source>
         <translation>D&amp;okumentation</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="333"/>
+        <location filename="../Project.py" line="343"/>
         <source>Shows the help viewer with the Pyramid documentation</source>
         <translation>Zeigt die Hilfeanzeige mit der Pyramid Dokumentation</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="335"/>
+        <location filename="../Project.py" line="345"/>
         <source>&lt;b&gt;Documentation&lt;/b&gt;&lt;p&gt;Shows the help viewer with the Pyramid documentation.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Dokumentation&lt;/b&gt;&lt;p&gt;Zeigt die Hilfeanzeige mit der Pyramid Dokumentation.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>About Pyramid</source>
         <translation>Über Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="346"/>
+        <location filename="../Project.py" line="356"/>
         <source>About P&amp;yramid</source>
         <translation>Über P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="351"/>
+        <location filename="../Project.py" line="361"/>
         <source>Shows some information about Pyramid</source>
         <translation>Zeigt einige Informationen über Pyramid an</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="353"/>
+        <location filename="../Project.py" line="363"/>
         <source>&lt;b&gt;About Pyramid&lt;/b&gt;&lt;p&gt;Shows some information about Pyramid.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Über Pyramid&lt;/b&gt;&lt;p&gt;Zeigt einige Informationen über Pyramid an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="370"/>
+        <location filename="../Project.py" line="380"/>
         <source>P&amp;yramid</source>
         <translation>P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="444"/>
+        <location filename="../Project.py" line="454"/>
         <source>New template...</source>
         <translation>Neues Template...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="452"/>
+        <location filename="../Project.py" line="462"/>
         <source>Extract Messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="455"/>
+        <location filename="../Project.py" line="465"/>
         <source>Compile All Catalogs</source>
         <translation>Alle Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="458"/>
+        <location filename="../Project.py" line="468"/>
         <source>Compile Selected Catalogs</source>
         <translation>Ausgewählte Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="461"/>
+        <location filename="../Project.py" line="471"/>
         <source>Update All Catalogs</source>
         <translation>Alle Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="464"/>
+        <location filename="../Project.py" line="474"/>
         <source>Update Selected Catalogs</source>
         <translation>Ausgewählte Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="504"/>
+        <location filename="../Project.py" line="514"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Dateien (*.html);;HTML Dateien (*.htm);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <source>New Form</source>
         <translation>Neues Formular</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="527"/>
+        <location filename="../Project.py" line="537"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>Die Datei existiert bereits. Überschreiben?</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select Pyramid Project</source>
         <translation>Pyramid Projekt auswählen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select the Pyramid project to work with.</source>
         <translation>Wähle das Pyramid Projekt aus, mit dem gearbeitet werden soll.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1010"/>
+        <location filename="../Project.py" line="1115"/>
         <source>None</source>
         <translation>keines</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1013"/>
+        <location filename="../Project.py" line="1118"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation>&amp;Aktuelles Pyramid Projekt ({0})</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1702"/>
+        <location filename="../Project.py" line="1807"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation>Kein aktuelles Pyramid Projekt ausgewählt oder noch keines erstellt. Abbruch...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>Process Generation Error</source>
         <translation>Fehler bei der Prozessgenerierung</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1112"/>
+        <location filename="../Project.py" line="1217"/>
         <source>The Pyramid server could not be started.</source>
         <translation>Der Pyramid Server konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation>Der Web-Browser konnte nicht für die URL &quot;{0}&quot; gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1200"/>
+        <location filename="../Project.py" line="1305"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation>Der Pyramid Konsolenprozess konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1231"/>
+        <location filename="../Project.py" line="1336"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation>Die Pyramid Entwicklungsumgebung wurde erfolgreich eingerichtet.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1250"/>
+        <location filename="../Project.py" line="1355"/>
         <source>Build Distribution File</source>
         <translation>Distributionsdateien erzeugen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1274"/>
+        <location filename="../Project.py" line="1379"/>
         <source>Python distribution file built successfully.</source>
         <translation>Python Distributionsdateien erfolgreich erzeugt.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1323"/>
+        <location filename="../Project.py" line="1428"/>
         <source>Database initialized successfully.</source>
         <translation>Datenbank erfolgreich initialisiert.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Enter the URL to be matched:</source>
         <translation>Gib die zu überprüfende URL ein:</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1490"/>
+        <location filename="../Project.py" line="1595"/>
         <source>Extract messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1530"/>
+        <location filename="../Project.py" line="1635"/>
         <source>
 Messages extracted successfully.</source>
         <translation>
 Texte erfolgreich extrahiert.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1563"/>
+        <location filename="../Project.py" line="1668"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>
 Textkatalog erfolgreich initialisiert.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1617"/>
+        <location filename="../Project.py" line="1722"/>
         <source>Compiling message catalogs</source>
         <translation>Übersetze Textkataloge</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1649"/>
+        <location filename="../Project.py" line="1754"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>
 Textkataloge erfolgreich übersetzt.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1724"/>
+        <location filename="../Project.py" line="1829"/>
         <source>No locales detected. Aborting...</source>
         <translation>Keine Sprachen erkannt. Abbruch...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1698"/>
+        <location filename="../Project.py" line="1803"/>
         <source>Updating message catalogs</source>
         <translation>Aktualisiere Textkataloge</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1730"/>
+        <location filename="../Project.py" line="1835"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>
 Textkataloge erfolgreich aktualisiert.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1544"/>
+        <location filename="../Project.py" line="1649"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Initialisiere Textkatalog für &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pyramid ist ein Python Web-Framework, das eine schnelle Entwicklung und ein klares, pragmatisches Design fördert.&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="430"/>
+        <location filename="../Project.py" line="440"/>
         <source>Open with {0}</source>
         <translation>Mit {0} öffnen</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation>Der Prozess für den Übersetzungseditor ({0}) konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1506"/>
+        <location filename="../Project.py" line="1611"/>
         <source>No setup.cfg found or no &quot;extract_messages&quot; section found in setup.cfg.</source>
         <translation>Keine setup.cfg gefunden bzw. keine Sektion &quot;extract_messages&quot; in setup.cfg vorhanden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1513"/>
+        <location filename="../Project.py" line="1618"/>
         <source>No &quot;output_file&quot; option found in setup.cfg.</source>
         <translation>Keine Option &quot;output_file&quot; in setup.cfg vorhanden.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <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;Die neue Formulardatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht erstellt werden.&lt;br/&gt; Problem: {1}&lt;/p&gt;</translation>
     </message>
@@ -635,15 +634,10 @@
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="../../PluginProjectPyramid.py" line="411"/>
+        <location filename="../../PluginProjectPyramid.py" line="395"/>
         <source>Pyramid</source>
         <translation>Pyramid</translation>
     </message>
-    <message>
-        <location filename="../../PluginProjectPyramid.py" line="171"/>
-        <source>eric6 version is too old, {0}, {1} or newer needed.</source>
-        <translation>Die eric6 Version ist zu alt; {0}, {1} oder neuer wird benötigt.</translation>
-    </message>
 </context>
 <context>
     <name>PyramidDialog</name>
@@ -741,72 +735,72 @@
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="229"/>
         <source>Pyramid Virtual Environment</source>
         <translation>Virtuelle Pyramid Umgebung</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="180"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="206"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation>Gib den Pfad der virtuellen Pyramid Umgebung ein. Leer lassen, um keine virtuelle Umgebung zu verwenden.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="193"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation>Select the virtual environment directory via a selection dialog</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="203"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="253"/>
         <source>Pyramid Python Console:</source>
         <translation>Pyramid Python Konsole:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="216"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="266"/>
         <source>Select the Python console type</source>
         <translation>Wähle den Typ der Python Konsole</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="162"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="188"/>
         <source>Python 2</source>
         <translation>Python 2</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="226"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="278"/>
         <source>Pyramid Documentation</source>
         <translation>Pyramid Dokumentation</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="232"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="284"/>
         <source>URL:</source>
         <translation>URL:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="239"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="291"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation>Gib die URL für die Pyramid Dokumentation ein</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="70"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
         <source>Plain Python</source>
         <translation>Normales Python</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
         <source>IPython</source>
         <translation>IPython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="73"/>
         <source>bpython</source>
         <translation>bpython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="134"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="183"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation>Wähle die virtuelle Umgebung für Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="153"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="202"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation>Wähle die virtuelle Umgebung für Python 2</translation>
     </message>
@@ -816,22 +810,22 @@
         <translation>Konsole</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>Translations Editor</source>
         <translation>Übersetzungseditor</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="268"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="320"/>
         <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
         <translation>Gib den Pfad für einen Editor an, um Übersetzungen zu erstellen. Leer lassen, um dieses Feature abzuschalten.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="281"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="333"/>
         <source>Select the translations editor via a file selection dialog</source>
         <translation>Wähle den Übersetzungseditor über einen Auswahldialog aus</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>All Files (*)</source>
         <translation>Alle Dateien (*)</translation>
     </message>
@@ -851,10 +845,15 @@
         <translation>Externen Web-Browser benutzen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="246"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="298"/>
         <source>Press to reset the URL to the default URL</source>
         <translation>Drücken, um die URL auf die Standard-URL zurückzusetzen</translation>
     </message>
+    <message>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="235"/>
+        <source>Select the Virtual Environment to be used with Pyramid</source>
+        <translation>Wähle die mit Pyramid zu verwendende virtuelle Umgebung</translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>
--- a/ProjectPyramid/i18n/pyramid_en.ts	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/i18n/pyramid_en.ts	Sat Jun 23 17:45:53 2018 +0200
@@ -153,476 +153,476 @@
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project.py" line="120"/>
+        <location filename="../Project.py" line="130"/>
         <source>Current Pyramid Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="125"/>
+        <location filename="../Project.py" line="135"/>
         <source>Selects the current Pyramid project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="127"/>
+        <location filename="../Project.py" line="137"/>
         <source>&lt;b&gt;Current Pyramid Project&lt;/b&gt;&lt;p&gt;Selects the Pyramid project. Used for multi-project Pyramid projects to switch between the projects.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="912"/>
+        <location filename="../Project.py" line="1017"/>
         <source>Create Pyramid Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="139"/>
+        <location filename="../Project.py" line="149"/>
         <source>Create Pyramid &amp;Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="144"/>
+        <location filename="../Project.py" line="154"/>
         <source>Creates a new Pyramid project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="146"/>
+        <location filename="../Project.py" line="156"/>
         <source>&lt;b&gt;Create Pyramid Project&lt;/b&gt;&lt;p&gt;Creates a new Pyramid project using &quot;pcreate&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1084"/>
+        <location filename="../Project.py" line="1189"/>
         <source>Run Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="157"/>
+        <location filename="../Project.py" line="167"/>
         <source>Run &amp;Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="162"/>
+        <location filename="../Project.py" line="172"/>
         <source>Starts the Pyramid Web server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="164"/>
+        <location filename="../Project.py" line="174"/>
         <source>&lt;b&gt;Run Server&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server using &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with Logging</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with &amp;Logging</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="177"/>
+        <location filename="../Project.py" line="187"/>
         <source>Starts the Pyramid Web server with logging</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="179"/>
+        <location filename="../Project.py" line="189"/>
         <source>&lt;b&gt;Run Server with Logging&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server with logging using &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Run Web-Browser</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="187"/>
+        <location filename="../Project.py" line="197"/>
         <source>Run &amp;Web-Browser</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="192"/>
+        <location filename="../Project.py" line="202"/>
         <source>Starts the default Web-Browser with the URL of the Pyramid Web server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="195"/>
+        <location filename="../Project.py" line="205"/>
         <source>&lt;b&gt;Run Web-Browser&lt;/b&gt;&lt;p&gt;Starts the default Web-Browser with the URL of the Pyramid Web server.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1176"/>
+        <location filename="../Project.py" line="1281"/>
         <source>Start Pyramid Python Console</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="203"/>
+        <location filename="../Project.py" line="213"/>
         <source>Start Pyramid &amp;Python Console</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="208"/>
+        <location filename="../Project.py" line="218"/>
         <source>Starts an interactive Python interpreter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="210"/>
+        <location filename="../Project.py" line="220"/>
         <source>&lt;b&gt;Start Pyramid Python Console&lt;/b&gt;&lt;p&gt;Starts an interactive Python interpreter.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1215"/>
+        <location filename="../Project.py" line="1320"/>
         <source>Setup Development Environment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="221"/>
+        <location filename="../Project.py" line="231"/>
         <source>Setup &amp;Development Environment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="226"/>
+        <location filename="../Project.py" line="236"/>
         <source>Setup the Pyramid project in development mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="228"/>
+        <location filename="../Project.py" line="238"/>
         <source>&lt;b&gt;Setup Development Environment&lt;/b&gt;&lt;p&gt;Setup the Pyramid project in development mode using &quot;python setup.py develop&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1308"/>
+        <location filename="../Project.py" line="1413"/>
         <source>Initialize Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="240"/>
+        <location filename="../Project.py" line="250"/>
         <source>Initialize &amp;Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="245"/>
+        <location filename="../Project.py" line="255"/>
         <source>Initializes (or re-initializes) the database of the current Pyramid project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="248"/>
+        <location filename="../Project.py" line="258"/>
         <source>&lt;b&gt;Initialize Database&lt;/b&gt;&lt;p&gt;Initializes (or re-initializes) the database of the current Pyramid project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Show Matching Views</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="260"/>
+        <location filename="../Project.py" line="270"/>
         <source>Show Matching &amp;Views</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="265"/>
+        <location filename="../Project.py" line="275"/>
         <source>Show views matching a given URL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="267"/>
+        <location filename="../Project.py" line="277"/>
         <source>&lt;b&gt;Show Matching Views&lt;/b&gt;&lt;p&gt;Show views matching a given URL.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1372"/>
+        <location filename="../Project.py" line="1477"/>
         <source>Show Routes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="274"/>
+        <location filename="../Project.py" line="284"/>
         <source>Show &amp;Routes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="279"/>
-        <source>Show all URL dispatch routes used by a Pyramid application</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project.py" line="281"/>
-        <source>&lt;b&gt;Show Routes&lt;/b&gt;&lt;p&gt;Show all URL dispatch routes used by a Pyramid application in the order in which they are evaluated.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Project.py" line="1394"/>
-        <source>Show Tween Objects</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Project.py" line="289"/>
+        <source>Show all URL dispatch routes used by a Pyramid application</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project.py" line="291"/>
+        <source>&lt;b&gt;Show Routes&lt;/b&gt;&lt;p&gt;Show all URL dispatch routes used by a Pyramid application in the order in which they are evaluated.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project.py" line="1499"/>
+        <source>Show Tween Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Project.py" line="299"/>
         <source>Show &amp;Tween Objects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="294"/>
+        <location filename="../Project.py" line="304"/>
         <source>Show all implicit and explicit tween objects used by a Pyramid application</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="297"/>
+        <location filename="../Project.py" line="307"/>
         <source>&lt;b&gt;Show Tween Objects&lt;/b&gt;&lt;p&gt;Show all implicit and explicit tween objects used by a Pyramid application.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build Distribution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build &amp;Distribution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="314"/>
+        <location filename="../Project.py" line="324"/>
         <source>Builds a distribution file for the Pyramid project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="316"/>
+        <location filename="../Project.py" line="326"/>
         <source>&lt;b&gt;Build Distribution&lt;/b&gt;&lt;p&gt;Builds a distribution file for the Pyramid project using &quot;python setup.py sdist&quot;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>Documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>D&amp;ocumentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="333"/>
+        <location filename="../Project.py" line="343"/>
         <source>Shows the help viewer with the Pyramid documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="335"/>
+        <location filename="../Project.py" line="345"/>
         <source>&lt;b&gt;Documentation&lt;/b&gt;&lt;p&gt;Shows the help viewer with the Pyramid documentation.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>About Pyramid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="346"/>
+        <location filename="../Project.py" line="356"/>
         <source>About P&amp;yramid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="351"/>
+        <location filename="../Project.py" line="361"/>
         <source>Shows some information about Pyramid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="353"/>
+        <location filename="../Project.py" line="363"/>
         <source>&lt;b&gt;About Pyramid&lt;/b&gt;&lt;p&gt;Shows some information about Pyramid.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="370"/>
+        <location filename="../Project.py" line="380"/>
         <source>P&amp;yramid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="444"/>
+        <location filename="../Project.py" line="454"/>
         <source>New template...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="452"/>
+        <location filename="../Project.py" line="462"/>
         <source>Extract Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="455"/>
+        <location filename="../Project.py" line="465"/>
         <source>Compile All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="458"/>
+        <location filename="../Project.py" line="468"/>
         <source>Compile Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="461"/>
+        <location filename="../Project.py" line="471"/>
         <source>Update All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="464"/>
+        <location filename="../Project.py" line="474"/>
         <source>Update Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="504"/>
+        <location filename="../Project.py" line="514"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <source>New Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="527"/>
+        <location filename="../Project.py" line="537"/>
         <source>The file already exists! Overwrite it?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select Pyramid Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select the Pyramid project to work with.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1010"/>
+        <location filename="../Project.py" line="1115"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1013"/>
+        <location filename="../Project.py" line="1118"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1702"/>
+        <location filename="../Project.py" line="1807"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>Process Generation Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1112"/>
+        <location filename="../Project.py" line="1217"/>
         <source>The Pyramid server could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1200"/>
+        <location filename="../Project.py" line="1305"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1231"/>
+        <location filename="../Project.py" line="1336"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1250"/>
+        <location filename="../Project.py" line="1355"/>
         <source>Build Distribution File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1274"/>
+        <location filename="../Project.py" line="1379"/>
         <source>Python distribution file built successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1323"/>
+        <location filename="../Project.py" line="1428"/>
         <source>Database initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Enter the URL to be matched:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1490"/>
+        <location filename="../Project.py" line="1595"/>
         <source>Extract messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1530"/>
+        <location filename="../Project.py" line="1635"/>
         <source>
 Messages extracted successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1563"/>
+        <location filename="../Project.py" line="1668"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1617"/>
+        <location filename="../Project.py" line="1722"/>
         <source>Compiling message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1649"/>
+        <location filename="../Project.py" line="1754"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1724"/>
+        <location filename="../Project.py" line="1829"/>
         <source>No locales detected. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1698"/>
+        <location filename="../Project.py" line="1803"/>
         <source>Updating message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1730"/>
+        <location filename="../Project.py" line="1835"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1544"/>
+        <location filename="../Project.py" line="1649"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="430"/>
+        <location filename="../Project.py" line="440"/>
         <source>Open with {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1506"/>
+        <location filename="../Project.py" line="1611"/>
         <source>No setup.cfg found or no &quot;extract_messages&quot; section found in setup.cfg.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1513"/>
+        <location filename="../Project.py" line="1618"/>
         <source>No &quot;output_file&quot; option found in setup.cfg.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <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 type="unfinished"></translation>
     </message>
@@ -630,15 +630,10 @@
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="../../PluginProjectPyramid.py" line="411"/>
+        <location filename="../../PluginProjectPyramid.py" line="395"/>
         <source>Pyramid</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../PluginProjectPyramid.py" line="171"/>
-        <source>eric6 version is too old, {0}, {1} or newer needed.</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>PyramidDialog</name>
@@ -736,72 +731,72 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="229"/>
         <source>Pyramid Virtual Environment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="180"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="206"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="193"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="203"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="253"/>
         <source>Pyramid Python Console:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="216"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="266"/>
         <source>Select the Python console type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="162"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="188"/>
         <source>Python 2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="226"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="278"/>
         <source>Pyramid Documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="232"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="284"/>
         <source>URL:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="239"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="291"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="70"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
         <source>Plain Python</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
-        <source>IPython</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
+        <source>IPython</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="73"/>
         <source>bpython</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="134"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="183"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="153"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="202"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation type="unfinished"></translation>
     </message>
@@ -811,22 +806,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="256"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>Translations Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="268"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="320"/>
         <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="281"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="333"/>
         <source>Select the translations editor via a file selection dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -846,10 +841,15 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="246"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="298"/>
         <source>Press to reset the URL to the default URL</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="235"/>
+        <source>Select the Virtual Environment to be used with Pyramid</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>
--- a/ProjectPyramid/i18n/pyramid_es.ts	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/i18n/pyramid_es.ts	Sat Jun 23 17:45:53 2018 +0200
@@ -153,477 +153,477 @@
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project.py" line="120"/>
+        <location filename="../Project.py" line="130"/>
         <source>Current Pyramid Project</source>
         <translation>Proyecto Pyramid Actual</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="125"/>
+        <location filename="../Project.py" line="135"/>
         <source>Selects the current Pyramid project</source>
         <translation>Selecciona el proyecto Piramid actual</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="127"/>
+        <location filename="../Project.py" line="137"/>
         <source>&lt;b&gt;Current Pyramid Project&lt;/b&gt;&lt;p&gt;Selects the Pyramid project. Used for multi-project Pyramid projects to switch between the projects.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Proyecto Pyramid Actual&lt;/b&gt;&lt;p&gt;Seleciona el proyecto Pyramid. Se utiliza en proyectos Pyramid multi-proyecto Pyramid projects para cambiar entre proyectos.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="912"/>
+        <location filename="../Project.py" line="1017"/>
         <source>Create Pyramid Project</source>
         <translation>Crear Proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="139"/>
+        <location filename="../Project.py" line="149"/>
         <source>Create Pyramid &amp;Project</source>
         <translation>Crear &amp;Proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="144"/>
+        <location filename="../Project.py" line="154"/>
         <source>Creates a new Pyramid project</source>
         <translation>Crea un nuevo proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="146"/>
+        <location filename="../Project.py" line="156"/>
         <source>&lt;b&gt;Create Pyramid Project&lt;/b&gt;&lt;p&gt;Creates a new Pyramid project using &quot;pcreate&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Crear Proyecto Pyramid &lt;/b&gt;&lt;p&gt;Crea un nuevo proyecto Pyramid usando &quot;pcreate&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1084"/>
+        <location filename="../Project.py" line="1189"/>
         <source>Run Server</source>
         <translation>Lanzar Servidor</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="157"/>
+        <location filename="../Project.py" line="167"/>
         <source>Run &amp;Server</source>
         <translation>Lanzar &amp;Servidor</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="162"/>
+        <location filename="../Project.py" line="172"/>
         <source>Starts the Pyramid Web server</source>
         <translation>Inicia el servidor Web de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="164"/>
+        <location filename="../Project.py" line="174"/>
         <source>&lt;b&gt;Run Server&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server using &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lanzar Servidor&lt;/b&gt;&lt;p&gt;Inicia el servidor Web de Pyramid usando &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with Logging</source>
         <translation>Lanzar Servidor con Log</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with &amp;Logging</source>
         <translation>Lanzar Servidor con &amp;Log</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="177"/>
+        <location filename="../Project.py" line="187"/>
         <source>Starts the Pyramid Web server with logging</source>
         <translation>Inicia el servidor Web de Pyramid con log</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="179"/>
+        <location filename="../Project.py" line="189"/>
         <source>&lt;b&gt;Run Server with Logging&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server with logging using &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lanzar Servidor con Log&lt;/b&gt;&lt;p&gt;Inicia el servidor Web de Pyramid con log usando &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Run Web-Browser</source>
         <translation>Lanzar Navegador Web</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="187"/>
+        <location filename="../Project.py" line="197"/>
         <source>Run &amp;Web-Browser</source>
         <translation>Lanzar Navegador &amp;Web</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="192"/>
+        <location filename="../Project.py" line="202"/>
         <source>Starts the default Web-Browser with the URL of the Pyramid Web server</source>
         <translation>Inicia el Navegador Web por defecto con la URL del servidor Web de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="195"/>
+        <location filename="../Project.py" line="205"/>
         <source>&lt;b&gt;Run Web-Browser&lt;/b&gt;&lt;p&gt;Starts the default Web-Browser with the URL of the Pyramid Web server.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lanzar Navegador Web&lt;/b&gt;&lt;p&gt;Inicia el Navegador Web por defecto con la URL del servidor Web de Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1176"/>
+        <location filename="../Project.py" line="1281"/>
         <source>Start Pyramid Python Console</source>
         <translation>Iniciar Consola Python de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="203"/>
+        <location filename="../Project.py" line="213"/>
         <source>Start Pyramid &amp;Python Console</source>
         <translation>Iniciar Consola &amp;Python de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="208"/>
+        <location filename="../Project.py" line="218"/>
         <source>Starts an interactive Python interpreter</source>
         <translation>Inicia un intérprete interactivo de Python</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="210"/>
+        <location filename="../Project.py" line="220"/>
         <source>&lt;b&gt;Start Pyramid Python Console&lt;/b&gt;&lt;p&gt;Starts an interactive Python interpreter.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Iniciar Consola Python de Pyramid&lt;/b&gt;&lt;p&gt;Inicia un intérprete interactivo de Python.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1215"/>
+        <location filename="../Project.py" line="1320"/>
         <source>Setup Development Environment</source>
         <translation>Configurar Entorno de Desarrollo</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="221"/>
+        <location filename="../Project.py" line="231"/>
         <source>Setup &amp;Development Environment</source>
         <translation>Configurar Entorno de &amp;Desarrollo</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="226"/>
+        <location filename="../Project.py" line="236"/>
         <source>Setup the Pyramid project in development mode</source>
         <translation>Configurar el proyecto Pyramid en modo de desarrollo</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="228"/>
+        <location filename="../Project.py" line="238"/>
         <source>&lt;b&gt;Setup Development Environment&lt;/b&gt;&lt;p&gt;Setup the Pyramid project in development mode using &quot;python setup.py develop&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Configurar Entorno de Desarrollo&lt;/b&gt;&lt;p&gt;Configurar el proyecto Pyramid en modo de desarrollo usando &quot;python setup.py develop&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1308"/>
+        <location filename="../Project.py" line="1413"/>
         <source>Initialize Database</source>
         <translation>Inicializar Base de Datos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="240"/>
+        <location filename="../Project.py" line="250"/>
         <source>Initialize &amp;Database</source>
         <translation>Inicializar Base de &amp;Datos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="245"/>
+        <location filename="../Project.py" line="255"/>
         <source>Initializes (or re-initializes) the database of the current Pyramid project</source>
         <translation>Inicializa (o reinicializa) la base de datos del proyecto Pyramid actual</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="248"/>
+        <location filename="../Project.py" line="258"/>
         <source>&lt;b&gt;Initialize Database&lt;/b&gt;&lt;p&gt;Initializes (or re-initializes) the database of the current Pyramid project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Inicializar Base de Datos&lt;/b&gt;&lt;p&gt;Inicializa (o reinicializa) la base de datos del proyecto Pyramid actual.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Show Matching Views</source>
         <translation>Mostrar Vistas Concordantes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="260"/>
+        <location filename="../Project.py" line="270"/>
         <source>Show Matching &amp;Views</source>
         <translation>Mostrar &amp;Vistas Concordantes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="265"/>
+        <location filename="../Project.py" line="275"/>
         <source>Show views matching a given URL</source>
         <translation>Mostrar vistas que concuerdan con una URL dada</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="267"/>
+        <location filename="../Project.py" line="277"/>
         <source>&lt;b&gt;Show Matching Views&lt;/b&gt;&lt;p&gt;Show views matching a given URL.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Mostrar Vistas Concordantes&lt;/b&gt;&lt;p&gt;Mostrar vistas que concuerdan con una URL dada.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1372"/>
+        <location filename="../Project.py" line="1477"/>
         <source>Show Routes</source>
         <translation>Mostrar Rutas</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="274"/>
+        <location filename="../Project.py" line="284"/>
         <source>Show &amp;Routes</source>
         <translation>Mostrar &amp;Rutas</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="279"/>
+        <location filename="../Project.py" line="289"/>
         <source>Show all URL dispatch routes used by a Pyramid application</source>
         <translation>Mostrar todas las rutas URL de despacho usadas por una aplicación Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="281"/>
+        <location filename="../Project.py" line="291"/>
         <source>&lt;b&gt;Show Routes&lt;/b&gt;&lt;p&gt;Show all URL dispatch routes used by a Pyramid application in the order in which they are evaluated.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Mostrar Rutas&lt;/b&gt;&lt;p&gt;Mostrar todas las rutas URL de despacho usadas por una aplicación Pyramid en el orden en que son evaluadas.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1394"/>
+        <location filename="../Project.py" line="1499"/>
         <source>Show Tween Objects</source>
         <translation>Mostrar Objetos Gemelos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="289"/>
+        <location filename="../Project.py" line="299"/>
         <source>Show &amp;Tween Objects</source>
         <translation>Mos&amp;trar Objetos Gemelos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="294"/>
+        <location filename="../Project.py" line="304"/>
         <source>Show all implicit and explicit tween objects used by a Pyramid application</source>
         <translation>Mostrar todos los objetos gemelos implícitos y explícitos usados por una aplicación Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="297"/>
+        <location filename="../Project.py" line="307"/>
         <source>&lt;b&gt;Show Tween Objects&lt;/b&gt;&lt;p&gt;Show all implicit and explicit tween objects used by a Pyramid application.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Mostrar Objetos Gemelos&lt;/b&gt;&lt;p&gt;Mostrar todos los objetos gemelos implícitos y explícitos usados por una aplicación Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build Distribution</source>
         <translation>Construir Distribución</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build &amp;Distribution</source>
         <translation>Construir &amp;Distribución</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="314"/>
+        <location filename="../Project.py" line="324"/>
         <source>Builds a distribution file for the Pyramid project</source>
         <translation>Construye un archivo de distribución para el proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="316"/>
+        <location filename="../Project.py" line="326"/>
         <source>&lt;b&gt;Build Distribution&lt;/b&gt;&lt;p&gt;Builds a distribution file for the Pyramid project using &quot;python setup.py sdist&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Construir Distribución&lt;/b&gt;&lt;p&gt;Construye un archivo de distribución para el proyecto Pyramid usando &quot;python setup.py sdist&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>Documentation</source>
         <translation>Documentación</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>D&amp;ocumentation</source>
         <translation>D&amp;ocumentación</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="333"/>
+        <location filename="../Project.py" line="343"/>
         <source>Shows the help viewer with the Pyramid documentation</source>
         <translation>Muestra el visor de ayuda con la documentación de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="335"/>
+        <location filename="../Project.py" line="345"/>
         <source>&lt;b&gt;Documentation&lt;/b&gt;&lt;p&gt;Shows the help viewer with the Pyramid documentation.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Documentación&lt;/b&gt;&lt;p&gt;Muestra el visor de ayuda con la documentación de Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>About Pyramid</source>
         <translation>Acerca de Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="346"/>
+        <location filename="../Project.py" line="356"/>
         <source>About P&amp;yramid</source>
         <translation>Acerca de P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="351"/>
+        <location filename="../Project.py" line="361"/>
         <source>Shows some information about Pyramid</source>
         <translation>Muestra información sobre Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="353"/>
+        <location filename="../Project.py" line="363"/>
         <source>&lt;b&gt;About Pyramid&lt;/b&gt;&lt;p&gt;Shows some information about Pyramid.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Acerca de Pyramid&lt;/b&gt;&lt;p&gt;Muestra información acerca de Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="370"/>
+        <location filename="../Project.py" line="380"/>
         <source>P&amp;yramid</source>
         <translation>P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="444"/>
+        <location filename="../Project.py" line="454"/>
         <source>New template...</source>
         <translation>Nueva Plantilla...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="452"/>
+        <location filename="../Project.py" line="462"/>
         <source>Extract Messages</source>
         <translation>Extraer Mensajes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="455"/>
+        <location filename="../Project.py" line="465"/>
         <source>Compile All Catalogs</source>
         <translation>Compilar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="458"/>
+        <location filename="../Project.py" line="468"/>
         <source>Compile Selected Catalogs</source>
         <translation>Compilar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="461"/>
+        <location filename="../Project.py" line="471"/>
         <source>Update All Catalogs</source>
         <translation>Actualizar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="464"/>
+        <location filename="../Project.py" line="474"/>
         <source>Update Selected Catalogs</source>
         <translation>Actualizar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="504"/>
+        <location filename="../Project.py" line="514"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation>Plantillas Chameleon (*.pt);;Plantillas de Texto Chameleon (*.txt);;Plantillas Mako (*.mako);;Plantillas Mako (*.mak);;Archivos HTML (*.html);;Archivos HTML (*.htm);;Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <source>New Form</source>
         <translation>Nuevo Formulario</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="527"/>
+        <location filename="../Project.py" line="537"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>¡El archivo ya existe!¿Sobreescribirlo?</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select Pyramid Project</source>
         <translation>Seleccionar Proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select the Pyramid project to work with.</source>
         <translation>Seleccionar el proyecto Pyramid con el que trabajar.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1010"/>
+        <location filename="../Project.py" line="1115"/>
         <source>None</source>
         <translation>Ninguno</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1013"/>
+        <location filename="../Project.py" line="1118"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation>Proyecto Pyramid A&amp;ctual ({0})</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1702"/>
+        <location filename="../Project.py" line="1807"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation>No se ha seleccionado proyecto Pyramid actual o no hay creado todavía ningún proyecto Pyramid. Abortando...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>Process Generation Error</source>
         <translation>Error de Generación de Proceso</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1112"/>
+        <location filename="../Project.py" line="1217"/>
         <source>The Pyramid server could not be started.</source>
         <translation>No se ha podido iniciar el servidor de Pyramid.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation>No se ha podido inicialr el navegador web para la URL &quot;{0}&quot;.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1200"/>
+        <location filename="../Project.py" line="1305"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation>No se ha podido iniciar el proceso Shell de Pyramid.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1231"/>
+        <location filename="../Project.py" line="1336"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation>Entorno de desarrollo de Pyramid configurado con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1250"/>
+        <location filename="../Project.py" line="1355"/>
         <source>Build Distribution File</source>
         <translation>Construir Archivo de Distribución</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1274"/>
+        <location filename="../Project.py" line="1379"/>
         <source>Python distribution file built successfully.</source>
         <translation>Archivo de distribución Python construido con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1323"/>
+        <location filename="../Project.py" line="1428"/>
         <source>Database initialized successfully.</source>
         <translation>Base de Datos inicializada con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Enter the URL to be matched:</source>
         <translation>Introducir la URL a ser concordada:</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1490"/>
+        <location filename="../Project.py" line="1595"/>
         <source>Extract messages</source>
         <translation>Extraer mensajes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1530"/>
+        <location filename="../Project.py" line="1635"/>
         <source>
 Messages extracted successfully.</source>
         <translation>Mensajes extraídos con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1563"/>
+        <location filename="../Project.py" line="1668"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>Catálogo de Mensajes inicializado con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1617"/>
+        <location filename="../Project.py" line="1722"/>
         <source>Compiling message catalogs</source>
         <translation>Compilando catálogos de mensajes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1649"/>
+        <location filename="../Project.py" line="1754"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>Catálogo de Mensajes compilado con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1724"/>
+        <location filename="../Project.py" line="1829"/>
         <source>No locales detected. Aborting...</source>
         <translation>No se han detectado traducciones. Abortando...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1698"/>
+        <location filename="../Project.py" line="1803"/>
         <source>Updating message catalogs</source>
         <translation>Actualizando catálogos de mensajes</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1730"/>
+        <location filename="../Project.py" line="1835"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>Catálogo de Mensajes actualizado con éxito.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1544"/>
+        <location filename="../Project.py" line="1649"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Inicializando catálogo de mensajes para &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pyramid es un framework Web de alto nivel para Python que promueve desarrollo rápido, y diseño pragmático
  y limpio.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Versión:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="430"/>
+        <location filename="../Project.py" line="440"/>
         <source>Open with {0}</source>
         <translation>Abrir con {0}</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation>El proceso de edición de traducciones ({0}) no ha podido ser iniciado.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1506"/>
+        <location filename="../Project.py" line="1611"/>
         <source>No setup.cfg found or no &quot;extract_messages&quot; section found in setup.cfg.</source>
         <translation>No se ha encontrado setup.cfg o no se ha encontrado la sección &apos;extract_messages&apos; de setup.cfg.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1513"/>
+        <location filename="../Project.py" line="1618"/>
         <source>No &quot;output_file&quot; option found in setup.cfg.</source>
         <translation>No se ha encontrado opción &quot;output_file&quot; en setup.cfg.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <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;No se ha podido crear el nuevo archivo de formulario &lt;b&gt;{0}&lt;/b&gt;.&lt;br/&gt;Problema: {1}&lt;/p&gt;</translation>
     </message>
@@ -631,15 +631,10 @@
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="../../PluginProjectPyramid.py" line="411"/>
+        <location filename="../../PluginProjectPyramid.py" line="395"/>
         <source>Pyramid</source>
         <translation></translation>
     </message>
-    <message>
-        <location filename="../../PluginProjectPyramid.py" line="171"/>
-        <source>eric6 version is too old, {0}, {1} or newer needed.</source>
-        <translation>La versión de eric6 es demasiado antigua, {0}, es necesaria {1} o más reciente .</translation>
-    </message>
 </context>
 <context>
     <name>PyramidDialog</name>
@@ -737,72 +732,72 @@
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="229"/>
         <source>Pyramid Virtual Environment</source>
         <translation>Entorno Virtual de Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="180"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="206"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation>Introducir la ruta del entorno virtual de Pyramid. Dejar vacío para no utilizar una configuración de entorno virtual.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="193"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation>Seleccionar el directorio de entorno virtual a través de un diálogo de selección</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="203"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="253"/>
         <source>Pyramid Python Console:</source>
         <translation>Consola Python de Pyramid:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="216"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="266"/>
         <source>Select the Python console type</source>
         <translation>Seleccionar el tipo de consola de Python</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="162"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="188"/>
         <source>Python 2</source>
         <translation>Python 2</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="226"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="278"/>
         <source>Pyramid Documentation</source>
         <translation>Documentación de Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="232"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="284"/>
         <source>URL:</source>
         <translation>URL:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="239"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="291"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation>Introducir la URL de la documentación de Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="70"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
         <source>Plain Python</source>
         <translation>Python normal</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
         <source>IPython</source>
         <translation>IPython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="73"/>
         <source>bpython</source>
         <translation>bpython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="134"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="183"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation>Seleccionar Entorno Virtual para Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="153"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="202"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation>Seleccionar Entorno Virtual para Python 2</translation>
     </message>
@@ -812,22 +807,22 @@
         <translation>Comando de Consola</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="256"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>Translations Editor</source>
         <translation>Editor de Traducciones</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="268"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="320"/>
         <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
         <translation>Introducir la ruta de un editor para hacer las traducciones. Dejar vacío para deshabilitar esta característica.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="281"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="333"/>
         <source>Select the translations editor via a file selection dialog</source>
         <translation>Seleccionar el editor de traducciones vía un diálogo de selección de archivo</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>All Files (*)</source>
         <translation>Todos los Archivos (*)</translation>
     </message>
@@ -847,10 +842,15 @@
         <translation>Usar navegador web externo</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="246"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="298"/>
         <source>Press to reset the URL to the default URL</source>
         <translation>Pulsar para restablecer la URL a la URL por defecto</translation>
     </message>
+    <message>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="235"/>
+        <source>Select the Virtual Environment to be used with Pyramid</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>
--- a/ProjectPyramid/i18n/pyramid_ru.ts	Sat Mar 31 13:41:00 2018 +0200
+++ b/ProjectPyramid/i18n/pyramid_ru.ts	Sat Jun 23 17:45:53 2018 +0200
@@ -153,479 +153,479 @@
 <context>
     <name>Project</name>
     <message>
-        <location filename="../Project.py" line="120"/>
+        <location filename="../Project.py" line="130"/>
         <source>Current Pyramid Project</source>
         <translation>Текущий Pyramid проект</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="125"/>
+        <location filename="../Project.py" line="135"/>
         <source>Selects the current Pyramid project</source>
         <translation>Выбор текущего Pyramid проекта</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="127"/>
+        <location filename="../Project.py" line="137"/>
         <source>&lt;b&gt;Current Pyramid Project&lt;/b&gt;&lt;p&gt;Selects the Pyramid project. Used for multi-project Pyramid projects to switch between the projects.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Текущий Pyramid проект&lt;/b&gt;&lt;p&gt;Выбор Pyramid проекта. Используется в мультипроектных  Pyramid-проектах для переключения между проектами.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="912"/>
+        <location filename="../Project.py" line="1017"/>
         <source>Create Pyramid Project</source>
         <translation>Создать Pyramid проект</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="139"/>
+        <location filename="../Project.py" line="149"/>
         <source>Create Pyramid &amp;Project</source>
         <translation>Создать Pyramid &amp;проект</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="144"/>
+        <location filename="../Project.py" line="154"/>
         <source>Creates a new Pyramid project</source>
         <translation>Создание нового Pyramid проекта</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="146"/>
+        <location filename="../Project.py" line="156"/>
         <source>&lt;b&gt;Create Pyramid Project&lt;/b&gt;&lt;p&gt;Creates a new Pyramid project using &quot;pcreate&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Создание Pyramid проекта&lt;/b&gt;&lt;p&gt;Создание нового Pyramid-проекта посредством команды &quot;pcreate&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1084"/>
+        <location filename="../Project.py" line="1189"/>
         <source>Run Server</source>
         <translation>Сервер разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="157"/>
+        <location filename="../Project.py" line="167"/>
         <source>Run &amp;Server</source>
         <translation>&amp;Сервер разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="162"/>
+        <location filename="../Project.py" line="172"/>
         <source>Starts the Pyramid Web server</source>
         <translation>Запуск Pyramid Web сервера разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="164"/>
+        <location filename="../Project.py" line="174"/>
         <source>&lt;b&gt;Run Server&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server using &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Сервер разработки&lt;/b&gt;&lt;p&gt;Запуск Pyramid Web сервера разработки посредством команды &quot;pserve --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with Logging</source>
         <translation>Сервер разработки с ведением журнала</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="172"/>
+        <location filename="../Project.py" line="182"/>
         <source>Run Server with &amp;Logging</source>
         <translation>Сервер разработки с ведением &amp;журнала</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="177"/>
+        <location filename="../Project.py" line="187"/>
         <source>Starts the Pyramid Web server with logging</source>
         <translation>Запуск Pyramid Web сервера разработки с ведением журнала</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="179"/>
+        <location filename="../Project.py" line="189"/>
         <source>&lt;b&gt;Run Server with Logging&lt;/b&gt;&lt;p&gt;Starts the Pyramid Web server with logging using &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Сервер с ведением журнала&lt;/b&gt;&lt;p&gt;Запуск Pyramid Web сервера разработки с ведением журнала посредством команды &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Run Web-Browser</source>
         <translation>Запуск Web-браузера для администрирования</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="187"/>
+        <location filename="../Project.py" line="197"/>
         <source>Run &amp;Web-Browser</source>
         <translation>Запуск &amp;Web-браузера</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="192"/>
+        <location filename="../Project.py" line="202"/>
         <source>Starts the default Web-Browser with the URL of the Pyramid Web server</source>
         <translation>Запуск стандартного Web-браузера с URL Pyramid Web сервера (администрирование)</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="195"/>
+        <location filename="../Project.py" line="205"/>
         <source>&lt;b&gt;Run Web-Browser&lt;/b&gt;&lt;p&gt;Starts the default Web-Browser with the URL of the Pyramid Web server.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Запуск Web-браузера&lt;/b&gt;&lt;p&gt;Запуск стандартного Web-браузера с URL Pyramid Web сервера.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1176"/>
+        <location filename="../Project.py" line="1281"/>
         <source>Start Pyramid Python Console</source>
         <translation>Запуск консоли Pyramid Python</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="203"/>
+        <location filename="../Project.py" line="213"/>
         <source>Start Pyramid &amp;Python Console</source>
         <translation>Запуск Pyramid &amp;Python консоли</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="208"/>
+        <location filename="../Project.py" line="218"/>
         <source>Starts an interactive Python interpreter</source>
         <translation>Запуск интерактивного интерпретатора Python</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="210"/>
+        <location filename="../Project.py" line="220"/>
         <source>&lt;b&gt;Start Pyramid Python Console&lt;/b&gt;&lt;p&gt;Starts an interactive Python interpreter.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Запуск Pyramid Python консоли&lt;/b&gt;&lt;p&gt;Запуск интерактивного интерпретатора Python.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1215"/>
+        <location filename="../Project.py" line="1320"/>
         <source>Setup Development Environment</source>
         <translation>Настройка среды разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="221"/>
+        <location filename="../Project.py" line="231"/>
         <source>Setup &amp;Development Environment</source>
         <translation>Настройка среды &amp;разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="226"/>
+        <location filename="../Project.py" line="236"/>
         <source>Setup the Pyramid project in development mode</source>
         <translation>Настройка Pyramid проекта в режиме разработки</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="228"/>
+        <location filename="../Project.py" line="238"/>
         <source>&lt;b&gt;Setup Development Environment&lt;/b&gt;&lt;p&gt;Setup the Pyramid project in development mode using &quot;python setup.py develop&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Настройка среды разработки&lt;/b&gt;&lt;p&gt;Настройка Pyramid проекта в режиме разработки посредством &quot;python setup.py develop&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1308"/>
+        <location filename="../Project.py" line="1413"/>
         <source>Initialize Database</source>
         <translation>Инициализация базы данных</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="240"/>
+        <location filename="../Project.py" line="250"/>
         <source>Initialize &amp;Database</source>
         <translation>Инициализация &amp;базы данных</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="245"/>
+        <location filename="../Project.py" line="255"/>
         <source>Initializes (or re-initializes) the database of the current Pyramid project</source>
         <translation>Инициализация (или ре-инициализация) базы данных текущего Pyramid проекта</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="248"/>
+        <location filename="../Project.py" line="258"/>
         <source>&lt;b&gt;Initialize Database&lt;/b&gt;&lt;p&gt;Initializes (or re-initializes) the database of the current Pyramid project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Инициализация базы данных&lt;/b&gt;&lt;p&gt;Инициализация (или ре-инициализация) базы данных текущего Pyramid проекта.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Show Matching Views</source>
         <translation>Показ сопоставленных видов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="260"/>
+        <location filename="../Project.py" line="270"/>
         <source>Show Matching &amp;Views</source>
         <translation>Показ сопоставленных &amp;видов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="265"/>
+        <location filename="../Project.py" line="275"/>
         <source>Show views matching a given URL</source>
         <translation>Показ видов, сопоставленных заданному URL</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="267"/>
+        <location filename="../Project.py" line="277"/>
         <source>&lt;b&gt;Show Matching Views&lt;/b&gt;&lt;p&gt;Show views matching a given URL.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Показ сопоставленных видов&lt;/b&gt;&lt;p&gt;Отображение видов, сопоставленных заданным URL.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1372"/>
+        <location filename="../Project.py" line="1477"/>
         <source>Show Routes</source>
         <translation>Показ маршрутов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="274"/>
+        <location filename="../Project.py" line="284"/>
         <source>Show &amp;Routes</source>
         <translation>Показ &amp;маршрутов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="279"/>
+        <location filename="../Project.py" line="289"/>
         <source>Show all URL dispatch routes used by a Pyramid application</source>
         <translation>Отображение всех URL dispatch маршрутов, используемых Pyramid приложением</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="281"/>
+        <location filename="../Project.py" line="291"/>
         <source>&lt;b&gt;Show Routes&lt;/b&gt;&lt;p&gt;Show all URL dispatch routes used by a Pyramid application in the order in which they are evaluated.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Показ маршрутов&lt;/b&gt;&lt;p&gt;Отображение всех URL dispatch маршрутов, используемых Pyramid приложением, в том порядке, в котором они выполняются.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1394"/>
+        <location filename="../Project.py" line="1499"/>
         <source>Show Tween Objects</source>
         <translation>Показ Tween объектов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="289"/>
+        <location filename="../Project.py" line="299"/>
         <source>Show &amp;Tween Objects</source>
         <translation>Показ &amp;Tween объектов</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="294"/>
+        <location filename="../Project.py" line="304"/>
         <source>Show all implicit and explicit tween objects used by a Pyramid application</source>
         <translation>Показ всех явных и неявных tween-объектов, используемых Pyramid приложением</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="297"/>
+        <location filename="../Project.py" line="307"/>
         <source>&lt;b&gt;Show Tween Objects&lt;/b&gt;&lt;p&gt;Show all implicit and explicit tween objects used by a Pyramid application.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Показ Tween объектов&lt;/b&gt;&lt;p&gt;Отображение всех явных и неявных tween-объектов, используемых Pyramid приложением.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build Distribution</source>
         <translation>Создать дистрибутив</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="309"/>
+        <location filename="../Project.py" line="319"/>
         <source>Build &amp;Distribution</source>
         <translation>Создать &amp;дистрибутив</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="314"/>
+        <location filename="../Project.py" line="324"/>
         <source>Builds a distribution file for the Pyramid project</source>
         <translation>Создание файла дистрибутива для Pyramid проекта</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="316"/>
+        <location filename="../Project.py" line="326"/>
         <source>&lt;b&gt;Build Distribution&lt;/b&gt;&lt;p&gt;Builds a distribution file for the Pyramid project using &quot;python setup.py sdist&quot;.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Создать дистрибутив&lt;/b&gt;&lt;p&gt;Создание файла дистрибутива для Pyramid проекта посредством команды &quot;python setup.py sdist&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>Documentation</source>
         <translation>Документация</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="328"/>
+        <location filename="../Project.py" line="338"/>
         <source>D&amp;ocumentation</source>
         <translation>Д&amp;окументация</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="333"/>
+        <location filename="../Project.py" line="343"/>
         <source>Shows the help viewer with the Pyramid documentation</source>
         <translation>Отображение справочника с документацией Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="335"/>
+        <location filename="../Project.py" line="345"/>
         <source>&lt;b&gt;Documentation&lt;/b&gt;&lt;p&gt;Shows the help viewer with the Pyramid documentation.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Документация&lt;/b&gt;&lt;p&gt;Отображение справочника с документацией Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>About Pyramid</source>
         <translation>О Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="346"/>
+        <location filename="../Project.py" line="356"/>
         <source>About P&amp;yramid</source>
         <translation>О P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="351"/>
+        <location filename="../Project.py" line="361"/>
         <source>Shows some information about Pyramid</source>
         <translation>Отображение информации о Pyramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="353"/>
+        <location filename="../Project.py" line="363"/>
         <source>&lt;b&gt;About Pyramid&lt;/b&gt;&lt;p&gt;Shows some information about Pyramid.&lt;/p&gt;</source>
         <translation>&lt;b&gt;О Pyramid&lt;/b&gt;&lt;p&gt;Отображение информации о Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="370"/>
+        <location filename="../Project.py" line="380"/>
         <source>P&amp;yramid</source>
         <translation>P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="444"/>
+        <location filename="../Project.py" line="454"/>
         <source>New template...</source>
         <translation>Новый шаблон...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="452"/>
+        <location filename="../Project.py" line="462"/>
         <source>Extract Messages</source>
         <translation>Извлечь сообщения</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="455"/>
+        <location filename="../Project.py" line="465"/>
         <source>Compile All Catalogs</source>
         <translation>Компилировать все каталоги</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="458"/>
+        <location filename="../Project.py" line="468"/>
         <source>Compile Selected Catalogs</source>
         <translation>Компилировать выбранные каталоги</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="461"/>
+        <location filename="../Project.py" line="471"/>
         <source>Update All Catalogs</source>
         <translation>Обновить все каталоги</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="464"/>
+        <location filename="../Project.py" line="474"/>
         <source>Update Selected Catalogs</source>
         <translation>Обновить выбранные каталоги</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="504"/>
+        <location filename="../Project.py" line="514"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation>Шаблоны Chameleon (*.pt);;Шаблоны Chameleon Text (*.txt);;Шаблоны Mako (*.mako);;Mako Шаблоны (*.mak);;Файлы HTML (*.html);;Файлы HTML (*.htm);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <source>New Form</source>
         <translation>Новая форма</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="527"/>
+        <location filename="../Project.py" line="537"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>Файл уже существует! Переписать его?</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select Pyramid Project</source>
         <translation>Выбор Pyramid проекта</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="971"/>
+        <location filename="../Project.py" line="1076"/>
         <source>Select the Pyramid project to work with.</source>
         <translation>Выберите Pyramid проект для работы.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1010"/>
+        <location filename="../Project.py" line="1115"/>
         <source>None</source>
         <translation>None</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1013"/>
+        <location filename="../Project.py" line="1118"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation>&amp;Текущий Pyramid проект ({0})</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1702"/>
+        <location filename="../Project.py" line="1807"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation>Текущий Pyramid проект не выбран или Pyramid проект еще не создан. Отмена...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>Process Generation Error</source>
         <translation>Ошибка при запуске процесса</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1112"/>
+        <location filename="../Project.py" line="1217"/>
         <source>The Pyramid server could not be started.</source>
         <translation>Невозможно запустить Pyramid сервер.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1158"/>
+        <location filename="../Project.py" line="1263"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation>Невозможно запустить web-браузер с URL &quot;{0}&quot;.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1200"/>
+        <location filename="../Project.py" line="1305"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation>Невозможно запустить процесс Pyramid Shell.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1231"/>
+        <location filename="../Project.py" line="1336"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation>Среда разработки Pyramid успешно настроена.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1250"/>
+        <location filename="../Project.py" line="1355"/>
         <source>Build Distribution File</source>
         <translation>Создание файла дистрибутива</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1274"/>
+        <location filename="../Project.py" line="1379"/>
         <source>Python distribution file built successfully.</source>
         <translation>Файл дистрибутива Python успешно создан.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1323"/>
+        <location filename="../Project.py" line="1428"/>
         <source>Database initialized successfully.</source>
         <translation>База данных успешно инициализирована.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1349"/>
+        <location filename="../Project.py" line="1454"/>
         <source>Enter the URL to be matched:</source>
         <translation>Введите URL для сопоставления:</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1490"/>
+        <location filename="../Project.py" line="1595"/>
         <source>Extract messages</source>
         <translation>Извлечь сообщения</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1530"/>
+        <location filename="../Project.py" line="1635"/>
         <source>
 Messages extracted successfully.</source>
         <translation>
 Сообщения успешно извлечены.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1563"/>
+        <location filename="../Project.py" line="1668"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>
 Каталог сообщений успешно инициализирован.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1617"/>
+        <location filename="../Project.py" line="1722"/>
         <source>Compiling message catalogs</source>
         <translation>Компиляция каталогов сообщений</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1649"/>
+        <location filename="../Project.py" line="1754"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>Каталоги сообщений успешно компилированы.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1724"/>
+        <location filename="../Project.py" line="1829"/>
         <source>No locales detected. Aborting...</source>
         <translation>Локали не найдены. Прерывание выполнения...</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1698"/>
+        <location filename="../Project.py" line="1803"/>
         <source>Updating message catalogs</source>
         <translation>Обновление каталогов сообщений</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1730"/>
+        <location filename="../Project.py" line="1835"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>
 Каталоги сообщений успешно обновлены.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1544"/>
+        <location filename="../Project.py" line="1649"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Инициализация каталога сообщений для &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="793"/>
+        <location filename="../Project.py" line="898"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pyramid это высокоуровневый веб фреймворк, созданный на Python, воодушевляющий к развитому, чистому и практичному дизайну.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Версия:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="430"/>
+        <location filename="../Project.py" line="440"/>
         <source>Open with {0}</source>
         <translation>Открыть с помощью {0}</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1752"/>
+        <location filename="../Project.py" line="1857"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation>Невозможен запуск редактора переводов ({0}).</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1506"/>
+        <location filename="../Project.py" line="1611"/>
         <source>No setup.cfg found or no &quot;extract_messages&quot; section found in setup.cfg.</source>
         <translation>Не найден файл setup.cfg или не найдена &quot;extract_messages&quot; секция в setup.cfg.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="1513"/>
+        <location filename="../Project.py" line="1618"/>
         <source>No &quot;output_file&quot; option found in setup.cfg.</source>
         <translation>Опция &quot;output_file&quot; не найдена в setup.cfg.</translation>
     </message>
     <message>
-        <location filename="../Project.py" line="542"/>
+        <location filename="../Project.py" line="552"/>
         <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;Новый файл формы &lt;b&gt;{0}&lt;/b&gt; не может быть создан.&lt;br/&gt; Проблема: {1}&lt;/p&gt;</translation>
     </message>
@@ -633,15 +633,10 @@
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="../../PluginProjectPyramid.py" line="411"/>
+        <location filename="../../PluginProjectPyramid.py" line="395"/>
         <source>Pyramid</source>
         <translation>Pyramid</translation>
     </message>
-    <message>
-        <location filename="../../PluginProjectPyramid.py" line="171"/>
-        <source>eric6 version is too old, {0}, {1} or newer needed.</source>
-        <translation>Слишком старая версия Eric6, необходима {0}, {1} или более поздняя.</translation>
-    </message>
 </context>
 <context>
     <name>PyramidDialog</name>
@@ -739,72 +734,72 @@
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="229"/>
         <source>Pyramid Virtual Environment</source>
         <translation>Виртуальное окружение Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="180"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="206"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation>Введите путь виртуального окружения Pyramid. Оставьте пустым если не будете использовать установки виртуального окружения.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="193"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation>Выбор директории виртуального окружения посредством диалога выбора</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="203"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="253"/>
         <source>Pyramid Python Console:</source>
         <translation>Консоль Pyramid Python:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="216"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="266"/>
         <source>Select the Python console type</source>
         <translation>Выберите тип консоли Python</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="162"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="188"/>
         <source>Python 2</source>
         <translation>Python 2</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="226"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="278"/>
         <source>Pyramid Documentation</source>
         <translation>Документация Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="232"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="284"/>
         <source>URL:</source>
         <translation>URL:</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="239"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="291"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation>Введите URL документации Pyramid</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="70"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
         <source>Plain Python</source>
         <translation>Plain Python</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="71"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
         <source>IPython</source>
         <translation>IPython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="72"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="73"/>
         <source>bpython</source>
         <translation>bpython</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="134"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="183"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation>Выбор виртуального окружения для Python 3</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="153"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="202"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation>Выбор виртуального окружения для Python 2</translation>
     </message>
@@ -814,22 +809,22 @@
         <translation>Команды консоли</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>Translations Editor</source>
         <translation>Редактор перевода</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="268"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="320"/>
         <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
         <translation>Введите путь к редактору, который будет использоваться для перевода. Оставьте поле пустым для запрета этой возможности.</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="281"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="333"/>
         <source>Select the translations editor via a file selection dialog</source>
         <translation>Выбор редактора для перевода посредством диалога выбора</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.py" line="169"/>
+        <location filename="../ConfigurationPage/PyramidPage.py" line="218"/>
         <source>All Files (*)</source>
         <translation>Все файлы (*)</translation>
     </message>
@@ -849,10 +844,15 @@
         <translation>Внешний web-браузер</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/PyramidPage.ui" line="246"/>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="298"/>
         <source>Press to reset the URL to the default URL</source>
         <translation>Сбросить к URL по умолчанию</translation>
     </message>
+    <message>
+        <location filename="../ConfigurationPage/PyramidPage.ui" line="235"/>
+        <source>Select the Virtual Environment to be used with Pyramid</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>

eric ide

mercurial