Utilities/__init__.py

changeset 6291
94e0e688dcad
parent 6289
f481df37413c
child 6292
e08a94e1ecdd
equal deleted inserted replaced
6290:bf4624957d2d 6291:94e0e688dcad
1746 exe = ex_ 1746 exe = ex_
1747 1747
1748 return exe 1748 return exe
1749 1749
1750 ############################################################################### 1750 ###############################################################################
1751 # PySide utility functions below 1751 # PySide/PySide2 utility functions below
1752 ############################################################################### 1752 ###############################################################################
1753 1753
1754 1754
1755 def generatePySideToolPath(toolname): 1755 def generatePySideToolPath(toolname, variant="2"):
1756 """ 1756 """
1757 Module function to generate the executable path for a PySide tool. 1757 Module function to generate the executable path for a PySide/PySide2 tool.
1758 1758
1759 @param toolname base name of the tool (string) 1759 @param toolname base name of the tool
1760 @return the PySide tool path with extension (string) 1760 @type str
1761 """ 1761 @param variant indicator for the PySide variant
1762 @type str
1763 @return the PySide/PySide2 tool path with extension
1764 @rtype str
1765 """
1766 assert variant in ("1", "2")
1767
1762 if isWindowsPlatform(): 1768 if isWindowsPlatform():
1763 pysideInterpreter = checkPyside() 1769 pysideInterpreters = checkPyside(variant)
1764 interpreter = sys.version_info[0] - 2 1770 interpreter = sys.version_info[0] - 2
1765 hasPyside = pysideInterpreter[interpreter] 1771 hasPyside = pysideInterpreters[interpreter]
1766 # if it isn't the internal interpreter, it has to be the external one 1772 # if it isn't the internal interpreter, it has to be the external one
1767 if not hasPyside: 1773 if not hasPyside:
1768 interpreter = not interpreter 1774 interpreter = not interpreter
1769 if interpreter: 1775 if interpreter:
1770 prefix = os.path.dirname( 1776 prefix = os.path.dirname(
1771 Preferences.getDebugger("Python3Interpreter")) 1777 Preferences.getDebugger("Python3Interpreter"))
1772 else: 1778 else:
1773 prefix = os.path.dirname( 1779 prefix = os.path.dirname(
1774 Preferences.getDebugger("PythonInterpreter")) 1780 Preferences.getDebugger("PythonInterpreter"))
1775 if toolname == "pyside-uic": 1781 # TODO: check this on Windows
1782 if toolname in ["pyside-uic", "pyside2-uic"]:
1776 return os.path.join(prefix, "Scripts", toolname + '.exe') 1783 return os.path.join(prefix, "Scripts", toolname + '.exe')
1777 else: 1784 else:
1778 return os.path.join(prefix, "Lib", "site-packages", "PySide", 1785 return os.path.join(
1779 toolname + ".exe") 1786 prefix, "Lib", "site-packages",
1787 "PySide{0}".format("" if variant == "1" else variant),
1788 toolname + ".exe")
1780 else: 1789 else:
1781 return toolname 1790 if variant == "1":
1782 1791 return toolname
1783 1792
1784 def checkPyside(): 1793 elif toolname == "pyside2-uic":
1785 """ 1794 return toolname
1786 Module function to check the presence of PySide. 1795 else:
1787 1796 import distutils.sysconfig
1788 @return list of two flags indicating the presence of PySide for Python2 1797 return os.path.join(distutils.sysconfig.get_python_lib(True),
1789 and PySide for Python3 (boolean, boolean) 1798 "PySide2", toolname)
1790 """ 1799
1800
1801 def checkPyside(variant="2"):
1802 """
1803 Module function to check the presence of PySide/PySide2.
1804
1805 @param variant indicator for the PySide variant
1806 @type str
1807 @return list of two flags indicating the presence of PySide/PySide2 for
1808 Python2 and PySide/PySide2 for Python3
1809 @rtype tuple of (bool, bool)
1810 """
1811 assert variant in ("1", "2")
1812
1791 pysideInformation = [] 1813 pysideInformation = []
1792 for interpreterName in ["PythonInterpreter", "Python3Interpreter"]: 1814 for interpreterName in ["PythonInterpreter", "Python3Interpreter"]:
1793 interpreter = Preferences.getDebugger(interpreterName) 1815 interpreter = Preferences.getDebugger(interpreterName)
1794 if interpreter == "" or not isinpath(interpreter): 1816 if interpreter == "" or not isinpath(interpreter):
1795 hasPyside = False 1817 hasPyside = False
1796 else: 1818 else:
1797 hasPyside = False 1819 hasPyside = False
1798 checker = os.path.join(getConfig('ericDir'), 1820 checker = os.path.join(getConfig('ericDir'),
1799 "Utilities", "PySideImporter.py") 1821 "Utilities", "PySideImporter.py")
1800 args = [checker] 1822 args = [checker, "-" + variant]
1801 proc = QProcess() 1823 proc = QProcess()
1802 proc.setProcessChannelMode(QProcess.MergedChannels) 1824 proc.setProcessChannelMode(QProcess.MergedChannels)
1803 proc.start(interpreter, args) 1825 proc.start(interpreter, args)
1804 finished = proc.waitForFinished(30000) 1826 finished = proc.waitForFinished(30000)
1805 if finished: 1827 if finished:

eric ide

mercurial