PluginCxFreeze.py

Fri, 31 Dec 2010 15:51:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 31 Dec 2010 15:51:34 +0100
changeset 16
12e6540e9eaf
parent 8
6baba3f53168
child 17
b5f6e6ca8b1a
permissions
-rw-r--r--

Updated copyright notice.

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

eric ide

mercurial