PluginCxFreeze.py

Wed, 21 Sep 2022 16:47:33 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Sep 2022 16:47:33 +0200
branch
eric7
changeset 139
4df5e67b084b
parent 137
da8cc28e689f
child 140
9e20ee9c7ca2
permissions
-rw-r--r--

Reformatted source code with 'Black'.

25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
1 # -*- coding: utf-8 -*-
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
2
136
d9228f38cfe8 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 134
diff changeset
3 # Copyright (c) 2010 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
4 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
5
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
6 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
7 Module implementing the CxFreeze plugin.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
8 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
9
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
10 import os
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
11 import platform
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
12
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
13 from PyQt6.QtCore import QObject, QTranslator, QCoreApplication, QProcess
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
14 from PyQt6.QtWidgets import QDialog
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
15
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
16 from EricWidgets import EricMessageBox
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
17 from EricGui.EricAction import EricAction
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
18 from EricWidgets.EricApplication import ericApp
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
19
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
20 import Utilities
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
21
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
22 # Start-of-Header
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
23 name = "CxFreeze Plugin"
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
24 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
25 autoactivate = True
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
26 deactivateable = True
137
da8cc28e689f Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
27 version = "10.0.0"
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
28 className = "CxFreezePlugin"
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
29 packageName = "CxFreeze"
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
30 shortDescription = "Show the CxFreeze dialogs."
123
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
31 longDescription = (
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
32 """This plugin implements the CxFreeze dialogs."""
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
33 """ CxFreeze is used to generate a distribution package."""
123
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
34 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
35 needsRestart = False
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
36 pyqtApi = 2
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
37 # End-of-Header
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
38
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
39 error = ""
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
40
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
41 exePy3 = []
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
42
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
diff changeset
43
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
44 def exeDisplayDataList():
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
45 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
46 Public method to support the display of some executable info.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
47
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
48 @return dictionary containing the data to query the presence of
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
49 the executable
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
50 @rtype dict
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
51 """
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
52 dataList = []
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
53 data = {
56
c8a47a8536b0 filedialog to add distribution dependent files, e.g. *.ui, readme, which are copied after the freeze process
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 54
diff changeset
54 "programEntry": True,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
55 "header": QCoreApplication.translate("CxFreezePlugin", "Packagers - cx_freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
56 "exe": "dummyfreeze",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
57 "versionCommand": "--version",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
58 "versionStartsWith": "dummyfreeze",
56
c8a47a8536b0 filedialog to add distribution dependent files, e.g. *.ui, readme, which are copied after the freeze process
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 54
diff changeset
59 "versionPosition": -1,
c8a47a8536b0 filedialog to add distribution dependent files, e.g. *.ui, readme, which are copied after the freeze process
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 54
diff changeset
60 "version": "",
c8a47a8536b0 filedialog to add distribution dependent files, e.g. *.ui, readme, which are copied after the freeze process
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 54
diff changeset
61 "versionCleanup": None,
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
62 }
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
63
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
64 if _checkProgram():
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
65 for exePath in exePy3:
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
66 data["exe"] = exePath
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
67 data["versionStartsWith"] = "cxfreeze"
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
68 dataList.append(data.copy())
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
69 else:
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
70 dataList.append(data)
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
71 return dataList
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
72
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
diff changeset
73
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
74 def _findExecutable(majorVersion):
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
75 """
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
76 Restricted function to determine the names of the executable.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
77
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
78 @param majorVersion major Python version of the executables
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
79 @type int
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
80 @return names of the executable
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
81 @rtype list of str
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
82 """
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
83 # Determine Python Version
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
84 if majorVersion == 3:
104
192bc09e64de Fixed an issue preventing the activation of the plug-in with Python 3 >= 3.5.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
85 minorVersions = range(10)
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
86 else:
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
87 return []
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
88
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
89 executables = set()
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
90 if Utilities.isWindowsPlatform():
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
91 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
92 # Windows
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
93 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
94 try:
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
95 import winreg
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
96 except ImportError:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
97 import _winreg as winreg # __IGNORE_WARNING__
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
98
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
99 def getExePath(branch, access, versionStr):
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
100 try:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
101 software = winreg.OpenKey(branch, "Software", 0, access)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
102 python = winreg.OpenKey(software, "Python", 0, access)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
103 pcore = winreg.OpenKey(python, "PythonCore", 0, access)
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
104 version = winreg.OpenKey(pcore, versionStr, 0, access)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
105 installpath = winreg.QueryValue(version, "InstallPath")
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
106 exe = os.path.join(installpath, "Scripts", "cxfreeze.bat")
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
107 if os.access(exe, os.X_OK):
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
108 return exe
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
109 except WindowsError: # __IGNORE_WARNING__
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
110 return None
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
111 return None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
112
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
113 versionSuffixes = ["", "-32", "-64"]
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
114 for minorVersion in minorVersions:
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
115 for versionSuffix in versionSuffixes:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
116 versionStr = "{0}.{1}{2}".format(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
117 majorVersion, minorVersion, versionSuffix
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
118 )
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
119 exePath = getExePath(
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
120 winreg.HKEY_CURRENT_USER,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
121 winreg.KEY_WOW64_32KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
122 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
123 )
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
124 if exePath is not None:
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
125 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
126
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
127 exePath = getExePath(
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
128 winreg.HKEY_LOCAL_MACHINE,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
129 winreg.KEY_WOW64_32KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
130 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
131 )
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
132 if exePath is not None:
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
133 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
134
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
135 # Even on Intel 64-bit machines it's 'AMD64'
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
136 if platform.machine() == "AMD64":
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
137 exePath = getExePath(
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
138 winreg.HKEY_CURRENT_USER,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
139 winreg.KEY_WOW64_64KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
140 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
141 )
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
142 if exePath is not None:
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
143 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
144
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
145 exePath = getExePath(
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
146 winreg.HKEY_LOCAL_MACHINE,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
147 winreg.KEY_WOW64_64KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
148 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
149 )
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
150 if exePath is not None:
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
151 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
152
123
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
153 if not executables and majorVersion >= 3:
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
154 # check the PATH environment variable if nothing was found
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
155 # Python 3 only
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
156 path = Utilities.getEnvironmentEntry("PATH")
123
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
157 if path:
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
158 dirs = path.split(os.pathsep)
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
159 for directory in dirs:
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
160 for suffix in (".bat", ".exe"):
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
161 exe = os.path.join(directory, "cxfreeze" + suffix)
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
162 if os.access(exe, os.X_OK):
dd6f7c9041a4 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
163 executables.add(exe)
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
164 else:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
165 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
166 # Linux, Unix ...
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
167 cxfreezeScript = "cxfreeze"
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
168 scriptSuffixes = ["", "-python{0}".format(majorVersion)]
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
169 for minorVersion in minorVersions:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
170 scriptSuffixes.append("-python{0}.{1}".format(majorVersion, minorVersion))
30
153f0acb2ebb Corrected some more stuff in the main plug-in file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
171 # There could be multiple cxfreeze executables in the path
28
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
172 # e.g. for different python variants
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
173 path = Utilities.getEnvironmentEntry("PATH")
28
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
174 # environment variable not defined
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
175 if path is None:
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
176 return []
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
177
28
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
178 # step 1: determine possible candidates
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
179 exes = []
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
180 dirs = path.split(os.pathsep)
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
181 for directory in dirs:
33
2a3b4b7a633f Enhanced the algorithm to determine the cxfreeze executable on non-Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
182 for suffix in scriptSuffixes:
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
183 exe = os.path.join(directory, cxfreezeScript + suffix)
33
2a3b4b7a633f Enhanced the algorithm to determine the cxfreeze executable on non-Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
184 if os.access(exe, os.X_OK):
2a3b4b7a633f Enhanced the algorithm to determine the cxfreeze executable on non-Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
185 exes.append(exe)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
186
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
187 # step 2: determine the Python variant
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
188 _exePy3 = set()
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
189 versionArgs = ["-c", "import sys; print(sys.version_info[0])"]
28
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
190 for exe in exes:
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
191 with open(exe, "r") as f:
28
bbcf4437e32a Fixed the algorithm searching for the right cxfreeze executable in the presence of multiple installations for different Python versions..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
192 line0 = f.readline()
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
193 program = line0.replace("#!", "").strip()
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
194 process = QProcess()
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
195 process.start(program, versionArgs)
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
196 process.waitForFinished(5000)
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
197 # get a QByteArray of the output
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
198 versionBytes = process.readAllStandardOutput()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
199 versionStr = str(versionBytes, encoding="utf-8").strip()
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
200 if versionStr == "3":
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
201 _exePy3.add(exe)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
202
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
203 executables = _exePy3
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
204
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
205 # sort items, the probably newest topmost
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
206 executables = list(executables)
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
207 executables.sort(reverse=True)
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
208 return executables
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
209
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
diff changeset
210
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
211 def _checkProgram():
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
212 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
213 Restricted function to check the availability of cxfreeze.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
214
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
215 @return flag indicating availability
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
216 @rtype bool
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
217 """
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
218 global error, exePy3
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
219
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
220 exePy3 = _findExecutable(3)
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
221 if exePy3 == []:
86
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
222 if Utilities.isWindowsPlatform():
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
223 error = QCoreApplication.translate(
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
224 "CxFreezePlugin",
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
225 "The cxfreeze.bat executable could not be found."
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
226 "Did you run the cxfreeze-postinstall script?",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
227 )
86
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
228 else:
c2fe73b1087b Change the error message for Windows for a missing executable to be more descriptive and to give a hint.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
229 error = QCoreApplication.translate(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
230 "CxFreezePlugin", "The cxfreeze executable could not be found."
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
231 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
232 return False
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
233 else:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
234 return True
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
235
56
c8a47a8536b0 filedialog to add distribution dependent files, e.g. *.ui, readme, which are copied after the freeze process
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 54
diff changeset
236
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
237 class CxFreezePlugin(QObject):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
238 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
239 Class implementing the CxFreeze plugin.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
240 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
241
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
242 def __init__(self, ui):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
243 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
244 Constructor
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
245
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
246 @param ui reference to the user interface object
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
247 @type UserInterface
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
248 """
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
249 super().__init__(ui)
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
250 self.__ui = ui
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
251 self.__initialize()
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
252 _checkProgram()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
253
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
254 self.__translator = None
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
255 self.__loadTranslator()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
256
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
257 def __initialize(self):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
258 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
259 Private slot to (re)initialize the plugin.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
260 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
261 self.__projectAct = None
113
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
262 self.__projectSeparator = None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
263
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
264 def activate(self):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
265 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
266 Public method to activate this plugin.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
267
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
268 @return tuple of None and activation status
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
269 @rtype tuple of (None, bool)
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
270 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
271 global error
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
272
54
d14ff08ea519 A little improvement to Tobias' patches.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
273 # There is already an error, don't activate
d14ff08ea519 A little improvement to Tobias' patches.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
274 if error:
d14ff08ea519 A little improvement to Tobias' patches.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
275 return None, False
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
276
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
277 # cxfreeze is only activated if it is available
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
278 if not _checkProgram():
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
279 return None, False
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
280
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
281 project = ericApp().getObject("Project")
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
282 menu = project.getMenu("Packagers")
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
283 if menu:
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
284 self.__projectAct = EricAction(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
285 self.tr("Use cx_freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
286 self.tr("Use cx_&freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
287 0,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
288 0,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
289 self,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
290 "packagers_cxfreeze",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
291 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
292 self.__projectAct.setStatusTip(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
293 self.tr("Generate a distribution package using cx_freeze")
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
294 )
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
295 self.__projectAct.setWhatsThis(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
296 self.tr(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
297 """<b>Use cx_freeze</b>"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
298 """<p>Generate a distribution package using cx_freeze."""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
299 """ The command is executed in the project path. All"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
300 """ files and directories must be given absolute or"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
301 """ relative to the project directory.</p>"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
302 )
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
303 )
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
304 self.__projectAct.triggered.connect(self.__cxfreeze)
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
305 project.addEricActions([self.__projectAct])
113
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
306 self.__projectSeparator = menu.addSeparator()
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
307 menu.addAction(self.__projectAct)
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
308 project.showMenu.connect(self.__projectShowMenu)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
309
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
310 error = ""
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
311 return None, True
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
312
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
313 def deactivate(self):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
314 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
315 Public method to deactivate this plugin.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
316 """
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
317 menu = ericApp().getObject("Project").getMenu("Packagers")
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
318 if menu:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
319 if self.__projectAct:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
320 menu.removeAction(self.__projectAct)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
321 ericApp().getObject("Project").removeEricActions([self.__projectAct])
113
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
322 if self.__projectSeparator:
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
323 menu.removeAction(self.__projectSeparator)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
324
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
325 self.__initialize()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
326
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
327 def __projectShowMenu(self, menuName, menu):
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
328 """
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
329 Private slot called, when the the project menu or a submenu is
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
330 about to be shown.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
331
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
332 @param menuName name of the menu to be shown
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
333 @type str
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
334 @param menu reference to the menu
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
335 @type QMenu
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
336 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
337 if menuName == "Packagers" and self.__projectAct is not None:
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
338 self.__projectAct.setEnabled(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
339 ericApp().getObject("Project").getProjectLanguage() == "Python3"
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
340 )
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
341
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
342 def __loadTranslator(self):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
343 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
344 Private method to load the translation file.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
345 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
346 if self.__ui is not None:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
347 loc = self.__ui.getLocale()
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
348 if loc and loc != "C":
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
349 locale_dir = os.path.join(os.path.dirname(__file__), "CxFreeze", "i18n")
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
350 translation = "cxfreeze_{0}".format(loc)
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
351 translator = QTranslator(None)
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
352 loaded = translator.load(translation, locale_dir)
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
353 if loaded:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
354 self.__translator = translator
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
355 ericApp().installTranslator(self.__translator)
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
356 else:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
357 print(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
358 "Warning: translation file '{0}' could not be"
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
359 " loaded.".format(translation)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
360 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
361 print("Using default.")
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
362
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
363 def __cxfreeze(self):
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
364 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
365 Private slot to handle the cxfreeze execution.
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
366 """
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
367 project = ericApp().getObject("Project")
115
f2dd7703b9c2 PluginCxFreeze: modified the check for a defined project main script to make it more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 113
diff changeset
368 if not project.getMainScript():
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
369 # no main script defined
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
370 EricMessageBox.critical(
71
9cd82b80f987 Fixed a bug in the call of a message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
371 self.__ui,
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
372 self.tr("cxfreeze"),
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
373 self.tr(
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
374 """There is no main script defined for the current"""
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
375 """ project."""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
376 ),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
377 EricMessageBox.StandardButtons(EricMessageBox.Abort),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
378 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
379 return
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
380
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
381 majorVersionStr = project.getProjectLanguage()
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
382 exe = {"Python3": exePy3}.get(majorVersionStr)
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
383 if exe == []:
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
384 EricMessageBox.critical(
71
9cd82b80f987 Fixed a bug in the call of a message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
385 self.__ui,
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
386 self.tr("cxfreeze"),
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
387 self.tr("""The cxfreeze executable could not be found."""),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
388 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
389 return
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
390
52
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
391 # check if all files saved and errorfree before continue
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
392 if not project.checkAllScriptsDirty(reportSyntaxErrors=True):
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
393 return
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
394
37
94949c60ef54 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
395 from CxFreeze.CxfreezeConfigDialog import CxfreezeConfigDialog
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
396
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
397 parms = project.getData("PACKAGERSPARMS", "CXFREEZE")
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
398 dlg = CxfreezeConfigDialog(project, exe, parms)
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
399 if dlg.exec() == QDialog.DialogCode.Accepted:
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
400 args, parms = dlg.generateParameters()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
401 project.setData("PACKAGERSPARMS", "CXFREEZE", parms)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
402
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
403 # now do the call
37
94949c60ef54 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
404 from CxFreeze.CxfreezeExecDialog import CxfreezeExecDialog
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
405
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
406 dia = CxfreezeExecDialog("cxfreeze")
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
407 dia.show()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
408 res = dia.start(args, parms, project.ppath, project.getMainScript())
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
409 if res:
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
410 dia.exec()
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
411
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
412
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
413 def installDependencies(pipInstall):
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
414 """
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
415 Function to install dependencies of this plug-in.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
416
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
417 @param pipInstall function to be called with a list of package names.
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
418 @type function
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
419 """
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
420 try:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
421 import cx_Freeze # __IGNORE_WARNING__
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
422 except ImportError:
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
423 pipInstall(["cx-Freeze"])
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
424
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
425
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
426 #
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
427 # eflag: noqa = M801

eric ide

mercurial