PluginCxFreeze.py

Thu, 28 Apr 2011 19:56:40 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 28 Apr 2011 19:56:40 +0200
changeset 24
4c8a4e5377c6
parent 23
0ea5e51bc627
parent 22
b03d3d52f900
child 25
737c623c90df
permissions
-rw-r--r--

Merged remote changes.

24
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
1 # -*- coding: utf-8 -*-
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
2
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
3 # Copyright (c) 2010 - 2011 Detlev Offenbach <detlev@die-offenbachs.de>
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
4 #
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
5
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
6 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
7 Module implementing the CxFreeze plugin.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
8 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
9
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
10 import os
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
11 import sys
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
12
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
13 from PyQt4.QtCore import QObject, QTranslator, QCoreApplication
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
14 from PyQt4.QtGui import QDialog, QMessageBox
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
15
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
16 from E5Gui.E5Action import E5Action
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
17 from E5Gui.E5Application import e5App
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
18
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
19 from CxFreeze.CxfreezeConfigDialog import CxfreezeConfigDialog
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
20 from CxFreeze.CxfreezeExecDialog import CxfreezeExecDialog
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
21
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
22 import Utilities
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
23
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
24 # Start-of-Header
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
25 name = "CxFreeze Plugin"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
26 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
27 autoactivate = True
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
28 deactivateable = True
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
29 version = "5.0.3"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
30 className = "CxFreezePlugin"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
31 packageName = "CxFreeze"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
32 shortDescription = "Show the CxFreeze dialogs."
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
33 longDescription = """This plugin implements the CxFreeze dialogs.""" \
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
34 """ CxFreeze is used to generate a distribution package."""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
35 needsRestart = False
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
36 pyqtApi = 2
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
37 # End-of-Header
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
38
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
39 error = ""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
40
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
41 def exeDisplayData():
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
42 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
43 Public method to support the display of some executable info.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
44
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
45 @return dictionary containing the data to query the presence of
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
46 the executable
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
47 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
48 data = {
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
49 "programEntry" : True,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
50 "header" : QCoreApplication.translate("CxFreezePlugin",
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
51 "Packagers - cx_freeze"),
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
52 "exe" : 'dummyfreeze',
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
53 "versionCommand" : '--version',
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
54 "versionStartsWith" : 'dummyfreeze',
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
55 "versionPosition" : -1,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
56 "version" : "",
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
57 "versionCleanup" : None,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
58 }
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
59
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
60 exe = _findExecutable()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
61 if exe:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
62 data["exe"] = exe
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
63 if "FreezePython" in exe:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
64 data["versionStartsWith"] = "FreezePython"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
65 elif "cxfreeze" in exe:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
66 data["versionStartsWith"] = "cxfreeze"
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
67
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
68 return data
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
69
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
70 def _findExecutable():
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
71 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
72 Restricted function to determine the name of the executable.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
73
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
74 @return name of the executable (string)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
75 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
76 # step 1: check for version 4.x
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
77 if Utilities.isWindowsPlatform():
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
78 #
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
79 # Windows
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
80 #
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
81 exe = 'cxfreeze.bat'
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
82 if Utilities.isinpath(exe):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
83 return exe
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
84 try:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
85 #only since python 3.2
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
86 import sysconfig
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
87 scripts = sysconfig.get_path('scripts','nt')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
88 return os.path.join(scripts, exe)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
89 except ImportError:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
90 try:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
91 import winreg
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
92 except ImportError:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
93 # give up ...
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
94 return None
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
95
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
96 version = str(sys.version_info.major) + '.' + \
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
97 str(sys.version_info.minor)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
98
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
99 try:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
100 software = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'Software')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
101 python = winreg.OpenKey(software, 'Python')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
102 pcore = winreg.OpenKey(python, 'PythonCore')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
103 version = winreg.OpenKey(pcore, version)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
104 installpath = winreg.QueryValue(version, 'InstallPath')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
105 return os.path.join(installpath, 'Scripts', exe)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
106 except WindowsError: # __IGNORE_WARNING__
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
107 return None
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
108 else:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
109 #
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
110 # Linux, Unix ...
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
111 exe = 'cxfreeze'
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
112 if Utilities.isinpath(exe):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
113 return exe
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
114
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
115 return None
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
116
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
117 def _checkProgram():
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
118 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
119 Restricted function to check the availability of cxfreeze.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
120
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
121 @return flag indicating availability (boolean)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
122 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
123 global error
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
124
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
125 if _findExecutable() is None:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
126 error = QCoreApplication.translate("CxFreezePlugin",
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
127 "The cxfreeze executable could not be found.")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
128 return False
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
129 else:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
130 return True
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
131 _checkProgram()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
132
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
133 class CxFreezePlugin(QObject):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
134 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
135 Class implementing the CxFreeze plugin.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
136 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
137 def __init__(self, ui):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
138 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
139 Constructor
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
140
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
141 @param ui reference to the user interface object (UI.UserInterface)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
142 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
143 QObject.__init__(self, ui)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
144 self.__ui = ui
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
145 self.__initialize()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
146 _checkProgram()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
147
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
148 self.__translator = None
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
149 self.__loadTranslator()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
150
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
151 def __initialize(self):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
152 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
153 Private slot to (re)initialize the plugin.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
154 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
155 self.__projectAct = None
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
156
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
157 def activate(self):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
158 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
159 Public method to activate this plugin.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
160
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
161 @return tuple of None and activation status (boolean)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
162 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
163 global error
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
164
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
165 # cxfreeze is only activated if it is available
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
166 if not _checkProgram():
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
167 return None, False
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
168
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
169 menu = e5App().getObject("Project").getMenu("Packagers")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
170 if menu:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
171 self.__projectAct = E5Action(self.trUtf8('Use cx_freeze'),
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
172 self.trUtf8('Use cx_&freeze'), 0, 0,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
173 self, 'packagers_cxfreeze')
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
174 self.__projectAct.setStatusTip(
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
175 self.trUtf8('Generate a distribution package using cx_freeze'))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
176 self.__projectAct.setWhatsThis(self.trUtf8(
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
177 """<b>Use cx_freeze</b>"""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
178 """<p>Generate a distribution package using cx_freeze."""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
179 """ The command is executed in the project path. All"""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
180 """ files and directories must be given absolute or"""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
181 """ relative to the project directory.</p>"""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
182 ))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
183 self.__projectAct.triggered[()].connect(self.__cxfreeze)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
184 e5App().getObject("Project").addE5Actions([self.__projectAct])
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
185 menu.addAction(self.__projectAct)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
186
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
187 error = ""
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
188 return None, True
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
189
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
190 def deactivate(self):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
191 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
192 Public method to deactivate this plugin.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
193 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
194 menu = e5App().getObject("Project").getMenu("Packagers")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
195 if menu:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
196 if self.__projectAct:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
197 menu.removeAction(self.__projectAct)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
198 e5App().getObject("Project").removeE5Actions([self.__projectAct])
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
199 self.__initialize()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
200
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
201 def __loadTranslator(self):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
202 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
203 Private method to load the translation file.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
204 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
205 if self.__ui is not None:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
206 loc = self.__ui.getLocale()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
207 if loc and loc != "C":
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
208 locale_dir = \
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
209 os.path.join(os.path.dirname(__file__), "CxFreeze", "i18n")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
210 translation = "cxfreeze_{0}".format(loc)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
211 translator = QTranslator(None)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
212 loaded = translator.load(translation, locale_dir)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
213 if loaded:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
214 self.__translator = translator
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
215 e5App().installTranslator(self.__translator)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
216 else:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
217 print("Warning: translation file '{0}' could not be loaded."\
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
218 .format(translation))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
219 print("Using default.")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
220
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
221 def __cxfreeze(self):
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
222 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
223 Private slot to handle the cxfreeze execution.
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
224 """
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
225 project = e5App().getObject("Project")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
226 if len(project.pdata["MAINSCRIPT"]) == 0:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
227 # no main script defined
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
228 QMessageBox.critical(None,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
229 self.trUtf8("cxfreeze"),
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
230 self.trUtf8(
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
231 """There is no main script defined for the current project."""),
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
232 QMessageBox.StandardButtons(
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
233 QMessageBox.Abort))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
234 return
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
235
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
236 parms = project.getData('PACKAGERSPARMS', "CXFREEZE")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
237 exe = _findExecutable()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
238 if exe is None:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
239 QMessageBox.critical(None,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
240 self.trUtf8("cxfreeze"),
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
241 self.trUtf8("""The cxfreeze executable could not be found."""))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
242 return
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
243
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
244 dlg = CxfreezeConfigDialog(project, exe, parms)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
245 if dlg.exec_() == QDialog.Accepted:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
246 args, parms = dlg.generateParameters()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
247 project.setData('PACKAGERSPARMS', "CXFREEZE", parms)
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
248
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
249 # now do the call
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
250 dia = CxfreezeExecDialog("cxfreeze")
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
251 dia.show()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
252 res = dia.start(args,
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
253 os.path.join(project.ppath, project.pdata["MAINSCRIPT"][0]))
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
254 if res:
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
255 dia.exec_()
4c8a4e5377c6 Merged remote changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23 22
diff changeset
256

eric ide

mercurial