PySide2 support: added a configuration option to enter the path containing the PySide2 tools (see Qt configuration page).

Mon, 09 Mar 2020 19:51:02 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 09 Mar 2020 19:51:02 +0100
changeset 7446
67b21645ffec
parent 7445
8077f0b0f0cd
child 7447
ba6171edd33d

PySide2 support: added a configuration option to enter the path containing the PySide2 tools (see Qt configuration page).

eric6/Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
eric6/Preferences/ConfigurationPages/QtPage.ui file | annotate | diff | comparison | revisions
eric6/Preferences/__init__.py file | annotate | diff | comparison | revisions
eric6/Utilities/__init__.py file | annotate | diff | comparison | revisions
--- a/eric6/Preferences/ConfigurationPages/QtPage.py	Mon Mar 09 19:49:48 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/QtPage.py	Mon Mar 09 19:51:02 2020 +0100
@@ -34,6 +34,8 @@
         self.qtToolsDirPicker.setMode(E5PathPickerModes.DirectoryShowFilesMode)
         self.pyqtToolsDirPicker.setMode(
             E5PathPickerModes.DirectoryShowFilesMode)
+        self.pyside2ToolsDirPicker.setMode(
+            E5PathPickerModes.DirectoryShowFilesMode)
         
         # set initial values
         self.qtTransPicker.setText(
@@ -43,6 +45,8 @@
         self.qtPostfixEdit.setText(Preferences.getQt("QtToolsPostfix"))
         self.__updateQtSample()
         self.pyqtToolsDirPicker.setText(Preferences.getQt("PyQtToolsDir"))
+        self.pyside2ToolsDirPicker.setText(
+            Preferences.getQt("PySide2ToolsDir"))
         self.pyuicIndentSpinBox.setValue(Preferences.getQt("PyuicIndent"))
         self.pyuicImportsCheckBox.setChecked(
             Preferences.getQt("PyuicFromImports"))
@@ -56,6 +60,7 @@
         Preferences.setQt("QtToolsPrefix", self.qtPrefixEdit.text())
         Preferences.setQt("QtToolsPostfix", self.qtPostfixEdit.text())
         Preferences.setQt("PyQtToolsDir", self.pyqtToolsDirPicker.text())
+        Preferences.setQt("PySide2ToolsDir", self.pyside2ToolsDirPicker.text())
         Preferences.setQt("PyuicIndent", self.pyuicIndentSpinBox.value())
         Preferences.setQt("PyuicFromImports",
                           self.pyuicImportsCheckBox.isChecked())
--- a/eric6/Preferences/ConfigurationPages/QtPage.ui	Mon Mar 09 19:49:48 2020 +0100
+++ b/eric6/Preferences/ConfigurationPages/QtPage.ui	Mon Mar 09 19:51:02 2020 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>642</width>
-    <height>614</height>
+    <height>772</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -205,6 +205,38 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_5">
+     <property name="title">
+      <string>PySide2 Tools</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_4">
+      <item>
+       <widget class="QLabel" name="label_7">
+        <property name="text">
+         <string>Tools Directory:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="E5PathPicker" name="pyside2ToolsDirPicker" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
+        <property name="toolTip">
+         <string>Enter the path of the PySide2 tools directory, if they are not found.</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>pyuic / pyside-uic Options</string>
@@ -288,6 +320,7 @@
   <tabstop>qtPrefixEdit</tabstop>
   <tabstop>qtPostfixEdit</tabstop>
   <tabstop>pyqtToolsDirPicker</tabstop>
+  <tabstop>pyside2ToolsDirPicker</tabstop>
   <tabstop>pyuicIndentSpinBox</tabstop>
   <tabstop>pyuicImportsCheckBox</tabstop>
  </tabstops>
--- a/eric6/Preferences/__init__.py	Mon Mar 09 19:49:48 2020 +0100
+++ b/eric6/Preferences/__init__.py	Mon Mar 09 19:51:02 2020 +0100
@@ -1229,6 +1229,7 @@
         "PyuicIndent": 4,
         "PyuicFromImports": False,
         "PyQtToolsDir": "",
+        "PySide2ToolsDir": "",
     }
     
     # defaults for corba related stuff
--- a/eric6/Utilities/__init__.py	Mon Mar 09 19:49:48 2020 +0100
+++ b/eric6/Utilities/__init__.py	Mon Mar 09 19:51:02 2020 +0100
@@ -1853,13 +1853,24 @@
     else:
         if variant == "1":
             return toolname
-        
-        elif toolname == "pyside2-uic":
-            return toolname
         else:
-            import distutils.sysconfig
-            return os.path.join(distutils.sysconfig.get_python_lib(True),
-                                "PySide2", toolname)
+            # step 1: check, if the user has configured a tools path
+            path = Preferences.getQt("PySide2ToolsDir")
+            if path:
+                return os.path.join(path, toolname)
+            
+            # step 2: determine from used Python interpreter
+            dirName = os.path.dirname(sys.executable)
+            if os.path.exists(os.path.join(dirName, toolname)):
+                return os.path.join(dirName, toolname)
+            
+            # step 3: if it is not 'pyside2-uic' look in the package directory
+            if toolname == "pyside2-uic":
+                return toolname
+            else:
+                import distutils.sysconfig
+                return os.path.join(distutils.sysconfig.get_python_lib(True),
+                                    "PySide2", toolname)
 
 
 def checkPyside(variant="2"):

eric ide

mercurial