CxFreeze/CxfreezeExecDialog.py

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

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

Reformatted source code with 'Black'.

1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
136
d9228f38cfe8 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 134
diff changeset
3 # Copyright (c) 2010 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to show the output of the packager process.
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
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: 47
diff changeset
10 import shutil
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: 47
diff changeset
11 import errno
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: 47
diff changeset
12 import fnmatch
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os.path
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
15 from PyQt6.QtCore import pyqtSlot, QProcess, QTimer, QThread, pyqtSignal
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
16 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QAbstractButton
39
27dcfe29985b Changed usage of QMessageBox and QFileDialog to the eric5 equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
17
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
18 from EricWidgets import EricMessageBox
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from .Ui_CxfreezeExecDialog import Ui_CxfreezeExecDialog
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import Preferences
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
24
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 class CxfreezeExecDialog(QDialog, Ui_CxfreezeExecDialog):
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
107
ad65a49aa7f7 Corrected a German translation string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
27 Class implementing a dialog to show the output of the cxfreeze process.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
28
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 This class starts a QProcess and displays a dialog that
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 shows the output of the packager command process.
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
32
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 39
diff changeset
33 def __init__(self, cmdname, parent=None):
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Constructor
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
36
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param cmdname name of the packager (string)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param parent parent widget of this dialog (QWidget)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
40 super().__init__(parent)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.setupUi(self)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
42
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
43 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
44 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
45
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.process = None
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: 47
diff changeset
47 self.copyProcess = None
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.cmdname = cmdname
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
49
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: 47
diff changeset
50 def start(self, args, parms, ppath, mainscript):
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Public slot to start the packager command.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
53
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
54 @param args commandline arguments for packager program
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
55 @type list of str
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
56 @param parms parameters got from the config dialog
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
57 @type dict
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
58 @param ppath project path
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
59 @type str
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
60 @param mainscript main script name to be processed by by the packager
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
61 @type str
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @return flag indicating the successful start of the process
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
63 @rtype bool
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.errorGroup.hide()
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: 47
diff changeset
66 script = os.path.join(ppath, mainscript)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 dname = os.path.dirname(script)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 script = os.path.basename(script)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
69
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: 47
diff changeset
70 self.ppath = ppath
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
71 self.additionalFiles = parms.get("additionalFiles", [])
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
72 self.targetDirectory = os.path.join(parms.get("targetDirectory", "dist"))
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
73
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.contents.clear()
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.errors.clear()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
76
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 args.append(script)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
78
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.process = QProcess()
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.process.setWorkingDirectory(dname)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
81
5
de1e980553fa Changed signal code to new style API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
82 self.process.readyReadStandardOutput.connect(self.__readStdout)
de1e980553fa Changed signal code to new style API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
83 self.process.readyReadStandardError.connect(self.__readStderr)
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: 47
diff changeset
84 self.process.finished.connect(self.__finishedFreeze)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
85
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
86 self.setWindowTitle(self.tr("{0} - {1}").format(self.cmdname, script))
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
87 self.contents.insertPlainText(" ".join(args) + "\n\n")
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.contents.ensureCursorVisible()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
89
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 39
diff changeset
90 program = args.pop(0)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.process.start(program, args)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 procStarted = self.process.waitForStarted()
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 if not procStarted:
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
94 EricMessageBox.critical(
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
95 self,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
96 self.tr("Process Generation Error"),
80
a349a1b6cb83 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
97 self.tr(
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
98 "The process {0} could not be started. "
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
99 "Ensure, that it is in the search path."
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
100 ).format(program),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
101 )
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 return procStarted
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
103
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 @pyqtSlot(QAbstractButton)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 def on_buttonBox_clicked(self, button):
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 Private slot called by a button of the button box clicked.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
108
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
109 @param button button that was clicked
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
110 @type QAbstractButton
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
112 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close):
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.accept()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
114 elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
115 self.additionalFiles = [] # Skip copying additional files
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__finish()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
117
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def __finish(self):
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Private slot called when the process finished.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
121
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
122 It is called when the process finished or the user pressed the
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
123 cancel button.
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
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: 47
diff changeset
125 if self.process is not None:
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: 47
diff changeset
126 self.process.disconnect(self.__finishedFreeze)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.process.terminate()
5
de1e980553fa Changed signal code to new style API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
128 QTimer.singleShot(2000, self.process.kill)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 self.process.waitForFinished(3000)
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: 47
diff changeset
130 self.process = None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
131
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: 47
diff changeset
132 if self.copyProcess is not None:
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: 47
diff changeset
133 self.copyProcess.terminate()
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: 47
diff changeset
134 self.copyProcess = None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
135
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
136 self.contents.insertPlainText(self.tr("\n{0} aborted.\n").format(self.cmdname))
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
137
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: 47
diff changeset
138 self.__enableButtons()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
139
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: 47
diff changeset
140 def __finishedFreeze(self):
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: 47
diff changeset
141 """
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: 47
diff changeset
142 Private slot called when the process finished.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
143
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
144 It is called when the process finished or the user pressed the
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
145 cancel button.
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: 47
diff changeset
146 """
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: 47
diff changeset
147 self.process = None
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: 47
diff changeset
148
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
149 self.contents.insertPlainText(self.tr("\n{0} finished.\n").format(self.cmdname))
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
150
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
151 self.copyProcess = CopyAdditionalFiles(self)
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: 47
diff changeset
152 self.copyProcess.insertPlainText.connect(self.contents.insertPlainText)
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: 47
diff changeset
153 self.copyProcess.finished.connect(self.__enableButtons)
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: 47
diff changeset
154 self.copyProcess.start()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
155
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: 47
diff changeset
156 def __enableButtons(self):
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: 47
diff changeset
157 """
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: 47
diff changeset
158 Private slot called when all processes finished.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
159
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: 47
diff changeset
160 It is called when the process finished or
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: 47
diff changeset
161 the user pressed the cancel button.
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: 47
diff changeset
162 """
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: 47
diff changeset
163 self.copyProcess = None
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
164 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
165 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
166 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.contents.ensureCursorVisible()
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: 47
diff changeset
168
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def __readStdout(self):
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 39
diff changeset
171 Private slot to handle the readyReadStandardOutput signal.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
172
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 It reads the output of the process, formats it and inserts it into
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 the contents pane.
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
176 self.process.setReadChannel(QProcess.ProcessChannel.StandardOutput)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
177
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 while self.process.canReadLine():
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
179 s = str(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
180 self.process.readAllStandardOutput(),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
181 Preferences.getSystem("IOEncoding"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
182 "replace",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
183 )
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.contents.insertPlainText(s)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.contents.ensureCursorVisible()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
186
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 def __readStderr(self):
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
47
986f27beaad4 Py2 compatibility, freeze script based on project language, filedialog for icons, some PEP8.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 39
diff changeset
189 Private slot to handle the readyReadStandardError signal.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
190
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 It reads the error output of the process and inserts it into the
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 error pane.
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 """
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
194 self.process.setReadChannel(QProcess.ProcessChannel.StandardError)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
195
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 while self.process.canReadLine():
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.errorGroup.show()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
198 s = str(
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
199 self.process.readAllStandardError(),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
200 Preferences.getSystem("IOEncoding"),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
201 "replace",
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
202 )
1
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.errors.insertPlainText(s)
0b6f3f5600da Ported the cx_freeze plug-in to eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.errors.ensureCursorVisible()
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: 47
diff changeset
205
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: 47
diff changeset
206
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
207 class CopyAdditionalFiles(QThread):
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: 47
diff changeset
208 """
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
209 Thread to copy the distribution dependent files.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
210
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
211 @signal insertPlainText(text) emitted to inform user about the copy
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
212 progress
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: 47
diff changeset
213 """
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
214
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: 47
diff changeset
215 insertPlainText = pyqtSignal(str)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
216
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: 47
diff changeset
217 def __init__(self, main):
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: 47
diff changeset
218 """
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
219 Constructor
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
220
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: 47
diff changeset
221 @param main self-object of the caller
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: 47
diff changeset
222 """
131
86d810eea380 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 130
diff changeset
223 super().__init__()
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
224
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: 47
diff changeset
225 self.ppath = main.ppath
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: 47
diff changeset
226 self.additionalFiles = main.additionalFiles
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: 47
diff changeset
227 self.targetDirectory = main.targetDirectory
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
228
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: 47
diff changeset
229 def __copytree(self, src, dst):
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: 47
diff changeset
230 """
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
231 Private method to copy a file or folder.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
232
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
233 Wildcards allowed. Existing files are overwitten.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
234
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
235 @param src source file or folder to copy. Wildcards allowed.
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
236 @type str
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
237 @param dst destination
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
238 @type str
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
239 @exception OSError raised if there is an issue writing the package or
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
240 the given source does not exist
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
241 """
137
da8cc28e689f Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
242 # __IGNORE_WARNING_D234r__ __IGNORE_WARNING_D252__
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: 47
diff changeset
243 def src2dst(srcname, base, dst):
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: 47
diff changeset
244 """
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: 47
diff changeset
245 Combines the relativ path of the source (srcname) with the
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: 47
diff changeset
246 destination folder.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
247
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: 47
diff changeset
248 @param srcname actual file or folder to copy
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
249 @type str
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: 47
diff changeset
250 @param base basename of the source folder
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
251 @type str
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: 47
diff changeset
252 @param dst basename of the destination folder
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
253 @type str
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: 47
diff changeset
254 @return destination path
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
255 @rtype str
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: 47
diff changeset
256 """
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: 47
diff changeset
257 delta = srcname.split(base)[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: 47
diff changeset
258 return os.path.join(dst, delta[1:])
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
259
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: 47
diff changeset
260 base, fileOrFolderName = os.path.split(src)
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: 47
diff changeset
261 initDone = False
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: 47
diff changeset
262 for root, dirs, files in os.walk(base):
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: 47
diff changeset
263 copied = False
134
7880b294d1d1 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
264 # remove all none matching directory names, create all others
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
265 for directory in dirs[:]:
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
266 pathname = os.path.join(root, directory)
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: 47
diff changeset
267 if initDone or fnmatch.fnmatch(pathname, src):
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: 47
diff changeset
268 newDir = src2dst(pathname, base, dst)
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
269 # avoid infinite loop
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: 47
diff changeset
270 if fnmatch.fnmatch(newDir, src):
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
271 dirs.remove(directory)
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: 47
diff changeset
272 continue
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: 47
diff changeset
273 try:
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: 47
diff changeset
274 copied = True
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: 47
diff changeset
275 os.makedirs(newDir)
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: 47
diff changeset
276 except OSError as err:
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
277 if err.errno != errno.EEXIST:
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
278 # it's ok if directory already exists
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: 47
diff changeset
279 raise err
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: 47
diff changeset
280 else:
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
281 dirs.remove(directory)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
282
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: 47
diff changeset
283 for file in files:
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: 47
diff changeset
284 fn = os.path.join(root, file)
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: 47
diff changeset
285 if initDone or fnmatch.fnmatch(fn, src):
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: 47
diff changeset
286 newFile = src2dst(fn, base, dst)
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: 47
diff changeset
287 # copy files, give errors to caller
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: 47
diff changeset
288 shutil.copy2(fn, newFile)
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: 47
diff changeset
289 copied = True
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
290
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: 47
diff changeset
291 # check if file was found and copied
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: 47
diff changeset
292 if len(files) and not copied:
129
6b6a5ad47190 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
293 raise OSError(
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
294 errno.ENOENT,
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
295 self.tr("No such file or directory: '{0}'").format(src),
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
296 )
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
297
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: 47
diff changeset
298 initDone = True
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
299
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: 47
diff changeset
300 def run(self):
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: 47
diff changeset
301 """
102
78d1632d4b83 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
302 Public method to run the thread.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
303
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: 47
diff changeset
304 QThread entry point to copy the selected additional files and folders.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
305
64
c878aac7d3f5 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
306 @exception OSError raised if there is an issue writing the package
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
307 """ # __IGNORE_WARNING_D252__ __IGNORE_WARNING_D253__
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
308 self.insertPlainText.emit("----\n")
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: 47
diff changeset
309 os.chdir(self.ppath)
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: 47
diff changeset
310 for fn in self.additionalFiles:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
311 self.insertPlainText.emit(self.tr("\nCopying {0}: ").format(fn))
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
312
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: 47
diff changeset
313 # on linux normpath doesn't replace backslashes to slashes.
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
314 fn = fn.replace("\\", "/")
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: 47
diff changeset
315 fn = os.path.abspath(os.path.normpath(fn))
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: 47
diff changeset
316 dst = os.path.join(self.ppath, self.targetDirectory)
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: 47
diff changeset
317 if fn.startswith(os.path.normpath(self.ppath)):
60
8bf1407ebc46 Fixed some PEP8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
318 dirname = fn.split(self.ppath + os.sep)[1]
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: 47
diff changeset
319 dst = os.path.join(dst, os.path.dirname(dirname))
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: 47
diff changeset
320 try:
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: 47
diff changeset
321 os.makedirs(dst)
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: 47
diff changeset
322 except OSError as err:
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
323 if err.errno != errno.EEXIST:
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
324 # it's ok if directory already exists
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: 47
diff changeset
325 raise err
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
326
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: 47
diff changeset
327 try:
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: 47
diff changeset
328 self.__copytree(fn, dst)
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
329 self.insertPlainText.emit(self.tr("ok"))
129
6b6a5ad47190 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
330 except OSError as err:
139
4df5e67b084b Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 137
diff changeset
331 self.insertPlainText.emit(self.tr("failed: {0}").format(err.strerror))

eric ide

mercurial