eric6/Project/CreateDialogCodeDialog.py

Sun, 28 Mar 2021 15:00:11 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 28 Mar 2021 15:00:11 +0200
branch
maintenance
changeset 8176
31965986ecd1
parent 8043
0acf98cd089a
parent 8143
2c730d5fd177
child 8273
698ae46f40a4
permissions
-rw-r--r--

Merged with default branch to prepare a new release.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7911
diff changeset
3 # Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
7 Module implementing a dialog to generate code for a Qt5 dialog.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
10 import sys
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
12 import json
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
14 from PyQt5.QtCore import (
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7759
diff changeset
15 pyqtSlot, Qt, QMetaObject, QRegularExpression, QSortFilterProxyModel,
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7759
diff changeset
16 QProcess, QProcessEnvironment
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
17 )
7494
268c297df637 CreateDialogCodeDialog: added code to cope with dark backgrounds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
18 from PyQt5.QtGui import QStandardItemModel, QStandardItem, QBrush, QColor
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
19 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
20
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
55
b5c84934de9c Renamed E4Gui to E5Gui.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
22 from E5Gui.E5Application import e5App
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 535
diff changeset
23 from E5Gui import E5MessageBox
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
25 from .Ui_CreateDialogCodeDialog import Ui_CreateDialogCodeDialog
3110
af7a8dda4c32 Corrected a not working import in the dialog creation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3038
diff changeset
26 from .NewDialogClassDialog import NewDialogClassDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
3670
f0cb7579c0b4 Finished renaming eric5 for PyQt5 to eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
28 from eric6config import getConfig
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
30 import Preferences
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
31
5736
000ea446ff4b Prepared the code for Qt > 5.9.99.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
32
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
33 pyqtSignatureRole = Qt.ItemDataRole.UserRole + 1
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
34 pythonSignatureRole = Qt.ItemDataRole.UserRole + 2
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
35 rubySignatureRole = Qt.ItemDataRole.UserRole + 3
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
36 returnTypeRole = Qt.ItemDataRole.UserRole + 4
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
37 parameterTypesListRole = Qt.ItemDataRole.UserRole + 5
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
38 parameterNamesListRole = Qt.ItemDataRole.UserRole + 6
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
39
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 class CreateDialogCodeDialog(QDialog, Ui_CreateDialogCodeDialog):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
43 Class implementing a dialog to generate code for a Qt5 dialog.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
45 DialogClasses = {
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
46 "QDialog", "QWidget", "QMainWindow", "QWizard", "QWizardPage",
2492
91ab554e3465 Added support for more widgets in the code creation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2408
diff changeset
47 "QDockWidget", "QFrame", "QGroupBox", "QScrollArea", "QMdiArea",
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
48 "QTabWidget", "QToolBox", "QStackedWidget"
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
49 }
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
50 Separator = 25 * "="
1275
3db9193a528b Fixed an issue with the Create Dialog Code dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1206
diff changeset
51
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
52 def __init__(self, formName, project, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @param formName name of the file containing the form (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @param project reference to the project object
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @param parent parent widget if the dialog (QWidget)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2492
diff changeset
60 super(CreateDialogCodeDialog, self).__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.setupUi(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
63 self.okButton = self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
64 QDialogButtonBox.StandardButton.Ok)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.slotsView.header().hide()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.project = project
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.formFile = formName
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 filename, ext = os.path.splitext(self.formFile)
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
72 self.srcFile = '{0}{1}'.format(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
73 filename, self.project.getDefaultSourceExtension())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.slotsModel = QStandardItemModel()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.proxyModel = QSortFilterProxyModel()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.proxyModel.setDynamicSortFilter(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.proxyModel.setSourceModel(self.slotsModel)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.slotsView.setModel(self.proxyModel)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 # initialize some member variables
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__initError = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__module = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
7050
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
85 packagesRoot = self.project.getUicParameter("PackagesRoot")
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
86 if packagesRoot:
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
87 self.packagesPath = os.path.join(self.project.getProjectPath(),
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
88 packagesRoot)
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
89 else:
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
90 self.packagesPath = self.project.getProjectPath()
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
91
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 if os.path.exists(self.srcFile):
53
c3eb7cc1ff8b Renamed e5App to e5App.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
93 vm = e5App().getObject("ViewManager")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 ed = vm.getOpenEditor(self.srcFile)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 if ed and not vm.checkDirty(ed):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__initError = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98
1016
72b6b0778e06 Fixed an issue in the code creation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
99 try:
1844
0388a36b5fcf Fixed an issue in the dialog code creation dialog with scanning a Python source file not having the standard extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
100 splitExt = os.path.splitext(self.srcFile)
0388a36b5fcf Fixed an issue in the dialog code creation dialog with scanning a Python source file not having the standard extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
101 if len(splitExt) == 2:
0388a36b5fcf Fixed an issue in the dialog code creation dialog with scanning a Python source file not having the standard extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
102 exts = [splitExt[1]]
0388a36b5fcf Fixed an issue in the dialog code creation dialog with scanning a Python source file not having the standard extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
103 else:
0388a36b5fcf Fixed an issue in the dialog code creation dialog with scanning a Python source file not having the standard extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
104 exts = None
2408
dc3a7c9d8f6e Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
105 from Utilities import ModuleParser
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
106 self.__module = ModuleParser.readModule(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
107 self.srcFile, extensions=exts, caching=False)
1016
72b6b0778e06 Fixed an issue in the code creation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
108 except ImportError:
72b6b0778e06 Fixed an issue in the code creation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
109 pass
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if self.__module is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.filenameEdit.setText(self.srcFile)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 classesList = []
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
115 vagueClassesList = []
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
116 for cls in list(self.__module.classes.values()):
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
117 if not set(cls.super).isdisjoint(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
118 CreateDialogCodeDialog.DialogClasses):
1275
3db9193a528b Fixed an issue with the Create Dialog Code dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1206
diff changeset
119 classesList.append(cls.name)
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
120 else:
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
121 vagueClassesList.append(cls.name)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 classesList.sort()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 self.classNameCombo.addItems(classesList)
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
124 if vagueClassesList:
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
125 if classesList:
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
126 self.classNameCombo.addItem(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
127 CreateDialogCodeDialog.Separator)
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
128 self.classNameCombo.addItems(sorted(vagueClassesList))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
130 if (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
131 os.path.exists(self.srcFile) and
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
132 self.__module is not None and
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
133 self.classNameCombo.count() == 0
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
134 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__initError = True
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
136 E5MessageBox.critical(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
137 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
138 self.tr("Create Dialog Code"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
139 self.tr(
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
140 """The file <b>{0}</b> exists but does not contain"""
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
141 """ any classes.""").format(self.srcFile))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.okButton.setEnabled(self.classNameCombo.count() > 0)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.__updateSlotsModel()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def initError(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 Public method to determine, if there was an initialzation error.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @return flag indicating an initialzation error (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 return self.__initError
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
154
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
155 def __runUicLoadUi(self, command):
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
156 """
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
157 Private method to run the UicLoadUi.py script with the given command
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
158 and return the output.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
160 @param command uic command to be run
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
161 @type str
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
162 @return tuple of process output and error flag
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
163 @rtype tuple of (str, bool)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
164 """
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
165 venvManager = e5App().getObject("VirtualEnvManager")
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
166 projectType = self.project.getProjectType()
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
167
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
168 venvName = self.project.getDebugProperty("VIRTUALENV")
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
169 if not venvName:
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
170 # no project specific environment, try a type specific one
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
171 if projectType in ("PyQt5", "E6Plugin", "PySide2"):
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
172 venvName = Preferences.getQt("PyQtVenvName")
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
173 elif projectType in ("PyQt6", "PySide6"):
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
174 venvName = Preferences.getQt("PyQt6VenvName")
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
175 interpreter = venvManager.getVirtualenvInterpreter(venvName)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
176 execPath = venvManager.getVirtualenvExecPath(venvName)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
177
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
178 if not interpreter:
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
179 interpreter = sys.executable
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
180
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
181 env = QProcessEnvironment.systemEnvironment()
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
182 if execPath:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
183 if env.contains("PATH"):
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
184 env.insert(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
185 "PATH", os.pathsep.join([execPath, env.value("PATH")])
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
186 )
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
187 else:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
188 env.insert("PATH", execPath)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
189
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
190 if projectType in ("PyQt5", "E6Plugin", "PySide2"):
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
191 loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi5.py")
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
192 elif projectType in ("PyQt6", "PySide6"):
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
193 loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi6.py")
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
194 args = [
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
195 loadUi,
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
196 command,
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
197 self.formFile,
7050
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
198 self.packagesPath,
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
199 ]
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
200
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
201 uicText = ""
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
202 ok = False
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
203
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
204 proc = QProcess()
7050
b66cac9a6560 Project: added an option to the UIC parameters to specify the packages root directory relative to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
205 proc.setWorkingDirectory(self.packagesPath)
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
206 proc.setProcessEnvironment(env)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
207 proc.start(interpreter, args)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
208 started = proc.waitForStarted(5000)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
209 finished = proc.waitForFinished(30000)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
210 if started and finished:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
211 output = proc.readAllStandardOutput()
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
212 outText = str(output, "utf-8", "replace")
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
213 if proc.exitCode() == 0:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
214 ok = True
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
215 uicText = outText.strip()
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
216 else:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
217 E5MessageBox.critical(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
218 self,
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
219 self.tr("uic error"),
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
220 self.tr(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
221 """<p>There was an error loading the form <b>{0}</b>"""
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
222 """.</p><p>{1}</p>""").format(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
223 self.formFile, outText)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
224 )
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
225 else:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
226 E5MessageBox.critical(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
227 self,
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
228 self.tr("uic error"),
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
229 self.tr(
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
230 """<p>The project specific Python interpreter <b>{0}</b>"""
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
231 """ could not be started or did not finish within 30"""
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
232 """ seconds.</p>""").format(interpreter)
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
233 )
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
234
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
235 return uicText, ok
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
236
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
237 def __objectName(self):
6544
51996454f89f CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6291
diff changeset
238 """
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
239 Private method to get the object name of a form.
6544
51996454f89f CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6291
diff changeset
240
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
241 @return object name
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
242 @rtype str
6544
51996454f89f CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6291
diff changeset
243 """
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
244 objectName = ""
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
245
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
246 output, ok = self.__runUicLoadUi("object_name")
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
247 if ok and output:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
248 objectName = output
6544
51996454f89f CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6291
diff changeset
249
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
250 return objectName
6544
51996454f89f CreateDialogCodeDialog: extended the logic to support projects loading custom widgets from outside the eric or project directories (via a virtual environment).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6291
diff changeset
251
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
252 def __className(self):
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
253 """
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
254 Private method to get the class name of a form.
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
255
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
256 @return class name
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
257 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
259 className = ""
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
260
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
261 output, ok = self.__runUicLoadUi("class_name")
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
262 if ok and output:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
263 className = output
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
264
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
265 return className
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
266
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 def __signatures(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 Private slot to get the signatures.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 @return list of signatures (list of strings)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 if self.__module is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 return []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 signatures = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 clsName = self.classNameCombo.currentText()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 if clsName:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 cls = self.__module.classes[clsName]
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
280 for meth in list(cls.methods.values()):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 if meth.name.startswith("on_"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 if meth.pyqtSignature is not None:
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
283 sig = ", ".join(
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
284 [bytes(QMetaObject.normalizedType(t)).decode()
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
285 for t in meth.pyqtSignature.split(",")])
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
286 signatures.append("{0}({1})".format(meth.name, sig))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 signatures.append(meth.name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 return signatures
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
291 def __mapType(self, type_):
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
292 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
293 Private method to map a type as reported by Qt's meta object to the
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
294 correct Python type.
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
295
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
296 @param type_ type as reported by Qt (QByteArray)
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
297 @return mapped Python type (string)
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
298 """
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
299 mapped = bytes(type_).decode()
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
300
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
301 # I. always check for *
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
302 mapped = mapped.replace("*", "")
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
303
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
304 # 1. check for const
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
305 mapped = mapped.replace("const ", "")
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
306
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
307 # 2. replace QString and QStringList
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
308 mapped = (
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
309 mapped
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
310 .replace("QStringList", "list")
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
311 .replace("QString", "str")
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
312 )
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
313
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
314 # 3. replace double by float
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
315 mapped = mapped.replace("double", "float")
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
316
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
317 return mapped
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
318
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
319 def __updateSlotsModel(self):
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
320 """
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
321 Private slot to update the slots tree display.
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
322 """
6661
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
323 self.filterEdit.clear()
19fcbb7be3da CreateDialogCodeDialog: changed logic to always call the external UI loader in order to avoid clashes with eric classes and packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
324
6590
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
325 output, ok = self.__runUicLoadUi("signatures")
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
326 if ok and output:
8cad6f50ff4c CreateDialogCodeDialog: fixed an issue and applied some logic to enhance the form data loading via the external UicLoadUi.py script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6548
diff changeset
327 objectsList = json.loads(output.strip())
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
328
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
329 signatureList = self.__signatures()
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
330
6548
21f8260753b5 CreateDialogCodeDialog: fixed an oversight in the recent code changes causing the dialog to be populated multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6547
diff changeset
331 self.slotsModel.clear()
21f8260753b5 CreateDialogCodeDialog: fixed an oversight in the recent code changes causing the dialog to be populated multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6547
diff changeset
332 self.slotsModel.setHorizontalHeaderLabels([""])
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
333 for objectDict in objectsList:
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
334 itm = QStandardItem("{0} ({1})".format(
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
335 objectDict["name"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
336 objectDict["class_name"]))
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
337 self.slotsModel.appendRow(itm)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
338 for methodDict in objectDict["methods"]:
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
339 itm2 = QStandardItem(methodDict["signature"])
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
340 itm.appendRow(itm2)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
341
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
342 if self.__module is not None:
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
343 if (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
344 methodDict["methods"][0] in signatureList or
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
345 methodDict["methods"][1] in signatureList
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
346 ):
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
347 itm2.setFlags(
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
348 Qt.ItemFlags(Qt.ItemFlag.ItemIsEnabled))
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
349 itm2.setCheckState(Qt.CheckState.Checked)
7494
268c297df637 CreateDialogCodeDialog: added code to cope with dark backgrounds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
350 if e5App().usesDarkPalette():
268c297df637 CreateDialogCodeDialog: added code to cope with dark backgrounds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
351 itm2.setForeground(QBrush(QColor("#75bfff")))
268c297df637 CreateDialogCodeDialog: added code to cope with dark backgrounds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
352 else:
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
353 itm2.setForeground(QBrush(Qt.GlobalColor.blue))
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
354 continue
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
355
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
356 itm2.setData(methodDict["pyqt_signature"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
357 pyqtSignatureRole)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
358 itm2.setData(methodDict["python_signature"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
359 pythonSignatureRole)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
360 itm2.setData(methodDict["return_type"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
361 returnTypeRole)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
362 itm2.setData(methodDict["parameter_types"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
363 parameterTypesListRole)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
364 itm2.setData(methodDict["parameter_names"],
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
365 parameterNamesListRole)
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
366
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
367 itm2.setFlags(Qt.ItemFlags(
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
368 Qt.ItemFlag.ItemIsUserCheckable |
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
369 Qt.ItemFlag.ItemIsEnabled |
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
370 Qt.ItemFlag.ItemIsSelectable)
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
371 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
372 itm2.setCheckState(Qt.CheckState.Unchecked)
6547
77c817301ca1 CreateDialogCodeDialog: third attempt on getting this working with projects using a virtual environment different from the one used to run eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6544
diff changeset
373
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
374 self.slotsView.sortByColumn(0, Qt.SortOrder.AscendingOrder)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 def __generateCode(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 Private slot to generate the code as requested by the user.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 # first decide on extension
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
381 if (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
382 self.filenameEdit.text().endswith(".py") or
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
383 self.filenameEdit.text().endswith(".pyw")
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
384 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 self.__generatePythonCode()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 elif self.filenameEdit.text().endswith(".rb"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 # second decide on project language
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
389 elif self.project.getProjectLanguage() == "Python3":
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 self.__generatePythonCode()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 elif self.project.getProjectLanguage() == "Ruby":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 # assume Python (our global default)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 self.__generatePythonCode()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 def __generatePythonCode(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 Private slot to generate Python code as requested by the user.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 """
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
401 if self.project.getProjectLanguage() != "Python3":
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
402 E5MessageBox.critical(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
403 self,
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
404 self.tr("Code Generation"),
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
405 self.tr(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
406 """<p>Code generation for project language"""
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
407 """ "{0}" is not supported.</p>""")
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
408 .format(self.project.getProjectLanguage()))
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
409 return
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
410
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 # init some variables
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 sourceImpl = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 appendAtIndex = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 indentStr = " "
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 slotsCode = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 if self.__module is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 # new file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 try:
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
420 if self.project.getProjectType() == "PySide2":
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
421 tmplName = os.path.join(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
422 getConfig('ericCodeTemplatesDir'),
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
423 "impl_pyside2.py.tmpl")
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
424 elif self.project.getProjectType() == "PySide6":
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
425 tmplName = os.path.join(
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
426 getConfig('ericCodeTemplatesDir'),
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
427 "impl_pyside6.py.tmpl")
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
428 elif self.project.getProjectType() in [
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
429 "PyQt5", "E6Plugin"]:
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
430 tmplName = os.path.join(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
431 getConfig('ericCodeTemplatesDir'),
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
432 "impl_pyqt5.py.tmpl")
7907
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
433 elif self.project.getProjectType() == "PyQt6":
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
434 tmplName = os.path.join(
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
435 getConfig('ericCodeTemplatesDir'),
7991ea245c20 Added support for PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
436 "impl_pyqt6.py.tmpl")
1139
b18376d58832 Added dialog support for PySide.
detlev@die-offenbachs.de
parents: 1137
diff changeset
437 else:
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
438 E5MessageBox.critical(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
439 self,
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
440 self.tr("Code Generation"),
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
441 self.tr(
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
442 """<p>No code template file available for"""
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
443 """ project type "{0}".</p>""")
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
444 .format(self.project.getProjectType()))
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
445 return
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
446 with open(tmplName, 'r', encoding="utf-8") as tmplFile:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
447 template = tmplFile.read()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
448 except OSError as why:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
449 E5MessageBox.critical(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
450 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
451 self.tr("Code Generation"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
452 self.tr(
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
453 """<p>Could not open the code template file"""
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
454 """ "{0}".</p><p>Reason: {1}</p>""")
3038
7fe9a53280bd Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
455 .format(tmplName, str(why)))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 objName = self.__objectName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 if objName:
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
460 template = (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
461 template
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
462 .replace(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
463 "$FORMFILE$",
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
464 os.path.splitext(os.path.basename(self.formFile))[0])
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
465 .replace("$FORMCLASS$", objName)
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
466 .replace("$CLASSNAME$", self.classNameCombo.currentText())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 .replace("$SUPERCLASS$", self.__className())
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
468 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 sourceImpl = template.splitlines(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 appendAtIndex = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 # determine indent string
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 for line in sourceImpl:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 if line.lstrip().startswith("def __init__"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 indentStr = line.replace(line.lstrip(), "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 # extend existing file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
481 with open(self.srcFile, 'r', encoding="utf-8") as srcFile:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
482 sourceImpl = srcFile.readlines()
245
de5c4effc747 Fixed some issues related to Python's universal newline support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 124
diff changeset
483 if not sourceImpl[-1].endswith("\n"):
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
484 sourceImpl[-1] = "{0}{1}".format(sourceImpl[-1], "\n")
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
485 except OSError as why:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
486 E5MessageBox.critical(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
487 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
488 self.tr("Code Generation"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
489 self.tr(
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
490 """<p>Could not open the source file "{0}".</p>"""
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
491 """<p>Reason: {1}</p>""")
3038
7fe9a53280bd Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
492 .format(self.srcFile, str(why)))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 cls = self.__module.classes[self.classNameCombo.currentText()]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 if cls.endlineno == len(sourceImpl) or cls.endlineno == -1:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 appendAtIndex = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 # delete empty lines at end
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 while not sourceImpl[-1].strip():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 del sourceImpl[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 appendAtIndex = cls.endlineno - 1
1132
f8275b31dbe5 Fixed the dialog code creation code to respect PEP-8 rules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
503 while not sourceImpl[appendAtIndex].strip():
f8275b31dbe5 Fixed the dialog code creation code to respect PEP-8 rules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
504 appendAtIndex -= 1
f8275b31dbe5 Fixed the dialog code creation code to respect PEP-8 rules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
505 appendAtIndex += 1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 # determine indent string
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
508 for line in sourceImpl[cls.lineno:cls.endlineno + 1]:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 if line.lstrip().startswith("def __init__"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 indentStr = line.replace(line.lstrip(), "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 # do the coding stuff
7911
4621c9082a43 Added support for PySide6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7907
diff changeset
514 if self.project.getProjectType() in ("PySide2", "PySide6"):
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
515 pyqtSignatureFormat = '@Slot({0})'
1139
b18376d58832 Added dialog support for PySide.
detlev@die-offenbachs.de
parents: 1137
diff changeset
516 else:
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7494
diff changeset
517 pyqtSignatureFormat = '@pyqtSlot({0})'
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 for row in range(self.slotsModel.rowCount()):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 topItem = self.slotsModel.item(row)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 for childRow in range(topItem.rowCount()):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 child = topItem.child(childRow)
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
522 if (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
523 child.checkState() and
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
524 child.flags() & Qt.ItemFlags(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
525 Qt.ItemFlag.ItemIsUserCheckable)
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
526 ):
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
527 slotsCode.append('{0}\n'.format(indentStr))
1139
b18376d58832 Added dialog support for PySide.
detlev@die-offenbachs.de
parents: 1137
diff changeset
528 slotsCode.append('{0}{1}\n'.format(
1148
ddc482ded355 Corrected a PEP-8 related issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1139
diff changeset
529 indentStr,
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
530 pyqtSignatureFormat.format(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
531 child.data(pyqtSignatureRole))))
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
532 slotsCode.append('{0}def {1}:\n'.format(
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
533 indentStr, child.data(pythonSignatureRole)))
4485
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
534 indentStr2 = indentStr * 2
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
535 slotsCode.append('{0}"""\n'.format(indentStr2))
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
536 slotsCode.append(
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
537 '{0}Slot documentation goes here.\n'.format(
4485
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
538 indentStr2))
7265
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
539 if (
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
540 child.data(returnTypeRole) or
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
541 child.data(parameterTypesListRole)
0665c4d509c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
542 ):
4485
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
543 slotsCode.append('{0}\n'.format(indentStr2))
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
544 if child.data(parameterTypesListRole):
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
545 for name, type_ in zip(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
546 child.data(parameterNamesListRole),
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
547 child.data(parameterTypesListRole)):
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
548 slotsCode.append(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
549 '{0}@param {1} DESCRIPTION\n'.format(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
550 indentStr2, name))
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
551 slotsCode.append('{0}@type {1}\n'.format(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
552 indentStr2, type_))
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
553 if child.data(returnTypeRole):
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
554 slotsCode.append(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
555 '{0}@returns DESCRIPTION\n'.format(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
556 indentStr2))
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
557 slotsCode.append('{0}@rtype {1}\n'.format(
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
558 indentStr2, child.data(returnTypeRole)))
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
559 slotsCode.append('{0}"""\n'.format(indentStr2))
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
560 slotsCode.append('{0}# {1}: not implemented yet\n'.format(
4485
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
561 indentStr2, "TODO"))
427
6af5d12cfecb Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 253
diff changeset
562 slotsCode.append('{0}raise NotImplementedError\n'.format(
4485
28743e3251ce Improved the dialog code generation dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
563 indentStr2))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 if appendAtIndex == -1:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 sourceImpl.extend(slotsCode)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 sourceImpl[appendAtIndex:appendAtIndex] = slotsCode
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 # write the new code
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
571 if self.project.useSystemEol():
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
572 newline = None
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
573 else:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
574 newline = self.project.getEolString()
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
575 fn = self.filenameEdit.text()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
577 with open(fn, 'w', encoding="utf-8", newline=newline) as srcFile:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
578 srcFile.write("".join(sourceImpl))
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
579 except OSError as why:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
580 E5MessageBox.critical(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2995
diff changeset
581 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
582 self.tr("Code Generation"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
583 self.tr("""<p>Could not write the source file "{0}".</p>"""
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
584 """<p>Reason: {1}</p>""")
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
585 .format(fn, str(why)))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7775
diff changeset
588 self.project.appendFile(fn)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 @pyqtSlot(int)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 def on_classNameCombo_activated(self, index):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 Private slot to handle the activated signal of the classname combo.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 @param index index of the activated item (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 """
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
597 if (self.classNameCombo.currentText() ==
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
598 CreateDialogCodeDialog.Separator):
1869
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
599 self.okButton.setEnabled(False)
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
600 self.filterEdit.clear()
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
601 self.slotsModel.clear()
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
602 self.slotsModel.setHorizontalHeaderLabels([""])
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
603 else:
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
604 self.okButton.setEnabled(True)
3e34d5c362d9 Enhanced the dialog code generation dialog by presenting classes not directly derived from QWidget, QDialog, QMainWindow or QWizard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1862
diff changeset
605 self.__updateSlotsModel()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 def on_filterEdit_textChanged(self, text):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 Private slot called, when thext of the filter edit has changed.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 @param text changed text (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
613 rx = QRegularExpression(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
614 text,
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
615 QRegularExpression.PatternOption.CaseInsensitiveOption)
7775
4a1db75550bd Changed code to not use deprecated 'QRegExp' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7759
diff changeset
616 self.proxyModel.setFilterRegularExpression(rx)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 @pyqtSlot()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 def on_newButton_clicked(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 Private slot called to enter the data for a new dialog class.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 path, file = os.path.split(self.srcFile)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 objName = self.__objectName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 if objName:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 dlg = NewDialogClassDialog(objName, file, path, self)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
627 if dlg.exec() == QDialog.DialogCode.Accepted:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 className, fileName = dlg.getData()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 self.classNameCombo.clear()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 self.classNameCombo.addItem(className)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 self.srcFile = fileName
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 self.filenameEdit.setText(self.srcFile)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 self.__module = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 self.okButton.setEnabled(self.classNameCombo.count() > 0)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 def on_buttonBox_clicked(self, button):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 Private slot to handle the buttonBox clicked signal.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641
2995
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
642 @param button reference to the button that was clicked
63d874899b8b Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2741
diff changeset
643 (QAbstractButton)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 if button == self.okButton:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 self.__generateCode()
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
647 self.accept()

eric ide

mercurial