PluginCxFreeze.py

Tue, 10 Dec 2024 15:48:55 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:48:55 +0100
branch
eric7
changeset 149
8f00ab5d72a2
parent 147
908186813616
permissions
-rw-r--r--

Updated copyright for 2025.

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
149
8f00ab5d72a2 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
3 # Copyright (c) 2010 - 2025 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
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
13 from PyQt6.QtCore import QCoreApplication, QObject, QProcess, QTranslator
134
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
140
9e20ee9c7ca2 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 139
diff changeset
16 from eric7.EricGui.EricAction import EricAction
9e20ee9c7ca2 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 139
diff changeset
17 from eric7.EricWidgets import EricMessageBox
9e20ee9c7ca2 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 139
diff changeset
18 from eric7.EricWidgets.EricApplication import ericApp
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
19
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
20 try:
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
21 from eric7.SystemUtilities.OSUtilities import getEnvironmentEntry, isWindowsPlatform
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
22 except ImportError:
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
23 # imports for eric < 23.1
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
24 from eric7.Globals import isWindowsPlatform
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
25 from eric7.Utilities import getEnvironmentEntry
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
26
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
27 # Start-of-Header
147
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
28 __header__ = {
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
29 "name": "CxFreeze Plugin",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
30 "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
31 "autoactivate": True,
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
32 "deactivateable": True,
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
33 "version": "10.3.0",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
34 "className": "CxFreezePlugin",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
35 "packageName": "CxFreeze",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
36 "shortDescription": "Show the CxFreeze dialogs.",
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
37 "longDescription": (
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
38 "This plugin implements the CxFreeze dialogs. CxFreeze is used to"
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
39 " generate a distribution package."
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
40 ),
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
41 "needsRestart": False,
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
42 "hasCompiledForms": True,
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
43 "pyqtApi": 2,
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
44 }
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
45 # 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
46
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
47 error = ""
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
48
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
49 exePy3 = []
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
50
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
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 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
53 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
54 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
55
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
56 @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
57 the executable
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
58 @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
59 """
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
60 dataList = []
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
61 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
62 "programEntry": True,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
63 "header": QCoreApplication.translate("CxFreezePlugin", "Packagers - cx_freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
64 "exe": "dummyfreeze",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
65 "versionCommand": "--version",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
66 "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
67 "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
68 "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
69 "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
70 }
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
71
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
72 if _checkProgram():
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
73 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
74 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
75 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
76 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
77 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
78 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
79 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
80
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
diff changeset
81
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
82 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
83 """
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 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
85
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
86 @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
87 @type int
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
88 @return names of the executable
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
89 @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
90 """
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
91 # 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
92 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
93 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
94 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
95 return []
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
96
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
97 executables = set()
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
98 if isWindowsPlatform():
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
99 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
100 # Windows
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
101 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
102 try:
146
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
103 import winreg # noqa: I101, I103
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
104 except ImportError:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
105 import _winreg as winreg # __IGNORE_WARNING__
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
106
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 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
108 try:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
109 software = winreg.OpenKey(branch, "Software", 0, access)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
110 python = winreg.OpenKey(software, "Python", 0, access)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
111 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
112 version = winreg.OpenKey(pcore, versionStr, 0, access)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
113 installpath = winreg.QueryValue(version, "InstallPath")
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
114 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
115 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
116 return exe
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
117 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
118 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
119 return None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
120
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
121 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
122 for minorVersion in minorVersions:
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
123 for versionSuffix in versionSuffixes:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
124 versionStr = "{0}.{1}{2}".format(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
125 majorVersion, minorVersion, versionSuffix
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_CURRENT_USER,
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
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
135 exePath = getExePath(
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
136 winreg.HKEY_LOCAL_MACHINE,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
137 winreg.KEY_WOW64_32KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
138 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
139 )
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
140 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
141 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
142
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
143 # 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
144 if platform.machine() == "AMD64":
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_CURRENT_USER,
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
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
153 exePath = getExePath(
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
154 winreg.HKEY_LOCAL_MACHINE,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
155 winreg.KEY_WOW64_64KEY | winreg.KEY_READ,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
156 versionStr,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
157 )
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
158 if exePath is not None:
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
159 executables.add(exePath)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
160
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
161 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
162 # 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
163 # Python 3 only
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
164 path = 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 else:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
173 #
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
174 # Linux, Unix ...
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
175 cxfreezeScript = "cxfreeze"
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
176 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
177 for minorVersion in minorVersions:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
178 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
179 # 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
180 # e.g. for different python variants
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
181 path = 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
182 # 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
183 if path is None:
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
184 return []
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
185
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
186 # 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
187 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
188 dirs = path.split(os.pathsep)
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
189 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
190 for suffix in scriptSuffixes:
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
191 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
192 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
193 exes.append(exe)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
194
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
195 # 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
196 _exePy3 = set()
108
13fb1d9e7049 Improved executable and Python version determination.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
197 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
198 for exe in exes:
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
199 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
200 line0 = f.readline()
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
201 program = line0.replace("#!", "").strip()
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
202 process = QProcess()
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
203 process.start(program, versionArgs)
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
204 process.waitForFinished(5000)
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
205 # get a QByteArray of the output
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
206 versionBytes = process.readAllStandardOutput()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
207 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
208 if versionStr == "3":
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
209 _exePy3.add(exe)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
210
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
211 executables = _exePy3
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
212
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
213 # 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
214 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
215 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
216 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
217
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 57
diff changeset
218
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
219 def _checkProgram():
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
220 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
221 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
222
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
223 @return flag indicating availability
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
224 @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
225 """
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
226 global error, exePy3
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
227
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
228 exePy3 = _findExecutable(3)
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
229 if exePy3 == []:
142
9ceff8a10455 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
230 if isWindowsPlatform():
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
231 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
232 "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
233 "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
234 "Did you run the cxfreeze-postinstall script?",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
235 )
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
236 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
237 error = QCoreApplication.translate(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
238 "CxFreezePlugin", "The cxfreeze executable could not be found."
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
239 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
240 return False
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
241 else:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
242 return True
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
243
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
244
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
245 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
246 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
247 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
248 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
249
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
250 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
251 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
252 Constructor
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
253
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
254 @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
255 @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
256 """
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
257 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
258 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
259 self.__initialize()
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
260 _checkProgram()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
261
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
262 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
263 self.__loadTranslator()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
264
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
265 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
266 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
267 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
268 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
269 self.__projectAct = None
113
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
270 self.__projectSeparator = None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
271
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
272 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
273 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
274 Public method to activate this plugin.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
275
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
276 @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
277 @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
278 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
279 global error
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
280
54
d14ff08ea519 A little improvement to Tobias' patches.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
281 # 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
282 if error:
d14ff08ea519 A little improvement to Tobias' patches.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
283 return None, False
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
284
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
285 # 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
286 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
287 return None, False
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
288
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
289 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
290 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
291 if menu:
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
292 self.__projectAct = EricAction(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
293 self.tr("Use cx_freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
294 self.tr("Use cx_&freeze"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
295 0,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
296 0,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
297 self,
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
298 "packagers_cxfreeze",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
299 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
300 self.__projectAct.setStatusTip(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
301 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
302 )
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
303 self.__projectAct.setWhatsThis(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
304 self.tr(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
305 """<b>Use cx_freeze</b>"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
306 """<p>Generate a distribution package using cx_freeze."""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
307 """ 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
308 """ files and directories must be given absolute or"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
309 """ relative to the project directory.</p>"""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
310 )
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
311 )
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
312 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
313 project.addEricActions([self.__projectAct])
113
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
314 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
315 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
316 project.showMenu.connect(self.__projectShowMenu)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
317
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
318 error = ""
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
319 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
320
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
321 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
322 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
323 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
324 """
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
325 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
326 if menu:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
327 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
328 menu.removeAction(self.__projectAct)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
329 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
330 if self.__projectSeparator:
696a9105939d Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
331 menu.removeAction(self.__projectSeparator)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
332
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
333 self.__initialize()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
334
146
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
335 def __projectShowMenu(self, menuName, menu): # noqa: U100
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 """
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 44
diff changeset
337 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
338 about to be shown.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
339
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
340 @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
341 @type str
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
342 @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
343 @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
344 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
345 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
346 self.__projectAct.setEnabled(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
347 ericApp().getObject("Project").getProjectLanguage() == "Python3"
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
348 )
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
349
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
350 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
351 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
352 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
353 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
354 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
355 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
356 if loc and loc != "C":
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
357 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
358 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
359 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
360 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
361 if loaded:
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
362 self.__translator = translator
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
363 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
364 else:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
365 print(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
366 "Warning: translation file '{0}' could not be"
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
367 " loaded.".format(translation)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
368 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
369 print("Using default.")
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
370
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
371 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
372 """
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
373 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
374 """
146
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
375 from CxFreeze.CxfreezeConfigDialog import CxfreezeConfigDialog
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
376 from CxFreeze.CxfreezeExecDialog import CxfreezeExecDialog
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
377
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
378 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
379 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
380 # no main script defined
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
381 EricMessageBox.critical(
71
9cd82b80f987 Fixed a bug in the call of a message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
382 self.__ui,
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
383 self.tr("cxfreeze"),
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
384 self.tr(
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
385 """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
386 """ project."""
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
387 ),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
388 EricMessageBox.StandardButtons(EricMessageBox.Abort),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
389 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
390 return
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
391
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
392 majorVersionStr = project.getProjectLanguage()
125
13f16f4e355a Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 123
diff changeset
393 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
394 if exe == []:
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
395 EricMessageBox.critical(
71
9cd82b80f987 Fixed a bug in the call of a message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
396 self.__ui,
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 77
diff changeset
397 self.tr("cxfreeze"),
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
398 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
399 )
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
400 return
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
401
52
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
402 # 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
403 if not project.checkAllScriptsDirty(reportSyntaxErrors=True):
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
404 return
43d760ff8b3f ask to save modified files before freeze
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 50
diff changeset
405
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
406 parms = project.getData("PACKAGERSPARMS", "CXFREEZE")
147
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
407 dlg = CxfreezeConfigDialog(project, exe, parms, parent=self.__ui)
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
408 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
409 args, parms = dlg.generateParameters()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
410 project.setData("PACKAGERSPARMS", "CXFREEZE", parms)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
411
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
412 # now do the call
147
908186813616 - changed to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 146
diff changeset
413 dia = CxfreezeExecDialog("cxfreeze", parent=self.__ui)
25
737c623c90df Fixed the cxfreeze search algorithm to check a per user install as well.
detlev@die-offenbachs.de
parents: 24
diff changeset
414 dia.show()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
415 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
416 if res:
127
a76379d552f2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
417 dia.exec()
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
418
134
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 def installDependencies(pipInstall):
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
421 """
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
422 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
423
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
424 @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
425 @type function
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
426 """
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
427 try:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
428 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
429 except ImportError:
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
430 pipInstall(["cx-Freeze"])
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
431
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
432
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
433 #
146
32c4e3d4465c Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
434 # eflag: noqa = M801, U200

eric ide

mercurial