src/eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py

Wed, 13 Jul 2022 14:55:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jul 2022 14:55:47 +0200
branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
permissions
-rw-r--r--

Reformatted the source code using the 'Black' utility.

9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter the data for an entry point.
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import pathlib
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import pyqtSlot
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from EricWidgets import EricFileDialog
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .Ui_AddEntryPointDialog import Ui_AddEntryPointDialog
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 import UI.PixmapCache
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class AddEntryPointDialog(QDialog, Ui_AddEntryPointDialog):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Class implementing a dialog to enter the data for an entry point.
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
26
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 def __init__(self, rootDirectory, epType="", name="", script="", parent=None):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @param rootDirectory root directory for selecting script modules via
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 a file selection dialog
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type str
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param epType type of the entry point (defaults to "")
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type str (optional)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param name name of the entry point (defaults to "")
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type str (optional)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param script script function of the entry point (defaults to "")
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type str (optional)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param parent reference to the parent widget (defaults to None)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type QWidget (optional)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 super().__init__(parent)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 for typeStr, category in (
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 ("", ""),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 (self.tr("Console"), "console_scripts"),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 (self.tr("GUI"), "gui_scripts"),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 ):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.typeComboBox.addItem(typeStr, category)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.scriptButton.setIcon(UI.PixmapCache.getIcon("open"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__rootDirectory = rootDirectory
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.typeComboBox.currentTextChanged.connect(self.__updateOK)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.nameEdit.textChanged.connect(self.__updateOK)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.scriptEdit.textChanged.connect(self.__updateOK)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.typeComboBox.setCurrentText(epType)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.nameEdit.setText(name)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.scriptEdit.setText(script)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 msh = self.minimumSizeHint()
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.resize(max(self.width(), msh.width()), msh.height())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @pyqtSlot()
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 def __updateOK(self):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 Private slot to update the enabled state of the OK button.
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76 bool(self.typeComboBox.currentText())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 and bool(self.nameEdit.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78 and bool(self.scriptEdit.text())
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @pyqtSlot()
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def on_scriptButton_clicked(self):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Private slot to select a script via a file selection dialog.
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 script = self.scriptEdit.text()
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 if script:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 if ":" in script:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 scriptFile, scriptFunction = script.rsplit(":", 1)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 else:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 scriptFile, scriptFunction = script, "main"
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 scriptFile = scriptFile.replace(".", "/") + ".py"
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 root = str(pathlib.Path(self.__rootDirectory) / scriptFile)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 else:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 root = self.__rootDirectory
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 scriptFunction = "main"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 script = EricFileDialog.getOpenFileName(
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self,
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.tr("Select Script File"),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 root,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102 self.tr("Python Files (*.py);;All Files (*)"),
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 if script:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 scriptPath = pathlib.Path(script)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 try:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 relativeScriptPath = scriptPath.relative_to(self.__rootDirectory)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 except ValueError:
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 relativeScriptPath = scriptPath
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
111 self.scriptEdit.setText(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 "{0}:{1}".format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 str(relativeScriptPath.with_suffix(""))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114 .replace("/", ".")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115 .replace("\\", "."),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116 scriptFunction,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def getEntryPoint(self):
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Public method to get the data for the entry point.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123
9201
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @return tuple containing the entry point type, category, name and
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 script function
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @rtype tuple of (str, str, str)
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 """
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 return (
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 self.typeComboBox.currentText(),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.typeComboBox.currentData(),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.nameEdit.text(),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.scriptEdit.text(),
2f1ccadee231 setup Wizard
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 )

eric ide

mercurial