setup Wizard eric7

Sat, 02 Jul 2022 18:53:56 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 02 Jul 2022 18:53:56 +0200
branch
eric7
changeset 9201
2f1ccadee231
parent 9199
831e08e94960
child 9202
81388c6065e8

setup Wizard
- added support for 'project_urls'
- added support for 'entry_points'
- added a variant to create a 'setup.cfg' file
- added a variant to create a 'pyproject.toml' file

docs/changelog file | annotate | diff | comparison | revisions
eric7.epj file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.api file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.bas file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.PluginWizardSetup.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.Plugins.WizardPlugins.SetupWizard.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/setup.html file | annotate | diff | comparison | revisions
eric7/Plugins/PluginWizardSetup.py file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/SetupCfgUtilities.py file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui file | annotate | diff | comparison | revisions
eric7/i18n/eric7_cs.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.qm file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_empty.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_en.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_es.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_fr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_it.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_pt.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_ru.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_tr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/docs/changelog	Sat Jul 02 17:22:06 2022 +0200
+++ b/docs/changelog	Sat Jul 02 18:53:56 2022 +0200
@@ -1,5 +1,13 @@
 Change Log
 ----------
+Version 22.8:
+- bug fixes
+- setup Wizard
+  -- added support for 'project_urls'
+  -- added support for 'entry_points'
+  -- added a variant to create a 'setup.cfg' file
+  -- added a variant to create a 'pyproject.toml' file
+
 Version 22.7:
 - bug fixes
 - Code Style Checker
--- a/eric7.epj	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7.epj	Sat Jul 02 18:53:56 2022 +0200
@@ -530,6 +530,8 @@
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardCharactersDialog.ui",
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardDialog.ui",
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardRepeatDialog.ui",
+      "eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui",
+      "eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui",
       "eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui",
       "eric7/Preferences/ConfigurationPages/ApplicationPage.ui",
       "eric7/Preferences/ConfigurationPages/CondaPage.ui",
@@ -1698,6 +1700,9 @@
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardRepeatDialog.py",
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardServer.py",
       "eric7/Plugins/WizardPlugins/QRegularExpressionWizard/__init__.py",
+      "eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py",
+      "eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.py",
+      "eric7/Plugins/WizardPlugins/SetupWizard/SetupCfgUtilities.py",
       "eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py",
       "eric7/Plugins/WizardPlugins/SetupWizard/__init__.py",
       "eric7/Plugins/WizardPlugins/__init__.py",
--- a/eric7/APIs/Python3/eric7.api	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/APIs/Python3/eric7.api	Sat Jul 02 18:53:56 2022 +0200
@@ -3441,7 +3441,7 @@
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.IndentationWrapper.pep8Expected?4()
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.IndentationWrapper?1(physical_lines)
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.LineShortener.shorten?4()
-eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.LineShortener?1(curLine, prevLine, nextLine, maxLength=79, eol="\n", indentWord="    ", isDocString=False)
+eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.LineShortener?1(curLine, prevLine, nextLine, maxLength=88, eol="\n", indentWord="    ", isDocString=False)
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.Reindenter.fixedLine?4(line)
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.Reindenter.getline?4()
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.Reindenter.run?4()
@@ -3487,7 +3487,7 @@
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.Complexity.translations._complexityMessagesSampleArgs?8
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleChecker.Codes?7
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleChecker.run?4()
-eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleChecker?1(source, filename, select, ignore, expected, repeat, maxLineLength=79, docType="pep257")
+eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleChecker?1(source, filename, select, ignore, expected, repeat, maxLineLength=88, docType="pep257")
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleContext.contextType?4()
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleContext.end?4()
 eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.DocStyleContext.indent?4()
@@ -6606,20 +6606,35 @@
 eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.main?4()
 eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.rxExecute?4(regexp, options, text, startpos)
 eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.rxValidate?4(regexp, options)
+eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.AddEntryPointDialog.getEntryPoint?4()
+eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.AddEntryPointDialog.on_scriptButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.AddEntryPointDialog?1(rootDirectory, epType="", name="", script="", parent=None)
+eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.AddProjectUrlDialog.getUrl?4()
+eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.AddProjectUrlDialog?1(name="", url="", parent=None)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities._bool2string?5(value)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities._dict2list?5(value)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities._dict2string?5(value)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities._list2string?5(value)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.toString?4(value)
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.getCode?4(indLevel, indString)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addEntryPointButton_clicked?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addExludePatternButton_clicked?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addModuleButton_clicked?4()
-eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addScriptButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_deleteEntryPointButton_clicked?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_deleteExcludePatternButton_clicked?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_deleteModuleButton_clicked?4()
-eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_deleteScriptButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_editEntryPointButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_entryPointsList_itemSelectionChanged?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternEdit_returnPressed?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternEdit_textChanged?4(txt)
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternList_itemSelectionChanged?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_modulesList_itemSelectionChanged?4()
 eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_projectButton_clicked?4()
-eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_scriptsList_itemSelectionChanged?4()
-eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog?1(parent=None)
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_projectUrlsList_itemSelectionChanged?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_urlAddButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_urlDeleteButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_urlEditButton_clicked?4()
+eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog?1(category, parent=None)
 eric7.Preferences.ConfigurationDialog.ConfigurationDialog.accept?4()
 eric7.Preferences.ConfigurationDialog.ConfigurationDialog.getConfigurationPageName?4()
 eric7.Preferences.ConfigurationDialog.ConfigurationDialog.getExpandedEntries?4()
@@ -12654,7 +12669,6 @@
 setup.cleanupSource?4(dirName)
 setup.compileUiFiles?4(dirName)
 setup.createInstallInfoFile?4(dirName)
-setup.getDataFiles?4()
 setup.getLongDescription?4()
 setup.getPackageData?4(package, extensions)
 setup.getVersion?4()
--- a/eric7/APIs/Python3/eric7.bas	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/APIs/Python3/eric7.bas	Sat Jul 02 18:53:56 2022 +0200
@@ -17,10 +17,12 @@
 AddBookmarkProxyModel QSortFilterProxyModel
 AddDirectoryDialog QDialog Ui_AddDirectoryDialog
 AddEditDevicesDialog QDialog Ui_AddEditDevicesDialog
+AddEntryPointDialog QDialog Ui_AddEntryPointDialog
 AddFileDialog QDialog Ui_AddFileDialog
 AddFoundFilesDialog QDialog Ui_AddFoundFilesDialog
 AddLanguageDialog QDialog Ui_AddLanguageDialog
 AddProjectDialog QDialog Ui_AddProjectDialog
+AddProjectUrlDialog QDialog Ui_AddProjectUrlDialog
 AnnotationType enum.Enum
 AnnotationsFutureVisitor ast.NodeVisitor
 ApplicationDiagramBuilder UMLDiagramBuilder
Binary file eric7/Documentation/Help/source.qch has changed
--- a/eric7/Documentation/Help/source.qhp	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Help/source.qhp	Sat Jul 02 18:53:56 2022 +0200
@@ -759,6 +759,9 @@
                 <section title="eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer" ref="eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.html" />
               </section>
               <section title="eric7.Plugins.WizardPlugins.SetupWizard" ref="index-eric7.Plugins.WizardPlugins.SetupWizard.html">
+                <section title="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html" />
+                <section title="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html" />
+                <section title="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html" />
                 <section title="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html" />
               </section>
             </section>
@@ -1782,6 +1785,12 @@
       <keyword name="AddEditDevicesDialog.getDeviceDict" id="AddEditDevicesDialog.getDeviceDict" ref="eric7.MicroPython.AddEditDevicesDialog.html#AddEditDevicesDialog.getDeviceDict" />
       <keyword name="AddEditDevicesDialog.on_deviceTypeComboBox_currentIndexChanged" id="AddEditDevicesDialog.on_deviceTypeComboBox_currentIndexChanged" ref="eric7.MicroPython.AddEditDevicesDialog.html#AddEditDevicesDialog.on_deviceTypeComboBox_currentIndexChanged" />
       <keyword name="AddEditDevicesDialog.on_reportButton_clicked" id="AddEditDevicesDialog.on_reportButton_clicked" ref="eric7.MicroPython.AddEditDevicesDialog.html#AddEditDevicesDialog.on_reportButton_clicked" />
+      <keyword name="AddEntryPointDialog" id="AddEntryPointDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html#AddEntryPointDialog" />
+      <keyword name="AddEntryPointDialog (Constructor)" id="AddEntryPointDialog (Constructor)" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html#AddEntryPointDialog.__init__" />
+      <keyword name="AddEntryPointDialog (Module)" id="AddEntryPointDialog (Module)" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html" />
+      <keyword name="AddEntryPointDialog.__updateOK" id="AddEntryPointDialog.__updateOK" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html#AddEntryPointDialog.__updateOK" />
+      <keyword name="AddEntryPointDialog.getEntryPoint" id="AddEntryPointDialog.getEntryPoint" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html#AddEntryPointDialog.getEntryPoint" />
+      <keyword name="AddEntryPointDialog.on_scriptButton_clicked" id="AddEntryPointDialog.on_scriptButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html#AddEntryPointDialog.on_scriptButton_clicked" />
       <keyword name="AddFileDialog" id="AddFileDialog" ref="eric7.Project.AddFileDialog.html#AddFileDialog" />
       <keyword name="AddFileDialog (Constructor)" id="AddFileDialog (Constructor)" ref="eric7.Project.AddFileDialog.html#AddFileDialog.__init__" />
       <keyword name="AddFileDialog (Module)" id="AddFileDialog (Module)" ref="eric7.Project.AddFileDialog.html" />
@@ -1806,6 +1815,11 @@
       <keyword name="AddProjectDialog.getData" id="AddProjectDialog.getData" ref="eric7.MultiProject.AddProjectDialog.html#AddProjectDialog.getData" />
       <keyword name="AddProjectDialog.on_filenamePicker_textChanged" id="AddProjectDialog.on_filenamePicker_textChanged" ref="eric7.MultiProject.AddProjectDialog.html#AddProjectDialog.on_filenamePicker_textChanged" />
       <keyword name="AddProjectDialog.on_nameEdit_textChanged" id="AddProjectDialog.on_nameEdit_textChanged" ref="eric7.MultiProject.AddProjectDialog.html#AddProjectDialog.on_nameEdit_textChanged" />
+      <keyword name="AddProjectUrlDialog" id="AddProjectUrlDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html#AddProjectUrlDialog" />
+      <keyword name="AddProjectUrlDialog (Constructor)" id="AddProjectUrlDialog (Constructor)" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html#AddProjectUrlDialog.__init__" />
+      <keyword name="AddProjectUrlDialog (Module)" id="AddProjectUrlDialog (Module)" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html" />
+      <keyword name="AddProjectUrlDialog.__updateOK" id="AddProjectUrlDialog.__updateOK" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html#AddProjectUrlDialog.__updateOK" />
+      <keyword name="AddProjectUrlDialog.getUrl" id="AddProjectUrlDialog.getUrl" ref="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html#AddProjectUrlDialog.getUrl" />
       <keyword name="AnnotationType" id="AnnotationType" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Annotations.AnnotationsEnums.html#AnnotationType" />
       <keyword name="Annotations (Package)" id="Annotations (Package)" ref="index-eric7.Plugins.CheckerPlugins.CodeStyleChecker.Annotations.html" />
       <keyword name="AnnotationsChecker" id="AnnotationsChecker" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Annotations.AnnotationsChecker.html#AnnotationsChecker" />
@@ -13596,14 +13610,14 @@
       <keyword name="SetResolver" id="SetResolver" ref="eric7.DebugClients.Python.DebugVariables.html#SetResolver" />
       <keyword name="SetResolver.getVariableList" id="SetResolver.getVariableList" ref="eric7.DebugClients.Python.DebugVariables.html#SetResolver.getVariableList" />
       <keyword name="SetResolver.resolve" id="SetResolver.resolve" ref="eric7.DebugClients.Python.DebugVariables.html#SetResolver.resolve" />
+      <keyword name="SetupCfgUtilities (Module)" id="SetupCfgUtilities (Module)" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html" />
       <keyword name="SetupWizard" id="SetupWizard" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard" />
       <keyword name="SetupWizard (Constructor)" id="SetupWizard (Constructor)" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__init__" />
       <keyword name="SetupWizard (Package)" id="SetupWizard (Package)" ref="index-eric7.Plugins.WizardPlugins.SetupWizard.html" />
       <keyword name="SetupWizard.__callForm" id="SetupWizard.__callForm" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__callForm" />
       <keyword name="SetupWizard.__handle" id="SetupWizard.__handle" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__handle" />
-      <keyword name="SetupWizard.__initAction" id="SetupWizard.__initAction" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__initAction" />
+      <keyword name="SetupWizard.__initActions" id="SetupWizard.__initActions" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__initActions" />
       <keyword name="SetupWizard.__initMenu" id="SetupWizard.__initMenu" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__initMenu" />
-      <keyword name="SetupWizard.__initialize" id="SetupWizard.__initialize" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.__initialize" />
       <keyword name="SetupWizard.activate" id="SetupWizard.activate" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.activate" />
       <keyword name="SetupWizard.deactivate" id="SetupWizard.deactivate" ref="eric7.Plugins.PluginWizardSetup.html#SetupWizard.deactivate" />
       <keyword name="SetupWizardDialog" id="SetupWizardDialog" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog" />
@@ -13612,21 +13626,29 @@
       <keyword name="SetupWizardDialog.__addClassifierEntry" id="SetupWizardDialog.__addClassifierEntry" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__addClassifierEntry" />
       <keyword name="SetupWizardDialog.__enableOkButton" id="SetupWizardDialog.__enableOkButton" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__enableOkButton" />
       <keyword name="SetupWizardDialog.__getLicenseText" id="SetupWizardDialog.__getLicenseText" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getLicenseText" />
+      <keyword name="SetupWizardDialog.__getPyprojectCode" id="SetupWizardDialog.__getPyprojectCode" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getPyprojectCode" />
+      <keyword name="SetupWizardDialog.__getSetupCfgCode" id="SetupWizardDialog.__getSetupCfgCode" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getSetupCfgCode" />
+      <keyword name="SetupWizardDialog.__getSetupPyCode" id="SetupWizardDialog.__getSetupPyCode" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getSetupPyCode" />
       <keyword name="SetupWizardDialog.__getStartDir" id="SetupWizardDialog.__getStartDir" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getStartDir" />
       <keyword name="SetupWizardDialog.__populateClassifiers" id="SetupWizardDialog.__populateClassifiers" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__populateClassifiers" />
       <keyword name="SetupWizardDialog.getCode" id="SetupWizardDialog.getCode" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.getCode" />
+      <keyword name="SetupWizardDialog.on_addEntryPointButton_clicked" id="SetupWizardDialog.on_addEntryPointButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addEntryPointButton_clicked" />
       <keyword name="SetupWizardDialog.on_addExludePatternButton_clicked" id="SetupWizardDialog.on_addExludePatternButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addExludePatternButton_clicked" />
       <keyword name="SetupWizardDialog.on_addModuleButton_clicked" id="SetupWizardDialog.on_addModuleButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addModuleButton_clicked" />
-      <keyword name="SetupWizardDialog.on_addScriptButton_clicked" id="SetupWizardDialog.on_addScriptButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addScriptButton_clicked" />
+      <keyword name="SetupWizardDialog.on_deleteEntryPointButton_clicked" id="SetupWizardDialog.on_deleteEntryPointButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_deleteEntryPointButton_clicked" />
       <keyword name="SetupWizardDialog.on_deleteExcludePatternButton_clicked" id="SetupWizardDialog.on_deleteExcludePatternButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_deleteExcludePatternButton_clicked" />
       <keyword name="SetupWizardDialog.on_deleteModuleButton_clicked" id="SetupWizardDialog.on_deleteModuleButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_deleteModuleButton_clicked" />
-      <keyword name="SetupWizardDialog.on_deleteScriptButton_clicked" id="SetupWizardDialog.on_deleteScriptButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_deleteScriptButton_clicked" />
+      <keyword name="SetupWizardDialog.on_editEntryPointButton_clicked" id="SetupWizardDialog.on_editEntryPointButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_editEntryPointButton_clicked" />
+      <keyword name="SetupWizardDialog.on_entryPointsList_itemSelectionChanged" id="SetupWizardDialog.on_entryPointsList_itemSelectionChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_entryPointsList_itemSelectionChanged" />
       <keyword name="SetupWizardDialog.on_excludePatternEdit_returnPressed" id="SetupWizardDialog.on_excludePatternEdit_returnPressed" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternEdit_returnPressed" />
       <keyword name="SetupWizardDialog.on_excludePatternEdit_textChanged" id="SetupWizardDialog.on_excludePatternEdit_textChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternEdit_textChanged" />
       <keyword name="SetupWizardDialog.on_excludePatternList_itemSelectionChanged" id="SetupWizardDialog.on_excludePatternList_itemSelectionChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternList_itemSelectionChanged" />
       <keyword name="SetupWizardDialog.on_modulesList_itemSelectionChanged" id="SetupWizardDialog.on_modulesList_itemSelectionChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_modulesList_itemSelectionChanged" />
       <keyword name="SetupWizardDialog.on_projectButton_clicked" id="SetupWizardDialog.on_projectButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_projectButton_clicked" />
-      <keyword name="SetupWizardDialog.on_scriptsList_itemSelectionChanged" id="SetupWizardDialog.on_scriptsList_itemSelectionChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_scriptsList_itemSelectionChanged" />
+      <keyword name="SetupWizardDialog.on_projectUrlsList_itemSelectionChanged" id="SetupWizardDialog.on_projectUrlsList_itemSelectionChanged" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_projectUrlsList_itemSelectionChanged" />
+      <keyword name="SetupWizardDialog.on_urlAddButton_clicked" id="SetupWizardDialog.on_urlAddButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_urlAddButton_clicked" />
+      <keyword name="SetupWizardDialog.on_urlDeleteButton_clicked" id="SetupWizardDialog.on_urlDeleteButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_urlDeleteButton_clicked" />
+      <keyword name="SetupWizardDialog.on_urlEditButton_clicked" id="SetupWizardDialog.on_urlEditButton_clicked" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_urlEditButton_clicked" />
       <keyword name="Shell" id="Shell" ref="eric7.QScintilla.Shell.html#Shell" />
       <keyword name="Shell (Constructor)" id="Shell (Constructor)" ref="eric7.QScintilla.Shell.html#Shell.__init__" />
       <keyword name="Shell (Module)" id="Shell (Module)" ref="eric7.QScintilla.Shell.html" />
@@ -18181,10 +18203,13 @@
       <keyword name="_add_check" id="_add_check" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_add_check" />
       <keyword name="_amendMetaData" id="_amendMetaData" ref="eric7.CycloneDXInterface.CycloneDXUtilities.html#_amendMetaData" />
       <keyword name="_assembleTestCasesList" id="_assembleTestCasesList" ref="eric7.Testing.Interfaces.UnittestRunner.html#_assembleTestCasesList" />
+      <keyword name="_bool2string" id="_bool2string" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#_bool2string" />
       <keyword name="_break_around_binary_operators" id="_break_around_binary_operators" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_break_around_binary_operators" />
       <keyword name="_buildChildrenLists" id="_buildChildrenLists" ref="eric7.Graphics.GraphicsUtilities.html#_buildChildrenLists" />
       <keyword name="_checkString" id="_checkString" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#_checkString" />
       <keyword name="_classifyKeySize" id="_classifyKeySize" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_classifyKeySize" />
+      <keyword name="_dict2list" id="_dict2list" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#_dict2list" />
+      <keyword name="_dict2string" id="_dict2string" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#_dict2string" />
       <keyword name="_evaluateAst" id="_evaluateAst" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#_evaluateAst" />
       <keyword name="_evaluateShellCall" id="_evaluateShellCall" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#_evaluateShellCall" />
       <keyword name="_get" id="_get" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#_get" />
@@ -18196,6 +18221,7 @@
       <keyword name="_is_binary_operator" id="_is_binary_operator" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_binary_operator" />
       <keyword name="_is_eol_token" id="_is_eol_token" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_eol_token" />
       <keyword name="_is_one_liner" id="_is_one_liner" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_one_liner" />
+      <keyword name="_list2string" id="_list2string" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#_list2string" />
       <keyword name="_main" id="_main" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_main" />
       <keyword name="_parse_multi_options" id="_parse_multi_options" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_parse_multi_options" />
       <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric7.Utilities.__init__.html#_percentReplacementFunc" />
@@ -18613,7 +18639,6 @@
       <keyword name="getCorba" id="getCorba" ref="eric7.Preferences.__init__.html#getCorba" />
       <keyword name="getCoverageFileName" id="getCoverageFileName" ref="eric7.Utilities.__init__.html#getCoverageFileName" />
       <keyword name="getCoverageFileNames" id="getCoverageFileNames" ref="eric7.Utilities.__init__.html#getCoverageFileNames" />
-      <keyword name="getDataFiles" id="getDataFiles" ref="setup.html#getDataFiles" />
       <keyword name="getDebugger" id="getDebugger" ref="eric7.Preferences.__init__.html#getDebugger" />
       <keyword name="getDefaultIconPaths" id="getDefaultIconPaths" ref="eric7.Toolbox.Startup.html#getDefaultIconPaths" />
       <keyword name="getDefaultLexerAssociations" id="getDefaultLexerAssociations" ref="eric7.QScintilla.Lexers.__init__.html#getDefaultLexerAssociations" />
@@ -19203,6 +19228,7 @@
       <keyword name="toList" id="toList" ref="eric7.Preferences.__init__.html#toList" />
       <keyword name="toNativeSeparators" id="toNativeSeparators" ref="eric7.Utilities.__init__.html#toNativeSeparators" />
       <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric7.WebBrowser.AdBlock.AdBlockRule.html#toSecondLevelDomain" />
+      <keyword name="toString" id="toString" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#toString" />
       <keyword name="tomlCheckSyntax (Module)" id="tomlCheckSyntax (Module)" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html" />
       <keyword name="tomlSyntaxBatchCheck" id="tomlSyntaxBatchCheck" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html#tomlSyntaxBatchCheck" />
       <keyword name="tomlSyntaxCheck" id="tomlSyntaxCheck" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html#tomlSyntaxCheck" />
@@ -19905,6 +19931,9 @@
       <file>eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardDialog.html</file>
       <file>eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardRepeatDialog.html</file>
       <file>eric7.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.html</file>
+      <file>eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html</file>
+      <file>eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html</file>
+      <file>eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html</file>
       <file>eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html</file>
       <file>eric7.Preferences.ConfigurationDialog.html</file>
       <file>eric7.Preferences.ConfigurationPages.ApplicationPage.html</file>
--- a/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html	Sat Jul 02 18:53:56 2022 +0200
@@ -2465,7 +2465,7 @@
 
 <a NAME="LineShortener.__init__" ID="LineShortener.__init__"></a>
 <h4>LineShortener (Constructor)</h4>
-<b>LineShortener</b>(<i>curLine, prevLine, nextLine, maxLength=79, eol="\n", indentWord="    ", isDocString=False</i>)
+<b>LineShortener</b>(<i>curLine, prevLine, nextLine, maxLength=88, eol="\n", indentWord="    ", isDocString=False</i>)
 
 <p>
         Constructor
--- a/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.DocStyle.DocStyleChecker.html	Sat Jul 02 18:53:56 2022 +0200
@@ -243,7 +243,7 @@
 
 <a NAME="DocStyleChecker.__init__" ID="DocStyleChecker.__init__"></a>
 <h4>DocStyleChecker (Constructor)</h4>
-<b>DocStyleChecker</b>(<i>source, filename, select, ignore, expected, repeat, maxLineLength=79, docType="pep257"</i>)
+<b>DocStyleChecker</b>(<i>source, filename, select, ignore, expected, repeat, maxLineLength=88, docType="pep257"</i>)
 
 <p>
         Constructor
--- a/eric7/Documentation/Source/eric7.Plugins.PluginWizardSetup.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/eric7.Plugins.PluginWizardSetup.html	Sat Jul 02 18:53:56 2022 +0200
@@ -67,18 +67,14 @@
 <td>Private method to handle the wizards action.</td>
 </tr>
 <tr>
-<td><a href="#SetupWizard.__initAction">__initAction</a></td>
-<td>Private method to initialize the action.</td>
+<td><a href="#SetupWizard.__initActions">__initActions</a></td>
+<td>Private method to initialize the actions.</td>
 </tr>
 <tr>
 <td><a href="#SetupWizard.__initMenu">__initMenu</a></td>
 <td>Private method to add the actions to the right menu.</td>
 </tr>
 <tr>
-<td><a href="#SetupWizard.__initialize">__initialize</a></td>
-<td>Private slot to (re)initialize the plug-in.</td>
-</tr>
-<tr>
 <td><a href="#SetupWizard.activate">activate</a></td>
 <td>Public method to activate this plug-in.</td>
 </tr>
@@ -102,44 +98,61 @@
 </p>
 <dl>
 
-<dt><i>ui</i></dt>
+<dt><i>ui</i> (UI.UserInterface)</dt>
 <dd>
-reference to the user interface object (UI.UserInterface)
+reference to the user interface object
 </dd>
 </dl>
 <a NAME="SetupWizard.__callForm" ID="SetupWizard.__callForm"></a>
 <h4>SetupWizard.__callForm</h4>
-<b>__callForm</b>(<i>editor</i>)
+<b>__callForm</b>(<i>editor, category</i>)
 
 <p>
         Private method to display a dialog and get the code.
 </p>
 <dl>
 
-<dt><i>editor</i></dt>
+<dt><i>editor</i> (Editor)</dt>
 <dd>
 reference to the current editor
 </dd>
+<dt><i>category</i> (str)</dt>
+<dd>
+category of setup file to create
+</dd>
 </dl>
 <dl>
 <dt>Return:</dt>
 <dd>
-the generated code (string)
+tuple containing the generated code and a flag indicating an error
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, bool)
 </dd>
 </dl>
 <a NAME="SetupWizard.__handle" ID="SetupWizard.__handle"></a>
 <h4>SetupWizard.__handle</h4>
-<b>__handle</b>(<i></i>)
+<b>__handle</b>(<i>category</i>)
 
 <p>
         Private method to handle the wizards action.
 </p>
-<a NAME="SetupWizard.__initAction" ID="SetupWizard.__initAction"></a>
-<h4>SetupWizard.__initAction</h4>
-<b>__initAction</b>(<i></i>)
+<dl>
+
+<dt><i>category</i> (str)</dt>
+<dd>
+category of setup file to create
+</dd>
+</dl>
+<a NAME="SetupWizard.__initActions" ID="SetupWizard.__initActions"></a>
+<h4>SetupWizard.__initActions</h4>
+<b>__initActions</b>(<i></i>)
 
 <p>
-        Private method to initialize the action.
+        Private method to initialize the actions.
 </p>
 <a NAME="SetupWizard.__initMenu" ID="SetupWizard.__initMenu"></a>
 <h4>SetupWizard.__initMenu</h4>
@@ -148,13 +161,6 @@
 <p>
         Private method to add the actions to the right menu.
 </p>
-<a NAME="SetupWizard.__initialize" ID="SetupWizard.__initialize"></a>
-<h4>SetupWizard.__initialize</h4>
-<b>__initialize</b>(<i></i>)
-
-<p>
-        Private slot to (re)initialize the plug-in.
-</p>
 <a NAME="SetupWizard.activate" ID="SetupWizard.activate"></a>
 <h4>SetupWizard.activate</h4>
 <b>activate</b>(<i></i>)
@@ -165,7 +171,13 @@
 <dl>
 <dt>Return:</dt>
 <dd>
-tuple of None and activation status (boolean)
+tuple of None and activation status
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (None, boolean)
 </dd>
 </dl>
 <a NAME="SetupWizard.deactivate" ID="SetupWizard.deactivate"></a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog</title>
+<meta charset="UTF-8">
+<link rel="stylesheet" href="styles.css">
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog</h1>
+
+<p>
+Module implementing a dialog to enter the data for an entry point.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#AddEntryPointDialog">AddEntryPointDialog</a></td>
+<td>Class implementing a dialog to enter the data for an entry point.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="AddEntryPointDialog" ID="AddEntryPointDialog"></a>
+<h2>AddEntryPointDialog</h2>
+
+<p>
+    Class implementing a dialog to enter the data for an entry point.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_AddEntryPointDialog
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#AddEntryPointDialog.__init__">AddEntryPointDialog</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#AddEntryPointDialog.__updateOK">__updateOK</a></td>
+<td>Private slot to update the enabled state of the OK button.</td>
+</tr>
+<tr>
+<td><a href="#AddEntryPointDialog.getEntryPoint">getEntryPoint</a></td>
+<td>Public method to get the data for the entry point.</td>
+</tr>
+<tr>
+<td><a href="#AddEntryPointDialog.on_scriptButton_clicked">on_scriptButton_clicked</a></td>
+<td>Private slot to select a script via a file selection dialog.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="AddEntryPointDialog.__init__" ID="AddEntryPointDialog.__init__"></a>
+<h4>AddEntryPointDialog (Constructor)</h4>
+<b>AddEntryPointDialog</b>(<i>rootDirectory, epType="", name="", script="", parent=None</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>rootDirectory</i> (str)</dt>
+<dd>
+root directory for selecting script modules via
+            a file selection dialog
+</dd>
+<dt><i>epType</i> (str (optional))</dt>
+<dd>
+type of the entry point (defaults to "")
+</dd>
+<dt><i>name</i> (str (optional))</dt>
+<dd>
+name of the entry point (defaults to "")
+</dd>
+<dt><i>script</i> (str (optional))</dt>
+<dd>
+script function of the entry point (defaults to "")
+</dd>
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<a NAME="AddEntryPointDialog.__updateOK" ID="AddEntryPointDialog.__updateOK"></a>
+<h4>AddEntryPointDialog.__updateOK</h4>
+<b>__updateOK</b>(<i></i>)
+
+<p>
+        Private slot to update the enabled state of the OK button.
+</p>
+<a NAME="AddEntryPointDialog.getEntryPoint" ID="AddEntryPointDialog.getEntryPoint"></a>
+<h4>AddEntryPointDialog.getEntryPoint</h4>
+<b>getEntryPoint</b>(<i></i>)
+
+<p>
+        Public method to get the data for the entry point.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+tuple containing the entry point type, category, name and
+            script function
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, str, str)
+</dd>
+</dl>
+<a NAME="AddEntryPointDialog.on_scriptButton_clicked" ID="AddEntryPointDialog.on_scriptButton_clicked"></a>
+<h4>AddEntryPointDialog.on_scriptButton_clicked</h4>
+<b>on_scriptButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to select a script via a file selection dialog.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog</title>
+<meta charset="UTF-8">
+<link rel="stylesheet" href="styles.css">
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog</h1>
+
+<p>
+Module implementing a dialog to enter the data for a project URL.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#AddProjectUrlDialog">AddProjectUrlDialog</a></td>
+<td>Class implementing a dialog to enter the data for a project URL.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="AddProjectUrlDialog" ID="AddProjectUrlDialog"></a>
+<h2>AddProjectUrlDialog</h2>
+
+<p>
+    Class implementing a dialog to enter the data for a project URL.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_AddProjectUrlDialog
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#AddProjectUrlDialog.__init__">AddProjectUrlDialog</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#AddProjectUrlDialog.__updateOK">__updateOK</a></td>
+<td>Private slot to update the enabled state of the OK button.</td>
+</tr>
+<tr>
+<td><a href="#AddProjectUrlDialog.getUrl">getUrl</a></td>
+<td>Public method to get the data for the project URL.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="AddProjectUrlDialog.__init__" ID="AddProjectUrlDialog.__init__"></a>
+<h4>AddProjectUrlDialog (Constructor)</h4>
+<b>AddProjectUrlDialog</b>(<i>name="", url="", parent=None</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>name</i> (str (optional))</dt>
+<dd>
+name of the project URL (defaults to "")
+</dd>
+<dt><i>url</i> (str (optional))</dt>
+<dd>
+address of the project URL (defaults to "")
+</dd>
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<a NAME="AddProjectUrlDialog.__updateOK" ID="AddProjectUrlDialog.__updateOK"></a>
+<h4>AddProjectUrlDialog.__updateOK</h4>
+<b>__updateOK</b>(<i></i>)
+
+<p>
+        Private slot to update the enabled state of the OK button.
+</p>
+<a NAME="AddProjectUrlDialog.getUrl" ID="AddProjectUrlDialog.getUrl"></a>
+<h4>AddProjectUrlDialog.getUrl</h4>
+<b>getUrl</b>(<i></i>)
+
+<p>
+        Public method to get the data for the project URL.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+tuple containing the name and address of the project URL
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, str)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities</title>
+<meta charset="UTF-8">
+<link rel="stylesheet" href="styles.css">
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities</h1>
+
+<p>
+Module implementing some utility functions for setup.cfg creation.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#_bool2string">_bool2string</a></td>
+<td>Function to convert a bool value to a setup.cfg string.</td>
+</tr>
+<tr>
+<td><a href="#_dict2list">_dict2list</a></td>
+<td>Function to convert a dict value to a setup.cfg list string.</td>
+</tr>
+<tr>
+<td><a href="#_dict2string">_dict2string</a></td>
+<td>Function to convert a dict value to a setup.cfg string.</td>
+</tr>
+<tr>
+<td><a href="#_list2string">_list2string</a></td>
+<td>Function to convert a list value to a setup.cfg string.</td>
+</tr>
+<tr>
+<td><a href="#toString">toString</a></td>
+<td>Function to convert a value to a setup.cfg string</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="_bool2string" ID="_bool2string"></a>
+<h2>_bool2string</h2>
+<b>_bool2string</b>(<i>value</i>)
+
+<p>
+    Function to convert a bool value to a setup.cfg string.
+</p>
+<dl>
+
+<dt><i>value</i> (bool)</dt>
+<dd>
+bool value to be converted
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+setup.cfg string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="_dict2list" ID="_dict2list"></a>
+<h2>_dict2list</h2>
+<b>_dict2list</b>(<i>value</i>)
+
+<p>
+    Function to convert a dict value to a setup.cfg list string.
+</p>
+<dl>
+
+<dt><i>value</i> (dict)</dt>
+<dd>
+dict value to be converted
+</dd>
+</dl>
+<dl>
+<dt>Yield:</dt>
+<dd>
+setup.cfg string
+</dd>
+</dl>
+<dl>
+<dt>Yield Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="_dict2string" ID="_dict2string"></a>
+<h2>_dict2string</h2>
+<b>_dict2string</b>(<i>value</i>)
+
+<p>
+    Function to convert a dict value to a setup.cfg string.
+</p>
+<dl>
+
+<dt><i>value</i> (dict)</dt>
+<dd>
+dict value to be converted
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+setup.cfg string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="_list2string" ID="_list2string"></a>
+<h2>_list2string</h2>
+<b>_list2string</b>(<i>value</i>)
+
+<p>
+    Function to convert a list value to a setup.cfg string.
+</p>
+<dl>
+
+<dt><i>value</i> (list)</dt>
+<dd>
+list value to be converted
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+setup.cfg string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="toString" ID="toString"></a>
+<h2>toString</h2>
+<b>toString</b>(<i>value</i>)
+
+<p>
+    Function to convert a value to a setup.cfg string
+</p>
+<dl>
+
+<dt><i>value</i> (bool, list, set, tuple or dict)</dt>
+<dd>
+value to be converted
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+setup.cfg string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html	Sat Jul 02 18:53:56 2022 +0200
@@ -75,6 +75,18 @@
 <td>Private method to get the license text.</td>
 </tr>
 <tr>
+<td><a href="#SetupWizardDialog.__getPyprojectCode">__getPyprojectCode</a></td>
+<td>Private method to get the source code for a 'pyproject.toml' file.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.__getSetupCfgCode">__getSetupCfgCode</a></td>
+<td>Private method to get the source code for a 'setup.cfg' file.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.__getSetupPyCode">__getSetupPyCode</a></td>
+<td>Private method to get the source code for a 'setup.py' file.</td>
+</tr>
+<tr>
 <td><a href="#SetupWizardDialog.__getStartDir">__getStartDir</a></td>
 <td>Private method to get the start directory for selection dialogs.</td>
 </tr>
@@ -87,6 +99,10 @@
 <td>Public method to get the source code.</td>
 </tr>
 <tr>
+<td><a href="#SetupWizardDialog.on_addEntryPointButton_clicked">on_addEntryPointButton_clicked</a></td>
+<td>Private slot to add an entry point to the list.</td>
+</tr>
+<tr>
 <td><a href="#SetupWizardDialog.on_addExludePatternButton_clicked">on_addExludePatternButton_clicked</a></td>
 <td>Private slot to add an exclude pattern to the list.</td>
 </tr>
@@ -95,8 +111,8 @@
 <td>Private slot to add Python modules to the list.</td>
 </tr>
 <tr>
-<td><a href="#SetupWizardDialog.on_addScriptButton_clicked">on_addScriptButton_clicked</a></td>
-<td>Private slot to add scripts to the list.</td>
+<td><a href="#SetupWizardDialog.on_deleteEntryPointButton_clicked">on_deleteEntryPointButton_clicked</a></td>
+<td>Private slot to delete the selected entry point items.</td>
 </tr>
 <tr>
 <td><a href="#SetupWizardDialog.on_deleteExcludePatternButton_clicked">on_deleteExcludePatternButton_clicked</a></td>
@@ -104,11 +120,15 @@
 </tr>
 <tr>
 <td><a href="#SetupWizardDialog.on_deleteModuleButton_clicked">on_deleteModuleButton_clicked</a></td>
-<td>Private slot to delete the selected script items.</td>
+<td>Private slot to delete the selected module items.</td>
 </tr>
 <tr>
-<td><a href="#SetupWizardDialog.on_deleteScriptButton_clicked">on_deleteScriptButton_clicked</a></td>
-<td>Private slot to delete the selected script items.</td>
+<td><a href="#SetupWizardDialog.on_editEntryPointButton_clicked">on_editEntryPointButton_clicked</a></td>
+<td>Private slot to edit the selected entry point.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.on_entryPointsList_itemSelectionChanged">on_entryPointsList_itemSelectionChanged</a></td>
+<td>Private slot to handle a change of selected items of the entry points list.</td>
 </tr>
 <tr>
 <td><a href="#SetupWizardDialog.on_excludePatternEdit_returnPressed">on_excludePatternEdit_returnPressed</a></td>
@@ -131,8 +151,20 @@
 <td>Private slot to populate some fields with data retrieved from the current project.</td>
 </tr>
 <tr>
-<td><a href="#SetupWizardDialog.on_scriptsList_itemSelectionChanged">on_scriptsList_itemSelectionChanged</a></td>
-<td>Private slot to handle a change of selected items of the scripts list.</td>
+<td><a href="#SetupWizardDialog.on_projectUrlsList_itemSelectionChanged">on_projectUrlsList_itemSelectionChanged</a></td>
+<td>Private slot to handle a change of selected items of the project URLs list.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.on_urlAddButton_clicked">on_urlAddButton_clicked</a></td>
+<td>Private slot to add a project URL to the list.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.on_urlDeleteButton_clicked">on_urlDeleteButton_clicked</a></td>
+<td>Private slot to delete the selected URL items.</td>
+</tr>
+<tr>
+<td><a href="#SetupWizardDialog.on_urlEditButton_clicked">on_urlEditButton_clicked</a></td>
+<td>Private slot to edit the selected project URL.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -143,16 +175,27 @@
 
 <a NAME="SetupWizardDialog.__init__" ID="SetupWizardDialog.__init__"></a>
 <h4>SetupWizardDialog (Constructor)</h4>
-<b>SetupWizardDialog</b>(<i>parent=None</i>)
+<b>SetupWizardDialog</b>(<i>category, parent=None</i>)
 
 <p>
         Constructor
 </p>
 <dl>
 
-<dt><i>parent</i> (QWidget)</dt>
+<dt><i>category</i> (str)</dt>
+<dd>
+category of setup file to create
+</dd>
+<dt><i>parent</i> (QWidget (optional))</dt>
 <dd>
-reference to the parent widget
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<dl>
+
+<dt>Raises <b>ValueError</b>:</dt>
+<dd>
+raised for an illegal setup file category
 </dd>
 </dl>
 <a NAME="SetupWizardDialog.__addClassifierEntry" ID="SetupWizardDialog.__addClassifierEntry"></a>
@@ -195,6 +238,74 @@
 str
 </dd>
 </dl>
+<a NAME="SetupWizardDialog.__getPyprojectCode" ID="SetupWizardDialog.__getPyprojectCode"></a>
+<h4>SetupWizardDialog.__getPyprojectCode</h4>
+<b>__getPyprojectCode</b>(<i></i>)
+
+<p>
+        Private method to get the source code for a 'pyproject.toml' file.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+generated code
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="SetupWizardDialog.__getSetupCfgCode" ID="SetupWizardDialog.__getSetupCfgCode"></a>
+<h4>SetupWizardDialog.__getSetupCfgCode</h4>
+<b>__getSetupCfgCode</b>(<i></i>)
+
+<p>
+        Private method to get the source code for a 'setup.cfg' file.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+generated code
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="SetupWizardDialog.__getSetupPyCode" ID="SetupWizardDialog.__getSetupPyCode"></a>
+<h4>SetupWizardDialog.__getSetupPyCode</h4>
+<b>__getSetupPyCode</b>(<i>indLevel, indString</i>)
+
+<p>
+        Private method to get the source code for a 'setup.py' file.
+</p>
+<dl>
+
+<dt><i>indLevel</i> (int)</dt>
+<dd>
+indentation level
+</dd>
+<dt><i>indString</i> (str)</dt>
+<dd>
+string used for indentation (space or tab)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+generated code
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
 <a NAME="SetupWizardDialog.__getStartDir" ID="SetupWizardDialog.__getStartDir"></a>
 <h4>SetupWizardDialog.__getStartDir</h4>
 <b>__getStartDir</b>(<i></i>)
@@ -251,6 +362,13 @@
 str
 </dd>
 </dl>
+<a NAME="SetupWizardDialog.on_addEntryPointButton_clicked" ID="SetupWizardDialog.on_addEntryPointButton_clicked"></a>
+<h4>SetupWizardDialog.on_addEntryPointButton_clicked</h4>
+<b>on_addEntryPointButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to add an entry point to the list.
+</p>
 <a NAME="SetupWizardDialog.on_addExludePatternButton_clicked" ID="SetupWizardDialog.on_addExludePatternButton_clicked"></a>
 <h4>SetupWizardDialog.on_addExludePatternButton_clicked</h4>
 <b>on_addExludePatternButton_clicked</b>(<i></i>)
@@ -265,12 +383,12 @@
 <p>
         Private slot to add Python modules to the list.
 </p>
-<a NAME="SetupWizardDialog.on_addScriptButton_clicked" ID="SetupWizardDialog.on_addScriptButton_clicked"></a>
-<h4>SetupWizardDialog.on_addScriptButton_clicked</h4>
-<b>on_addScriptButton_clicked</b>(<i></i>)
+<a NAME="SetupWizardDialog.on_deleteEntryPointButton_clicked" ID="SetupWizardDialog.on_deleteEntryPointButton_clicked"></a>
+<h4>SetupWizardDialog.on_deleteEntryPointButton_clicked</h4>
+<b>on_deleteEntryPointButton_clicked</b>(<i></i>)
 
 <p>
-        Private slot to add scripts to the list.
+        Private slot to delete the selected entry point items.
 </p>
 <a NAME="SetupWizardDialog.on_deleteExcludePatternButton_clicked" ID="SetupWizardDialog.on_deleteExcludePatternButton_clicked"></a>
 <h4>SetupWizardDialog.on_deleteExcludePatternButton_clicked</h4>
@@ -284,14 +402,22 @@
 <b>on_deleteModuleButton_clicked</b>(<i></i>)
 
 <p>
-        Private slot to delete the selected script items.
+        Private slot to delete the selected module items.
 </p>
-<a NAME="SetupWizardDialog.on_deleteScriptButton_clicked" ID="SetupWizardDialog.on_deleteScriptButton_clicked"></a>
-<h4>SetupWizardDialog.on_deleteScriptButton_clicked</h4>
-<b>on_deleteScriptButton_clicked</b>(<i></i>)
+<a NAME="SetupWizardDialog.on_editEntryPointButton_clicked" ID="SetupWizardDialog.on_editEntryPointButton_clicked"></a>
+<h4>SetupWizardDialog.on_editEntryPointButton_clicked</h4>
+<b>on_editEntryPointButton_clicked</b>(<i></i>)
 
 <p>
-        Private slot to delete the selected script items.
+        Private slot to edit the selected entry point.
+</p>
+<a NAME="SetupWizardDialog.on_entryPointsList_itemSelectionChanged" ID="SetupWizardDialog.on_entryPointsList_itemSelectionChanged"></a>
+<h4>SetupWizardDialog.on_entryPointsList_itemSelectionChanged</h4>
+<b>on_entryPointsList_itemSelectionChanged</b>(<i></i>)
+
+<p>
+        Private slot to handle a change of selected items of the
+        entry points list.
 </p>
 <a NAME="SetupWizardDialog.on_excludePatternEdit_returnPressed" ID="SetupWizardDialog.on_excludePatternEdit_returnPressed"></a>
 <h4>SetupWizardDialog.on_excludePatternEdit_returnPressed</h4>
@@ -339,13 +465,34 @@
         Private slot to populate some fields with data retrieved from the
         current project.
 </p>
-<a NAME="SetupWizardDialog.on_scriptsList_itemSelectionChanged" ID="SetupWizardDialog.on_scriptsList_itemSelectionChanged"></a>
-<h4>SetupWizardDialog.on_scriptsList_itemSelectionChanged</h4>
-<b>on_scriptsList_itemSelectionChanged</b>(<i></i>)
+<a NAME="SetupWizardDialog.on_projectUrlsList_itemSelectionChanged" ID="SetupWizardDialog.on_projectUrlsList_itemSelectionChanged"></a>
+<h4>SetupWizardDialog.on_projectUrlsList_itemSelectionChanged</h4>
+<b>on_projectUrlsList_itemSelectionChanged</b>(<i></i>)
 
 <p>
         Private slot to handle a change of selected items of the
-        scripts list.
+        project URLs list.
+</p>
+<a NAME="SetupWizardDialog.on_urlAddButton_clicked" ID="SetupWizardDialog.on_urlAddButton_clicked"></a>
+<h4>SetupWizardDialog.on_urlAddButton_clicked</h4>
+<b>on_urlAddButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to add a project URL to the list.
+</p>
+<a NAME="SetupWizardDialog.on_urlDeleteButton_clicked" ID="SetupWizardDialog.on_urlDeleteButton_clicked"></a>
+<h4>SetupWizardDialog.on_urlDeleteButton_clicked</h4>
+<b>on_urlDeleteButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to delete the selected URL items.
+</p>
+<a NAME="SetupWizardDialog.on_urlEditButton_clicked" ID="SetupWizardDialog.on_urlEditButton_clicked"></a>
+<h4>SetupWizardDialog.on_urlEditButton_clicked</h4>
+<b>on_urlEditButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to edit the selected project URL.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
--- a/eric7/Documentation/Source/index-eric7.Plugins.WizardPlugins.SetupWizard.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/index-eric7.Plugins.WizardPlugins.SetupWizard.html	Sat Jul 02 18:53:56 2022 +0200
@@ -16,6 +16,18 @@
 <table>
 
 <tr>
+<td><a href="eric7.Plugins.WizardPlugins.SetupWizard.AddEntryPointDialog.html">AddEntryPointDialog</a></td>
+<td>Module implementing a dialog to enter the data for an entry point.</td>
+</tr>
+<tr>
+<td><a href="eric7.Plugins.WizardPlugins.SetupWizard.AddProjectUrlDialog.html">AddProjectUrlDialog</a></td>
+<td>Module implementing a dialog to enter the data for a project URL.</td>
+</tr>
+<tr>
+<td><a href="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html">SetupCfgUtilities</a></td>
+<td>Module implementing some utility functions for setup.cfg creation.</td>
+</tr>
+<tr>
 <td><a href="eric7.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html">SetupWizardDialog</a></td>
 <td>Module implementing the setup.py wizard dialog.</td>
 </tr>
--- a/eric7/Documentation/Source/setup.html	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Documentation/Source/setup.html	Sat Jul 02 18:53:56 2022 +0200
@@ -42,10 +42,6 @@
 <td>Create a file containing some rudimentary install information.</td>
 </tr>
 <tr>
-<td><a href="#getDataFiles">getDataFiles</a></td>
-<td>Function to return data_files in a platform dependent manner.</td>
-</tr>
-<tr>
 <td><a href="#getLongDescription">getLongDescription</a></td>
 <td>Function to get the long description via the README file.</td>
 </tr>
@@ -148,28 +144,6 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
-<a NAME="getDataFiles" ID="getDataFiles"></a>
-<h2>getDataFiles</h2>
-<b>getDataFiles</b>(<i></i>)
-
-<p>
-    Function to return data_files in a platform dependent manner.
-</p>
-<dl>
-<dt>Return:</dt>
-<dd>
-list containing the platform specific data files
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-list of tuples of (str, list of str)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
 <a NAME="getLongDescription" ID="getLongDescription"></a>
 <h2>getLongDescription</h2>
 <b>getLongDescription</b>(<i></i>)
--- a/eric7/Plugins/PluginWizardSetup.py	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Plugins/PluginWizardSetup.py	Sat Jul 02 18:53:56 2022 +0200
@@ -7,6 +7,8 @@
 Module implementing the setup.py wizard plug-in.
 """
 
+import functools
+
 from PyQt6.QtCore import QObject
 from PyQt6.QtWidgets import QDialog
 
@@ -44,25 +46,21 @@
         """
         Constructor
         
-        @param ui reference to the user interface object (UI.UserInterface)
+        @param ui reference to the user interface object
+        @type UI.UserInterface
         """
         super().__init__(ui)
         self.__ui = ui
-        self.__action = None
-    
-    def __initialize(self):
-        """
-        Private slot to (re)initialize the plug-in.
-        """
-        self.__act = None
+        self.__actions = []
     
     def activate(self):
         """
         Public method to activate this plug-in.
         
-        @return tuple of None and activation status (boolean)
+        @return tuple of None and activation status
+        @rtype tuple of (None, boolean)
         """
-        self.__initAction()
+        self.__initActions()
         self.__initMenu()
         
         return None, True
@@ -73,29 +71,66 @@
         """
         menu = self.__ui.getMenu("wizards")
         if menu:
-            menu.removeAction(self.__action)
-        self.__ui.removeEricActions([self.__action], 'wizards')
+            for act in self.__actions:
+                menu.removeAction(act)
+        self.__ui.removeEricActions(self.__actions, 'wizards')
     
-    def __initAction(self):
+    def __initActions(self):
         """
-        Private method to initialize the action.
+        Private method to initialize the actions.
         """
-        self.__action = EricAction(
+        # 1. action for 'setup.py' creation
+        act = EricAction(
             self.tr('setup.py Wizard'),
             self.tr('setup.py Wizard...'),
             0, 0, self,
             'wizards_setup_py')
-        self.__action.setStatusTip(self.tr('setup.py Wizard'))
-        self.__action.setWhatsThis(self.tr(
+        act.setStatusTip(self.tr('setup.py Wizard'))
+        act.setWhatsThis(self.tr(
             """<b>setup.py Wizard</b>"""
             """<p>This wizard opens a dialog for entering all the parameters"""
             """ needed to create the basic contents of a setup.py file. The"""
             """ generated code is inserted at the current cursor position."""
             """</p>"""
         ))
-        self.__action.triggered.connect(self.__handle)
+        act.triggered.connect(functools.partial(self.__handle, "setup.py"))
+        self.__actions.append(act)
         
-        self.__ui.addEricActions([self.__action], 'wizards')
+        # 2. action for 'setup.cfg' creation
+        act = EricAction(
+            self.tr('setup.cfg Wizard'),
+            self.tr('setup.cfg Wizard...'),
+            0, 0, self,
+            'wizards_setup_cfg')
+        act.setStatusTip(self.tr('setup.cfg Wizard'))
+        act.setWhatsThis(self.tr(
+            """<b>setup.cfg Wizard</b>"""
+            """<p>This wizard opens a dialog for entering all the parameters"""
+            """ needed to create the basic contents of a setup.cfg file. The"""
+            """ generated code is inserted at the current cursor position."""
+            """</p>"""
+        ))
+        act.triggered.connect(functools.partial(self.__handle, "setup.cfg"))
+        self.__actions.append(act)
+        
+        # 3. action for 'pyproject.toml' creation
+        act = EricAction(
+            self.tr('pyproject.toml Wizard'),
+            self.tr('pyproject.toml Wizard...'),
+            0, 0, self,
+            'wizards_pyproject_toml')
+        act.setStatusTip(self.tr('pyproject.toml Wizard'))
+        act.setWhatsThis(self.tr(
+            """<b>pyproject.toml Wizard</b>"""
+            """<p>This wizard opens a dialog for entering all the parameters"""
+            """ needed to create the basic contents of a pyproject.toml file. The"""
+            """ generated code is inserted at the current cursor position."""
+            """</p>"""
+        ))
+        act.triggered.connect(functools.partial(self.__handle, "pyproject.toml"))
+        self.__actions.append(act)
+        
+        self.__ui.addEricActions(self.__actions, 'wizards')
 
     def __initMenu(self):
         """
@@ -103,19 +138,23 @@
         """
         menu = self.__ui.getMenu("wizards")
         if menu:
-            menu.addAction(self.__action)
+            menu.addActions(self.__actions)
     
-    def __callForm(self, editor):
+    def __callForm(self, editor, category):
         """
         Private method to display a dialog and get the code.
         
         @param editor reference to the current editor
-        @return the generated code (string)
+        @type Editor
+        @param category category of setup file to create
+        @type str
+        @return tuple containing the generated code and a flag indicating an error
+        @rtype tuple of (str, bool)
         """
         from WizardPlugins.SetupWizard.SetupWizardDialog import (
             SetupWizardDialog
         )
-        dlg = SetupWizardDialog(None)
+        dlg = SetupWizardDialog(category, self.__ui)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             line, index = editor.getCursorPosition()
             indLevel = editor.indentation(line) // editor.indentationWidth()
@@ -125,11 +164,14 @@
                 indString = editor.indentationWidth() * ' '
             return (dlg.getCode(indLevel, indString), True)
         else:
-            return (None, False)
+            return ("", False)
         
-    def __handle(self):
+    def __handle(self, category):
         """
         Private method to handle the wizards action.
+        
+        @param category category of setup file to create
+        @type str
         """
         editor = ericApp().getObject("ViewManager").activeWindow()
         
@@ -139,12 +181,12 @@
                 self.tr('No current editor'),
                 self.tr('Please open or create a file first.'))
         else:
-            code, ok = self.__callForm(editor)
+            sourceCode, ok = self.__callForm(editor, category)
             if ok:
                 line, index = editor.getCursorPosition()
-                # It should be done on this way to allow undo
+                # It should be done this way to allow undo
                 editor.beginUndoAction()
-                editor.insertAt(code, line, index)
+                editor.insertAt(sourceCode, line, index)
                 editor.endUndoAction()
 
 #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,130 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the data for an entry point.
+"""
+
+import pathlib
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import QDialog, QDialogButtonBox
+
+from EricWidgets import EricFileDialog
+
+from .Ui_AddEntryPointDialog import Ui_AddEntryPointDialog
+
+import UI.PixmapCache
+
+
+class AddEntryPointDialog(QDialog, Ui_AddEntryPointDialog):
+    """
+    Class implementing a dialog to enter the data for an entry point.
+    """
+    def __init__(self, rootDirectory, epType="", name="", script="", parent=None):
+        """
+        Constructor
+        
+        @param rootDirectory root directory for selecting script modules via
+            a file selection dialog
+        @type str
+        @param epType type of the entry point (defaults to "")
+        @type str (optional)
+        @param name name of the entry point (defaults to "")
+        @type str (optional)
+        @param script script function of the entry point (defaults to "")
+        @type str (optional)
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        for typeStr, category in (
+            ("", ""),
+            (self.tr("Console"), "console_scripts"),
+            (self.tr("GUI"), "gui_scripts"),
+        ):
+            self.typeComboBox.addItem(typeStr, category)
+        
+        self.scriptButton.setIcon(UI.PixmapCache.getIcon("open"))
+        
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(False)
+        
+        self.__rootDirectory = rootDirectory
+        
+        self.typeComboBox.currentTextChanged.connect(self.__updateOK)
+        self.nameEdit.textChanged.connect(self.__updateOK)
+        self.scriptEdit.textChanged.connect(self.__updateOK)
+        
+        self.typeComboBox.setCurrentText(epType)
+        self.nameEdit.setText(name)
+        self.scriptEdit.setText(script)
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+    
+    @pyqtSlot()
+    def __updateOK(self):
+        """
+        Private slot to update the enabled state of the OK button.
+        """
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
+            bool(self.typeComboBox.currentText()) and
+            bool(self.nameEdit.text()) and
+            bool(self.scriptEdit.text())
+        )
+    
+    @pyqtSlot()
+    def on_scriptButton_clicked(self):
+        """
+        Private slot to select a script via a file selection dialog.
+        """
+        script = self.scriptEdit.text()
+        if script:
+            if ":" in script:
+                scriptFile, scriptFunction = script.rsplit(":", 1)
+            else:
+                scriptFile, scriptFunction = script, "main"
+            scriptFile = scriptFile.replace(".", "/") + ".py"
+            root = str(pathlib.Path(self.__rootDirectory) / scriptFile)
+        else:
+            root = self.__rootDirectory
+            scriptFunction = "main"
+        
+        script = EricFileDialog.getOpenFileName(
+            self,
+            self.tr("Select Script File"),
+            root,
+            self.tr("Python Files (*.py);;All Files (*)")
+        )
+        
+        if script:
+            scriptPath = pathlib.Path(script)
+            try:
+                relativeScriptPath = scriptPath.relative_to(self.__rootDirectory)
+            except ValueError:
+                relativeScriptPath = scriptPath
+            self.scriptEdit.setText("{0}:{1}".format(
+                str(relativeScriptPath.with_suffix(""))
+                .replace("/", ".")
+                .replace("\\", "."),
+                scriptFunction
+            ))
+    
+    def getEntryPoint(self):
+        """
+        Public method to get the data for the entry point.
+        
+        @return tuple containing the entry point type, category, name and
+            script function
+        @rtype tuple of (str, str, str)
+        """
+        return (
+            self.typeComboBox.currentText(),
+            self.typeComboBox.currentData(),
+            self.nameEdit.text(),
+            self.scriptEdit.text(),
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AddEntryPointDialog</class>
+ <widget class="QDialog" name="AddEntryPointDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>214</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Add Entry Point</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label_3">
+     <property name="text">
+      <string>Script Type:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QComboBox" name="typeComboBox">
+     <property name="toolTip">
+      <string>Select the script type</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="nameEdit">
+     <property name="toolTip">
+      <string>Enter a name for the entry point</string>
+     </property>
+     <property name="clearButtonEnabled">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Script Function:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLineEdit" name="scriptEdit">
+       <property name="toolTip">
+        <string>Enter the script and function</string>
+       </property>
+       <property name="clearButtonEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="scriptButton">
+       <property name="toolTip">
+        <string>Press to select the script via a file selection dialog</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>typeComboBox</tabstop>
+  <tabstop>nameEdit</tabstop>
+  <tabstop>scriptEdit</tabstop>
+  <tabstop>scriptButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AddEntryPointDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AddEntryPointDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.py	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the data for a project URL.
+"""
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import QDialog, QDialogButtonBox
+
+from .Ui_AddProjectUrlDialog import Ui_AddProjectUrlDialog
+
+
+class AddProjectUrlDialog(QDialog, Ui_AddProjectUrlDialog):
+    """
+    Class implementing a dialog to enter the data for a project URL.
+    """
+    def __init__(self, name="", url="", parent=None):
+        """
+        Constructor
+        
+        @param name name of the project URL (defaults to "")
+        @type str (optional)
+        @param url address of the project URL (defaults to "")
+        @type str (optional)
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(False)
+        
+        self.nameComboBox.lineEdit().setClearButtonEnabled(True)
+        self.nameComboBox.addItems([
+            "",
+            "Bug Tracker",
+            "Change Log",
+            "Documentation",
+            "Donation",
+            "Download",
+            "Funding",
+            "Homepage",
+            "Issues Tracker",
+            "News",
+            "Release Notes",
+        ])
+        
+        self.nameComboBox.editTextChanged.connect(self.__updateOK)
+        self.urlEdit.textChanged.connect(self.__updateOK)
+        
+        self.nameComboBox.setEditText(name)
+        self.urlEdit.setText(url)
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+    
+    @pyqtSlot()
+    def __updateOK(self):
+        """
+        Private slot to update the enabled state of the OK button.
+        """
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
+            bool(self.nameComboBox.currentText()) and bool(self.urlEdit.text())
+        )
+    
+    def getUrl(self):
+        """
+        Public method to get the data for the project URL.
+        
+        @return tuple containing the name and address of the project URL
+        @rtype tuple of (str, str)
+        """
+        return (
+            self.nameComboBox.currentText(),
+            self.urlEdit.text(),
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AddProjectUrlDialog</class>
+ <widget class="QDialog" name="AddProjectUrlDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>156</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Add Project URL</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QComboBox" name="nameComboBox">
+     <property name="toolTip">
+      <string>Enter a name for the URL</string>
+     </property>
+     <property name="editable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>URL:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="urlEdit">
+     <property name="toolTip">
+      <string>Enter the URL</string>
+     </property>
+     <property name="clearButtonEnabled">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>nameComboBox</tabstop>
+  <tabstop>urlEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AddProjectUrlDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AddProjectUrlDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/SetupCfgUtilities.py	Sat Jul 02 18:53:56 2022 +0200
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing some utility functions for setup.cfg creation.
+"""
+
+#
+# http://setuptools.readthedocs.io/en/latest/setuptools.html#specifying-values
+#
+# str - simple string
+# list-comma - dangling list or string of comma-separated values
+# list-semi - dangling list or string of semicolon-separated values
+# bool - True is 1, yes, true
+# dict - list-comma where keys are separated from values by =
+#
+
+def _bool2string(value):
+    """
+    Function to convert a bool value to a setup.cfg string.
+    
+    @param value bool value to be converted
+    @type bool
+    @return setup.cfg string
+    @rtype str
+    """
+    return "True" if value else "False"
+
+
+def _list2string(value):
+    """
+    Function to convert a list value to a setup.cfg string.
+    
+    @param value list value to be converted
+    @type list
+    @return setup.cfg string
+    @rtype str
+    """
+    if value:
+        return "\n{0}".format("\n".join(sorted(filter(None, value))))
+
+
+def _dict2list(value):
+    """
+    Function to convert a dict value to a setup.cfg list string.
+    
+    @param value dict value to be converted
+    @type dict
+    @yield setup.cfg string
+    @ytype str
+    """
+    for k, v in value.items():
+        yield "{0} = {1}".format(k, v)
+
+
+def _dict2string(value):
+    """
+    Function to convert a dict value to a setup.cfg string.
+    
+    @param value dict value to be converted
+    @type dict
+    @return setup.cfg string
+    @rtype str
+    """
+    return _list2string(list(_dict2list(value)))
+
+def toString(value):
+    """
+    Function to convert a value to a setup.cfg string
+    
+    @param value value to be converted
+    @type bool, list, set, tuple or dict
+    @return setup.cfg string
+    @rtype str
+    """
+    if isinstance(value, bool):
+        return _bool2string(value)
+    if isinstance(value, (list, set, tuple)):
+        return _list2string(value)
+    if isinstance(value, dict):
+        return _dict2string(value)
+    return str(value).rstrip()
--- a/eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py	Sat Jul 02 18:53:56 2022 +0200
@@ -7,8 +7,13 @@
 Module implementing the setup.py wizard dialog.
 """
 
+import configparser
+import datetime
+import io
 import os
-import datetime
+import pathlib
+
+import tomlkit
 
 import trove_classifiers
 
@@ -21,6 +26,8 @@
 from EricWidgets import EricFileDialog
 from EricWidgets.EricPathPicker import EricPathPickerModes
 
+from .AddEntryPointDialog import AddEntryPointDialog
+from .AddProjectUrlDialog import AddProjectUrlDialog
 from .Ui_SetupWizardDialog import Ui_SetupWizardDialog
 
 import Utilities
@@ -34,17 +41,29 @@
     It displays a dialog for entering the parameters for the setup.py code
     generator.
     """
-    def __init__(self, parent=None):
+    def __init__(self, category, parent=None):
         """
         Constructor
         
-        @param parent reference to the parent widget
-        @type QWidget
+        @param category category of setup file to create
+        @type str
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        @exception ValueError raised for an illegal setup file category
         """
+        if category not in ("setup.py", "setup.cfg", "pyproject.toml"):
+            raise ValueError("illegal setup file category given")
+        
         super().__init__(parent)
         self.setupUi(self)
         
         self.__replies = []
+        self.__category = category
+        
+        if category != "setup.py":
+            self.introCheckBox.setVisible(False)
+            self.importCheckBox.setVisible(False)
+            self.metaDataCheckBox.setVisible(False)
         
         self.dataTabWidget.setCurrentIndex(0)
         
@@ -71,6 +90,18 @@
         projectOpen = ericApp().getObject("Project").isOpen()
         self.projectButton.setEnabled(projectOpen)
         
+        self.projectUrlsList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
+        self.entryPointsList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
+        
+        self.descriptionContentTypeComboBox.addItem("", "")
+        for contentType, mimetype in sorted([
+            (self.tr("Plain Text"), "text/plain"),
+            (self.tr("Markdown"), "text/markdown"),
+            (self.tr("reStructuredText"), "text/x-rst")
+            
+        ]):
+            self.descriptionContentTypeComboBox.addItem(contentType, mimetype)
+        
         self.homePageUrlEdit.textChanged.connect(self.__enableOkButton)
         self.nameEdit.textChanged.connect(self.__enableOkButton)
         self.versionEdit.textChanged.connect(self.__enableOkButton)
@@ -168,9 +199,9 @@
                 lic = lic.rsplit("(", 1)[1].split(")", 1)[0]
             return lic
     
-    def getCode(self, indLevel, indString):
+    def __getSetupPyCode(self, indLevel, indString):
         """
-        Public method to get the source code.
+        Private method to get the source code for a 'setup.py' file.
         
         @param indLevel indentation level
         @type int
@@ -229,14 +260,15 @@
         if self.descriptionFromFilesCheckBox.isChecked():
             sourceCode += 'def get_long_description():{0}'.format(os.linesep)
             sourceCode += '{0}descr = []{1}'.format(istring, os.linesep)
-            sourceCode += '{0}for fname in "{1}":{2}'.format(
+            sourceCode += '{0}for fname in ("{1})":{2}'.format(
                 istring,
                 '", "'.join(self.descriptionEdit.toPlainText().splitlines()),
                 os.linesep)
-            sourceCode += '{0}{0}with open(fname) as f:{1}'.format(
-                istring, os.linesep)
-            sourceCode += '{0}{0}{0}descr.append(f.read()){1}'.format(
-                istring, os.linesep)
+            sourceCode += (
+                '{0}with open(fname, "r", encoding="utf-8") as f:{1}'
+            ).format(i1string, os.linesep)
+            sourceCode += '{0}descr.append(f.read()){1}'.format(
+                i2string, os.linesep)
             sourceCode += '{0}return "\\n\\n".join(descr){1}'.format(
                 istring, os.linesep)
             sourceCode += "{0}{0}".format(os.linesep)
@@ -258,6 +290,10 @@
             sourceCode += '{0}long_description="""{1}""",{2}'.format(
                 istring, self.descriptionEdit.toPlainText(), os.linesep)
         
+        if self.descriptionContentTypeComboBox.currentData():
+            sourceCode += '{0}long_description_content_type="{1}",{2}'.format(
+                istring, self.descriptionContentTypeComboBox.currentData(), os.linesep)
+        
         if self.authorEdit.text():
             sourceCode += '{0}author="{1}",{2}'.format(
                 istring, self.authorEdit.text(), os.linesep)
@@ -272,6 +308,17 @@
         
         sourceCode += '{0}url="{1}",{2}'.format(
             istring, self.homePageUrlEdit.text(), os.linesep)
+        if self.downloadUrlEdit.text():
+            sourceCode += '{0}download_url="{1}",{2}'.format(
+                istring, self.downloadUrlEdit.text(), os.linesep)
+        
+        if self.projectUrlsList.topLevelItemCount():
+            sourceCode += '{0}project_urls={{{1}'.format(istring, os.linesep)
+            for row in range(self.projectUrlsList.topLevelItemCount()):
+                urlItem = self.projectUrlsList.topLevelItem(row)
+                sourceCode += '{0}"{1}": "{2}",{3}'.format(
+                    i1string, urlItem.text(0), urlItem.text(1), os.linesep)
+            sourceCode += '{0}}},{1}'.format(istring, os.linesep)
         
         classifiers = []
         if not self.licenseClassifierCheckBox.isChecked():
@@ -292,9 +339,7 @@
             sourceCode += '{0}],{1}'.format(istring, os.linesep)
         
         if self.developmentStatusComboBox.currentIndex() != 0:
-            classifiers.append(
-                self.developmentStatusComboBox.itemData(
-                    self.developmentStatusComboBox.currentIndex()))
+            classifiers.append(self.developmentStatusComboBox.currentData())
         
         itm = self.classifiersList.topLevelItem(0)
         while itm:
@@ -318,6 +363,10 @@
             sourceCode += '{0}keywords="{1}",{2}'.format(
                 istring, self.keywordsEdit.text(), os.linesep)
         
+        if self.pyVersionEdit.text():
+            sourceCode += '{0}python_requires="{1}",{2}'.format(
+                istring, self.pyVersionEdit.text(), os.linesep)
+        
         sourceCode += '{0}packages=find_packages('.format(istring)
         src = Utilities.fromNativeSeparators(
             self.sourceDirectoryPicker.text())
@@ -357,21 +406,376 @@
             sourceCode += '{0}],{1}'.format(istring, os.linesep)
         del modules
         
-        scripts = []
-        for row in range(self.scriptsList.count()):
-            scripts.append(self.scriptsList.item(row).text())
-        if scripts:
-            sourceCode += '{0}scripts=[{1}'.format(istring, os.linesep)
-            sourceCode += '{0}"{1}"{2}'.format(
-                i1string,
-                '",{0}{1}"'.format(os.linesep, i1string).join(scripts),
-                os.linesep)
-            sourceCode += '{0}],{1}'.format(istring, os.linesep)
-        del scripts
+        if self.entryPointsList.topLevelItemCount():
+            entryPoints = {
+                "console_scripts": [],
+                "gui_scripts": [],
+            }
+            for row in range(self.entryPointsList.topLevelItemCount()):
+                itm = self.entryPointsList.topLevelItem(row)
+                entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)].append(
+                    "{0} = {1}".format(itm.text(1), itm.text(2))
+                )
+            sourceCode += '{0}entry_points={{{1}'.format(istring, os.linesep)
+            for epCategory in entryPoints:
+                if entryPoints[epCategory]:
+                    sourceCode += '{0}"{1}": [{2}'.format(
+                        i1string, epCategory, os.linesep)
+                    for entryPoint in entryPoints[epCategory]:
+                        sourceCode += '{0}"{1}",{2}'.format(
+                            i2string, entryPoint, os.linesep)
+                    sourceCode += '{0}],{1}'.format(i1string, os.linesep)
+            sourceCode += '{0}}},{1}'.format(istring, os.linesep)
         
         sourceCode += "){0}".format(estring)
         return sourceCode
     
+    def __getSetupCfgCode(self):
+        """
+        Private method to get the source code for a 'setup.cfg' file.
+        
+        @return generated code
+        @rtype str
+        """
+        from . import SetupCfgUtilities
+        metadata = {
+            "name": self.nameEdit.text(),
+            "version": self.versionEdit.text(),
+        }
+        
+        if self.summaryEdit.text():
+            metadata["description"] = self.summaryEdit.text()
+        
+        if self.descriptionEdit.toPlainText():
+            metadata["long_description"] = (
+                "file: {0}".format(
+                    ", ".join(self.descriptionEdit.toPlainText().splitlines())
+                )
+                if self.descriptionFromFilesCheckBox.isChecked() else
+                self.descriptionEdit.toPlainText()
+            )
+        
+        if self.descriptionContentTypeComboBox.currentData():
+            metadata["long_description_content_type"] = (
+                self.descriptionContentTypeComboBox.currentData()
+            )
+        
+        if self.authorEdit.text():
+            metadata["author"] = self.authorEdit.text()
+            metadata["author_email"] = self.authorEmailEdit.text()
+        
+        if self.maintainerEdit.text():
+            metadata["maintainer"] = self.maintainerEdit.text()
+            metadata["maintainer_email"] = self.maintainerEmailEdit.text()
+        
+        metadata["url"] = self.homePageUrlEdit.text()
+        if self.downloadUrlEdit.text():
+            metadata["download_url"] = self.downloadUrlEdit.text()
+        
+        if self.projectUrlsList.topLevelItemCount():
+            projectURLs = {}
+            for row in range(self.projectUrlsList.topLevelItemCount()):
+                urlItem = self.projectUrlsList.topLevelItem(row)
+                projectURLs[urlItem.text(0)] = urlItem.text(1)
+            metadata["project_urls"] = SetupCfgUtilities.toString(projectURLs)
+        
+        classifiers = []
+        if not self.licenseClassifierCheckBox.isChecked():
+            metadata["license"] = self.licenseEdit.text()
+        else:
+            classifiers.append(
+                self.licenseClassifierComboBox.itemData(
+                    self.licenseClassifierComboBox.currentIndex()))
+        
+        platforms = self.platformsEdit.toPlainText().splitlines()
+        if platforms:
+            metadata["platforms"] = SetupCfgUtilities.toString(platforms)
+        
+        if self.developmentStatusComboBox.currentIndex() != 0:
+            classifiers.append(self.developmentStatusComboBox.currentData())
+        
+        itm = self.classifiersList.topLevelItem(0)
+        while itm:
+            itm.setExpanded(True)
+            if itm.checkState(0) == Qt.CheckState.Checked:
+                classifiers.append(itm.data(0, Qt.ItemDataRole.UserRole))
+            itm = self.classifiersList.itemBelow(itm)
+        
+        # cleanup classifiers list - remove all invalid entries
+        classifiers = [c for c in classifiers if bool(c)]
+        if classifiers:
+            metadata["classifiers"] = SetupCfgUtilities.toString(classifiers)
+        
+        if self.keywordsEdit.text():
+            metadata["keywords"] = SetupCfgUtilities.toString(
+                self.keywordsEdit.text().split())
+        
+        options = {
+            "packages": "find:"
+        }
+        
+        if self.pyVersionEdit.text():
+            options["python_requires"] = self.pyVersionEdit.text()
+        
+        findOptions = {}
+        src = Utilities.fromNativeSeparators(self.sourceDirectoryPicker.text())
+        excludePatterns = []
+        for row in range(self.excludePatternList.count()):
+            excludePatterns.append(
+                self.excludePatternList.item(row).text())
+        if src:
+            options["package_dir"] = SetupCfgUtilities.toString({"": src})
+            findOptions["where"] = src
+        if excludePatterns:
+            findOptions["exclude"] = SetupCfgUtilities.toString(excludePatterns)
+        
+        if self.includePackageDataCheckBox.isChecked():
+            options["include_package_data"] = SetupCfgUtilities.toString(True)
+            packageData = {}    # placeholder section
+        else:
+            packageData = None
+        
+        modules = []
+        for row in range(self.modulesList.count()):
+            modules.append(self.modulesList.item(row).text())
+        if modules:
+            options["py_modules"] = SetupCfgUtilities.toString(modules)
+        
+        if self.entryPointsList.topLevelItemCount():
+            entryPoints = {
+                "console_scripts": {},
+                "gui_scripts": {},
+            }
+            for row in range(self.entryPointsList.topLevelItemCount()):
+                itm = self.entryPointsList.topLevelItem(row)
+                entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)][
+                    itm.text(1)] = itm.text(2)
+            for epType in list(entryPoints.keys()):
+                if entryPoints[epType]:
+                    entryPoints[epType] = SetupCfgUtilities.toString(
+                        entryPoints[epType])
+                else:
+                    del entryPoints[epType]
+        else:
+            entryPoints = {}
+        
+        configDict = {
+            "metadata": metadata,
+            "options": options,
+            "options.packages.find": findOptions,
+        }
+        if packageData is not None:
+            configDict["options.package_data"] = packageData
+        if entryPoints:
+            configDict["options.entry_points"] = entryPoints
+        
+        cparser = configparser.ConfigParser()
+        cparser.read_dict(configDict)
+        sio = io.StringIO()
+        cparser.write(sio)
+        sourceCode = sio.getvalue()
+        return sourceCode
+    
+    def __getPyprojectCode(self):
+        """
+        Private method to get the source code for a 'pyproject.toml' file.
+        
+        @return generated code
+        @rtype str
+        """
+        doc = tomlkit.document()
+        
+        buildSystem = tomlkit.table()
+        buildSystem["requires"] = ["setuptools>=61.0.0", "wheel"]
+        buildSystem["build-backend"] = "setuptools.build_meta"
+        doc["build-system"] = buildSystem
+        
+        project = tomlkit.table()
+        project["name"] = self.nameEdit.text()
+        project["version"] = self.versionEdit.text()
+        
+        if self.summaryEdit.text():
+            project["description"] = self.summaryEdit.text()
+        
+        if self.descriptionEdit.toPlainText():
+            if self.descriptionFromFilesCheckBox.isChecked():
+                project["readme"] = self.descriptionEdit.toPlainText().splitlines()[0]
+            else:
+                readme = tomlkit.table()
+                readme["text"] = self.descriptionEdit.toPlainText()
+                readme["content-type"] = (
+                    self.descriptionContentTypeComboBox.currentData()
+                )
+                project["readme"] = readme
+        
+        if self.authorEdit.text():
+            authors = tomlkit.array()
+            author = tomlkit.inline_table()
+            author["name"] = self.authorEdit.text()
+            author["email"] = self.authorEmailEdit.text()
+            authors.append(author)
+            project["authors"] = authors
+        
+        if self.maintainerEdit.text():
+            maintainers = tomlkit.array()
+            maintainer = tomlkit.inline_table()
+            maintainer["name"] = self.maintainerEdit.text()
+            maintainer["email"] = self.maintainerEmailEdit.text()
+            maintainers.append(maintainer)
+            project["maintainers"] = maintainers
+        
+        urls = tomlkit.table()
+        urls["Homepage"] = self.homePageUrlEdit.text()
+        if self.downloadUrlEdit.text():
+            urls["Download"] = self.downloadUrlEdit.text()
+        
+        if self.projectUrlsList.topLevelItemCount():
+            for row in range(self.projectUrlsList.topLevelItemCount()):
+                urlItem = self.projectUrlsList.topLevelItem(row)
+                urls[urlItem.text(0)] = urlItem.text(1)
+        project["urls"] = urls
+        
+        classifiers = []
+        if not self.licenseClassifierCheckBox.isChecked():
+            license = tomlkit.table()
+            license["text"] =  self.licenseEdit.text()
+            project["license"] = license
+        else:
+            classifiers.append(
+                self.licenseClassifierComboBox.itemData(
+                    self.licenseClassifierComboBox.currentIndex()))
+        
+        if self.developmentStatusComboBox.currentIndex() != 0:
+            classifiers.append(self.developmentStatusComboBox.currentData())
+        
+        itm = self.classifiersList.topLevelItem(0)
+        while itm:
+            itm.setExpanded(True)
+            if itm.checkState(0) == Qt.CheckState.Checked:
+                classifiers.append(itm.data(0, Qt.ItemDataRole.UserRole))
+            itm = self.classifiersList.itemBelow(itm)
+        
+        # cleanup classifiers list - remove all invalid entries
+        classifiers = [c for c in classifiers if bool(c)]
+        if classifiers:
+            classifiersArray = tomlkit.array()
+            for classifier in classifiers:
+                classifiersArray.add_line(classifier)
+            classifiersArray.append(tomlkit.nl())
+            project["classifiers"] = classifiersArray
+        
+        if self.keywordsEdit.text():
+            keywords = tomlkit.array()
+            for kw in self.keywordsEdit.text().split():
+                keywords.add_line(kw)
+            keywords.append(tomlkit.nl())
+            project["keywords"] = keywords
+        
+        if self.pyVersionEdit.text():
+            project["requires-python"] = self.pyVersionEdit.text()
+        
+        if self.entryPointsList.topLevelItemCount():
+            entryPoints = {
+                "console_scripts": {},
+                "gui_scripts": {},
+            }
+            for row in range(self.entryPointsList.topLevelItemCount()):
+                itm = self.entryPointsList.topLevelItem(row)
+                entryPoints[itm.data(0, Qt.ItemDataRole.UserRole)][
+                    itm.text(1)] = itm.text(2)
+            
+            if entryPoints["console_scripts"]:
+                scripts = tomlkit.table()
+                for name, function in entryPoints["console_scripts"].items():
+                    scripts[name] = function
+                project["scripts"] = scripts
+            
+            if entryPoints["gui_scripts"]:
+                guiScripts = tomlkit.table()
+                for name, function in entryPoints["gui_scripts"].items():
+                    guiScripts[name] = function
+                project["gui-scripts"] = guiScripts
+        
+        # placeholder
+        dependencies = tomlkit.array()
+        dependencies.append(tomlkit.comment(
+            "TODO: enter project dependencies "                 # __NO-TASK__
+        ))
+        project["dependencies"] = dependencies
+        
+        doc["project"] = project
+        
+        setuptools = tomlkit.table()
+        
+        platforms = self.platformsEdit.toPlainText().splitlines()
+        if platforms:
+            platformsArray = tomlkit.array()
+            for plt in platforms:
+                platformsArray.add_line(plt)
+            platformsArray.append(tomlkit.nl())
+            setuptools["platforms"] = platformsArray
+        
+        setuptools["include-package-data"] = self.includePackageDataCheckBox.isChecked()
+        if self.includePackageDataCheckBox.isChecked():
+            # placeholder
+            setuptools["package-data"] = tomlkit.table()
+            setuptools["package-data"].add(tomlkit.comment(
+                "TODO: enter package data patterns"             # __NO-TASK__
+            ))
+        
+        if self.modulesList.count():
+            modulesArray = tomlkit.array()
+            for row in range(self.modulesList.count()):
+                modulesArray.add_line(self.modulesList.item(row).text())
+            modulesArray.append(tomlkit.nl())
+            setuptools["py-modules"] = modulesArray
+        
+        findspec = tomlkit.table()
+        src = Utilities.fromNativeSeparators(self.sourceDirectoryPicker.text())
+        excludePatterns = []
+        for row in range(self.excludePatternList.count()):
+            excludePatterns.append(
+                self.excludePatternList.item(row).text())
+        if src:
+            findspec["where"] = [ericApp().getObject("Project").getRelativePath(src)]
+        if excludePatterns:
+            excludePatternsArray = tomlkit.array()
+            for pattern in excludePatterns:
+                excludePatternsArray.add_line(pattern)
+            excludePatternsArray.append(tomlkit.nl())
+            findspec["exclude"] = excludePatternsArray
+        
+        if bool(findspec):
+            setuptools["packages"] = tomlkit.table(is_super_table=True)
+            setuptools["packages"]["find"] = findspec
+        
+        doc["tool"] = tomlkit.table(is_super_table=True)
+        doc["tool"]["setuptools"] = setuptools
+        
+        sourceCode = tomlkit.dumps(doc)
+        return sourceCode
+    
+    def getCode(self, indLevel, indString):
+        """
+        Public method to get the source code.
+        
+        @param indLevel indentation level
+        @type int
+        @param indString string used for indentation (space or tab)
+        @type str
+        @return generated code
+        @rtype str
+        """
+        if self.__category == "setup.py":
+            return self.__getSetupPyCode(indLevel, indString)
+        elif self.__category == "setup.cfg":
+            return self.__getSetupCfgCode()
+        elif self.__category == "pyproject.toml":
+            return self.__getPyprojectCode()
+        else:
+            # should not happen, but play it safe
+            return ""
+    
     @pyqtSlot()
     def on_projectButton_clicked(self):
         """
@@ -415,43 +819,62 @@
                 Utilities.getHomeDir())
     
     @pyqtSlot()
-    def on_scriptsList_itemSelectionChanged(self):
+    def on_entryPointsList_itemSelectionChanged(self):
         """
         Private slot to handle a change of selected items of the
-        scripts list.
+        entry points list.
         """
-        self.deleteScriptButton.setEnabled(
-            len(self.scriptsList.selectedItems()) > 0)
+        self.deleteEntryPointButton.setEnabled(
+            bool(self.entryPointsList.selectedItems()))
+        self.editEntryPointButton.setEnabled(
+            len(self.entryPointsList.selectedItems()) == 1)
     
     @pyqtSlot()
-    def on_deleteScriptButton_clicked(self):
-        """
-        Private slot to delete the selected script items.
+    def on_deleteEntryPointButton_clicked(self):
         """
-        for itm in self.scriptsList.selectedItems():
-            self.scriptsList.takeItem(
-                self.scriptsList.row(itm))
+        Private slot to delete the selected entry point items.
+        """
+        for itm in self.entryPointsList.selectedItems():
+            self.entryPointsList.takeTopLevelItem(self.entryPointsList.row(itm))
             del itm
     
     @pyqtSlot()
-    def on_addScriptButton_clicked(self):
+    def on_addEntryPointButton_clicked(self):
         """
-        Private slot to add scripts to the list.
+        Private slot to add an entry point to the list.
         """
-        startDir = self.packageRootPicker.text() or self.__getStartDir()
-        scriptsList = EricFileDialog.getOpenFileNames(
-            self,
-            self.tr("Add Scripts"),
-            startDir,
-            self.tr("Python Files (*.py);;All Files(*)"))
-        for script in scriptsList:
-            script = script.replace(
-                Utilities.toNativeSeparators(startDir), "")
-            if script.startswith(("\\", "/")):
-                script = script[1:]
-            if script:
-                QListWidgetItem(Utilities.fromNativeSeparators(script),
-                                self.scriptsList)
+        project = ericApp().getObject("Project")
+        rootDir = (
+            project.getProjectPath()
+            if project.isOpen() else
+            ""
+        )
+        dlg = AddEntryPointDialog(rootDir, parent=self)
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            epType, epCategory, name, script = dlg.getEntryPoint()
+            itm = QTreeWidgetItem(self.entryPointsList, [epType, name, script])
+            itm.setData(0, Qt.ItemDataRole.UserRole, epCategory)
+    
+    @pyqtSlot()
+    def on_editEntryPointButton_clicked(self):
+        """
+        Private slot to edit the selected entry point.
+        """
+        project = ericApp().getObject("Project")
+        rootDir = (
+            project.getProjectPath()
+            if project.isOpen() else
+            ""
+        )
+        itm = self.entryPointsList.selectedItems()[0]
+        dlg = AddEntryPointDialog(rootDir, epType=itm.text(0), name=itm.text(1),
+                                  script=itm.text(2), parent=self)
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            epType, epCategory, name, script = dlg.getEntryPoint()
+            itm.setText(0, epType)
+            itm.setText(1, name)
+            itm.setText(2, script)
+            itm.setData(0, Qt.ItemDataRole.UserRole, epCategory)
     
     @pyqtSlot()
     def on_modulesList_itemSelectionChanged(self):
@@ -460,16 +883,15 @@
         modules list.
         """
         self.deleteModuleButton.setEnabled(
-            len(self.modulesList.selectedItems()) > 0)
+            bool(self.modulesList.selectedItems()))
     
     @pyqtSlot()
     def on_deleteModuleButton_clicked(self):
         """
-        Private slot to delete the selected script items.
+        Private slot to delete the selected module items.
         """
         for itm in self.modulesList.selectedItems():
-            self.modulesList.takeItem(
-                self.modulesList.row(itm))
+            self.modulesList.takeItem(self.modulesList.row(itm))
             del itm
     
     @pyqtSlot()
@@ -489,9 +911,12 @@
             if module.startswith(("\\", "/")):
                 module = module[1:]
             if module:
-                QListWidgetItem(os.path.splitext(module)[0]
-                                .replace("\\", ".").replace("/", "."),
-                                self.modulesList)
+                QListWidgetItem(
+                    str(pathlib.Path(module).with_suffix(""))
+                    .replace("\\", ".")
+                    .replace("/", "."),
+                    self.modulesList
+                )
     
     @pyqtSlot()
     def on_excludePatternList_itemSelectionChanged(self):
@@ -500,7 +925,7 @@
         exclude pattern list.
         """
         self.deleteExcludePatternButton.setEnabled(
-            len(self.excludePatternList.selectedItems()) > 0)
+            bool(self.excludePatternList.selectedItems()))
     
     @pyqtSlot()
     def on_deleteExcludePatternButton_clicked(self):
@@ -543,3 +968,43 @@
         exclude pattern edit.
         """
         self.on_addExludePatternButton_clicked()
+    
+    @pyqtSlot()
+    def on_urlDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected URL items.
+        """
+        for itm in self.projectUrlsList.selectedItems():
+            self.projectUrlsList.takeTopLevelItem(self.projectUrlsList.row(itm))
+            del itm
+    
+    @pyqtSlot()
+    def on_urlAddButton_clicked(self):
+        """
+        Private slot to add a project URL to the list.
+        """
+        dlg = AddProjectUrlDialog(parent=self)
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            name, url = dlg.getUrl()
+            QTreeWidgetItem(self.projectUrlsList, [name, url])
+    
+    @pyqtSlot()
+    def on_urlEditButton_clicked(self):
+        """
+        Private slot to edit the selected project URL.
+        """
+        itm = self.projectUrlsList.selectedItems()[0]
+        dlg = AddProjectUrlDialog(name=itm.text(0), url=itm.text(1), parent=self)
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            name, url = dlg.getUrl()
+            itm.setText(0, name)
+            itm.setText(1, url)
+    
+    @pyqtSlot()
+    def on_projectUrlsList_itemSelectionChanged(self):
+        """
+        Private slot to handle a change of selected items of the
+        project URLs list.
+        """
+        self.urlDeleteButton.setEnabled(bool(self.projectUrlsList.selectedItems()))
+        self.urlEditButton.setEnabled(len(self.projectUrlsList.selectedItems()) == 1)
--- a/eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui	Sat Jul 02 18:53:56 2022 +0200
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>700</width>
+    <width>750</width>
     <height>550</height>
    </rect>
   </property>
@@ -55,19 +55,6 @@
        </property>
       </widget>
      </item>
-     <item>
-      <spacer name="horizontalSpacer_6">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
     </layout>
    </item>
    <item>
@@ -100,7 +87,7 @@
    <item>
     <widget class="QTabWidget" name="dataTabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>8</number>
      </property>
      <widget class="QWidget" name="basicTab">
       <attribute name="title">
@@ -114,7 +101,7 @@
          </property>
         </widget>
        </item>
-       <item row="0" column="1">
+       <item row="0" column="2">
         <widget class="QLineEdit" name="nameEdit">
          <property name="toolTip">
           <string>Enter the package name</string>
@@ -134,7 +121,7 @@
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
+       <item row="1" column="2">
         <widget class="QLineEdit" name="versionEdit">
          <property name="toolTip">
           <string>Enter the version number in the form 'major.minor[.patch[.sub]]'</string>
@@ -154,7 +141,7 @@
          </property>
         </widget>
        </item>
-       <item row="2" column="1">
+       <item row="2" column="2">
         <widget class="QLineEdit" name="authorEdit">
          <property name="toolTip">
           <string>Enter the author's name</string>
@@ -174,7 +161,7 @@
          </property>
         </widget>
        </item>
-       <item row="3" column="1">
+       <item row="3" column="2">
         <widget class="QLineEdit" name="authorEmailEdit">
          <property name="toolTip">
           <string>Enter the author's email address</string>
@@ -197,7 +184,7 @@
          </property>
         </widget>
        </item>
-       <item row="4" column="1">
+       <item row="4" column="2">
         <widget class="QLineEdit" name="maintainerEdit">
          <property name="toolTip">
           <string>Enter the maintainer's name</string>
@@ -217,7 +204,7 @@
          </property>
         </widget>
        </item>
-       <item row="5" column="1">
+       <item row="5" column="2">
         <widget class="QLineEdit" name="maintainerEmailEdit">
          <property name="toolTip">
           <string>Enter the maintainer's email address</string>
@@ -230,7 +217,24 @@
          </property>
         </widget>
        </item>
-       <item row="6" column="1">
+       <item row="6" column="0" colspan="2">
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>Python Version:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="2">
+        <widget class="QLineEdit" name="pyVersionEdit">
+         <property name="toolTip">
+          <string>Enter the Python version specifier</string>
+         </property>
+         <property name="maxLength">
+          <number>200</number>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="1" colspan="2">
         <spacer name="verticalSpacer">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
@@ -267,41 +271,61 @@
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QLabel" name="label_8">
-         <property name="text">
-          <string>Description:</string>
+       <item row="1" column="0" colspan="2">
+        <widget class="QGroupBox" name="groupBox">
+         <property name="title">
+          <string>Description</string>
          </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_6">
+          <item>
+           <widget class="EricSpellCheckedPlainTextEdit" name="descriptionEdit">
+            <property name="toolTip">
+             <string>Enter the description of the package or files (one per line) to get it from.</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="descriptionFromFilesCheckBox">
+            <property name="toolTip">
+             <string>Select to get the description from files</string>
+            </property>
+            <property name="text">
+             <string>Get description from files</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_5">
+            <item>
+             <widget class="QLabel" name="label_19">
+              <property name="text">
+               <string>Content Type:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QComboBox" name="descriptionContentTypeComboBox">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
         </widget>
        </item>
-       <item row="1" column="1">
-        <widget class="EricSpellCheckedPlainTextEdit" name="descriptionEdit">
-         <property name="toolTip">
-          <string>Enter the description of the package or files (one per line) to get it from.</string>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="1">
-        <widget class="QCheckBox" name="descriptionFromFilesCheckBox">
-         <property name="toolTip">
-          <string>Select to get the description from files</string>
-         </property>
-         <property name="text">
-          <string>Get description from files</string>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="0">
+       <item row="2" column="0">
         <widget class="QLabel" name="label_16">
          <property name="text">
           <string>Keywords:</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="1">
+       <item row="2" column="1">
         <widget class="QLineEdit" name="keywordsEdit">
          <property name="toolTip">
           <string>Enter the keywords separated by comma</string>
@@ -322,19 +346,6 @@
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
-        <spacer name="verticalSpacer_2">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>339</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
        <item row="0" column="1">
         <widget class="QLineEdit" name="homePageUrlEdit">
          <property name="toolTip">
@@ -345,6 +356,112 @@
          </property>
         </widget>
        </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>Download URL:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QLineEdit" name="downloadUrlEdit">
+         <property name="toolTip">
+          <string>Enter the download URL</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>Project URLs:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QTreeWidget" name="projectUrlsList">
+         <property name="alternatingRowColors">
+          <bool>true</bool>
+         </property>
+         <property name="selectionMode">
+          <enum>QAbstractItemView::ExtendedSelection</enum>
+         </property>
+         <property name="rootIsDecorated">
+          <bool>false</bool>
+         </property>
+         <property name="itemsExpandable">
+          <bool>false</bool>
+         </property>
+         <property name="sortingEnabled">
+          <bool>true</bool>
+         </property>
+         <column>
+          <property name="text">
+           <string>Name</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>URL</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+       <item row="3" column="1">
+        <layout class="QHBoxLayout" name="horizontalLayout_4">
+         <item>
+          <widget class="QPushButton" name="urlDeleteButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to delete the selected URLs</string>
+           </property>
+           <property name="text">
+            <string>Delete</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="urlAddButton">
+           <property name="toolTip">
+            <string>Press to open a dialog to add a project URL</string>
+           </property>
+           <property name="text">
+            <string>Add...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="urlEditButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to open a dialog to edit the selected project URL</string>
+           </property>
+           <property name="text">
+            <string>Edit...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="licenseTab">
@@ -565,7 +682,7 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="tab">
+     <widget class="QWidget" name="modulesTab">
       <attribute name="title">
        <string>Modules</string>
       </attribute>
@@ -625,28 +742,49 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="scriptsTab">
+     <widget class="QWidget" name="entryPointsTab">
       <attribute name="title">
-       <string>Scripts</string>
+       <string>Entry Points</string>
       </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_6">
+      <layout class="QVBoxLayout" name="verticalLayout_5">
        <item>
-        <widget class="QListWidget" name="scriptsList">
+        <widget class="QTreeWidget" name="entryPointsList">
          <property name="alternatingRowColors">
           <bool>true</bool>
          </property>
          <property name="selectionMode">
           <enum>QAbstractItemView::ExtendedSelection</enum>
          </property>
+         <property name="rootIsDecorated">
+          <bool>false</bool>
+         </property>
+         <property name="itemsExpandable">
+          <bool>false</bool>
+         </property>
          <property name="sortingEnabled">
           <bool>true</bool>
          </property>
+         <column>
+          <property name="text">
+           <string>Type</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Name</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Script Function</string>
+          </property>
+         </column>
         </widget>
        </item>
        <item>
         <layout class="QHBoxLayout" name="horizontalLayout_6">
          <item>
-          <widget class="QPushButton" name="deleteScriptButton">
+          <widget class="QPushButton" name="deleteEntryPointButton">
            <property name="enabled">
             <bool>false</bool>
            </property>
@@ -659,9 +797,9 @@
           </widget>
          </item>
          <item>
-          <widget class="QPushButton" name="addScriptButton">
+          <widget class="QPushButton" name="addEntryPointButton">
            <property name="toolTip">
-            <string>Add script files via a files selection dialog</string>
+            <string>Press to open a dialog to add an entry point</string>
            </property>
            <property name="text">
             <string>Add...</string>
@@ -669,6 +807,19 @@
           </widget>
          </item>
          <item>
+          <widget class="QPushButton" name="editEntryPointButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to open a dialog to edit the selected entry point</string>
+           </property>
+           <property name="text">
+            <string>Edit...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
           <spacer name="horizontalSpacer_4">
            <property name="orientation">
             <enum>Qt::Horizontal</enum>
@@ -751,11 +902,18 @@
   <tabstop>authorEmailEdit</tabstop>
   <tabstop>maintainerEdit</tabstop>
   <tabstop>maintainerEmailEdit</tabstop>
+  <tabstop>pyVersionEdit</tabstop>
   <tabstop>summaryEdit</tabstop>
   <tabstop>descriptionEdit</tabstop>
   <tabstop>descriptionFromFilesCheckBox</tabstop>
+  <tabstop>descriptionContentTypeComboBox</tabstop>
   <tabstop>keywordsEdit</tabstop>
   <tabstop>homePageUrlEdit</tabstop>
+  <tabstop>downloadUrlEdit</tabstop>
+  <tabstop>projectUrlsList</tabstop>
+  <tabstop>urlDeleteButton</tabstop>
+  <tabstop>urlAddButton</tabstop>
+  <tabstop>urlEditButton</tabstop>
   <tabstop>licenseClassifierCheckBox</tabstop>
   <tabstop>licenseClassifierComboBox</tabstop>
   <tabstop>licenseEdit</tabstop>
@@ -764,16 +922,17 @@
   <tabstop>classifiersList</tabstop>
   <tabstop>sourceDirectoryPicker</tabstop>
   <tabstop>excludePatternList</tabstop>
+  <tabstop>deleteExcludePatternButton</tabstop>
   <tabstop>excludePatternEdit</tabstop>
   <tabstop>addExludePatternButton</tabstop>
-  <tabstop>deleteExcludePatternButton</tabstop>
   <tabstop>includePackageDataCheckBox</tabstop>
   <tabstop>modulesList</tabstop>
   <tabstop>deleteModuleButton</tabstop>
   <tabstop>addModuleButton</tabstop>
-  <tabstop>scriptsList</tabstop>
-  <tabstop>deleteScriptButton</tabstop>
-  <tabstop>addScriptButton</tabstop>
+  <tabstop>entryPointsList</tabstop>
+  <tabstop>deleteEntryPointButton</tabstop>
+  <tabstop>addEntryPointButton</tabstop>
+  <tabstop>editEntryPointButton</tabstop>
   <tabstop>projectButton</tabstop>
  </tabstops>
  <resources/>
@@ -785,8 +944,8 @@
    <slot>accept()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>236</x>
-     <y>540</y>
+     <x>663</x>
+     <y>539</y>
     </hint>
     <hint type="destinationlabel">
      <x>157</x>
@@ -801,8 +960,8 @@
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>304</x>
-     <y>540</y>
+     <x>689</x>
+     <y>539</y>
     </hint>
     <hint type="destinationlabel">
      <x>286</x>
@@ -817,12 +976,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>99</x>
-     <y>91</y>
+     <x>110</x>
+     <y>129</y>
     </hint>
     <hint type="destinationlabel">
-     <x>110</x>
-     <y>133</y>
+     <x>121</x>
+     <y>161</y>
     </hint>
    </hints>
   </connection>
@@ -837,8 +996,8 @@
      <y>107</y>
     </hint>
     <hint type="destinationlabel">
-     <x>192</x>
-     <y>141</y>
+     <x>203</x>
+     <y>193</y>
     </hint>
    </hints>
   </connection>
--- a/eric7/i18n/eric7_cs.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_cs.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -587,6 +587,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Konzole</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Python soubory (*.py);;Všechny soubory (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Jméno:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1170,6 +1233,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Jméno:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10777,7 +10868,7 @@
       <translation>Zrušit komentář</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11010,7 +11101,7 @@
       <translation type="unfinished">Pravopis</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Zatrhnout kontrolu...</translation>
@@ -11071,7 +11162,7 @@
       <translation>Editovat breakpoint...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Aktivovat breakpoint</translation>
@@ -11295,356 +11386,356 @@
       <translation type="unfinished">&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; již existuje.&lt;/p&gt;&lt;p&gt;Má se přepsat?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Autodoplňování</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Autodoplňování není dostupné protože zdrojová část autodoplňování nebyla nalezena.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Deaktivovat breakpoint</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Pokrytí kódu</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Prosím, vyberte soubor s pokrytím kódu</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Zobrazit poznámky pokrytí kódu</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Všechny řádky byly pokryty.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Soubor s pokrytím není dostupný.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Profilovat data</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Prosím, vyberte soubor s profilem</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Chyba syntaxe</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Hlášení syntaktické chyby není dostupné.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation type="unfinished">Varování</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation type="unfinished">Chyby: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Název makra</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Vyberte název makra:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Načíst soubor makra</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Macro soubory (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Chyba při načítání makra</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Soubor s makrem &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Soubor s makrem &lt;b&gt;{0}&lt;/b&gt; je poškozen.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Macro soubory (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Chyba při načítání makra</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Soubor s makrem &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Soubor s makrem &lt;b&gt;{0}&lt;/b&gt; je poškozen.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Uložit soubor s makrem</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Uložit makro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Chyba při ukládání makra</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;So souboru s makrem &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Spustit záznam makra</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Nahrávání makra již probíhá. Spustit nové?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Záznam makra</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Vložte název makra:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Soubor změněn</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Zahodit chybu</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; není soubor.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Zdroje</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Přidat soubor...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Přidat soubory...</translation>
+      <source>Add file...</source>
+      <translation>Přidat soubor...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Přidat soubory...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Přidat zástupce souboru...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Přidat lokalizované resource...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Přidat resource frame</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Přidat soubor resource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Přidat soubory resource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Přidat zástupce souboru resource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Zástupce pro soubor &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Diagram balíčku</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Včetně atributů třídy?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Importovat diagram</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Zahrnout importy z externích modulů?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Diagram aplikace</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Včetně jmen modulů?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Přidat do slovníku</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Přidat do slovníku</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Ignorovat vše</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65649,12 +65740,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished" />
     </message>
@@ -65662,22 +65785,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65820,6 +65948,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished">Popisek</translation>
     </message>
@@ -65835,11 +65974,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished">Popisek:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65855,6 +65989,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65880,6 +66019,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Jméno</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">Přidat...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Editovat...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65957,13 +66158,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65999,18 +66193,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation type="unfinished">Přidat...</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Entry Points</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Type</source>
+      <translation type="unfinished">Typ</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Script Function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -66023,6 +66226,10 @@
       <source>Populate from Project</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Popisek:</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
Binary file eric7/i18n/eric7_de.qm has changed
--- a/eric7/i18n/eric7_de.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_de.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -592,6 +592,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation>Konsole</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation>GUI</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation>Wähle die Skriptdatei</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation>Python-Dateien (*.py);;Alle Dateien (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation>Wähle den Einstiegspunkt</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation>Skripttyp:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation>Wähle den Skripttyp</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation>Name:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation>Gib einen Namen für den Einsprungpunkt ein</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation>Skriptfunktion:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation>Gib das Skript und die Funktion ein</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation>Drücken, um das Skript über einen Dateiauswahldialog zu wählen</translation>
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1181,6 +1244,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation>Projekt-URL hinzufügen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation>Name:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation>Gib einen Namen für die URL ein</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation>URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation>Gib die URL ein</translation>
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10814,7 +10905,7 @@
       <translation>Kommentar entfernen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation>Docstring erzeugen</translation>
@@ -11047,7 +11138,7 @@
       <translation>Rechtschreibung</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Rechtschreibprüfung...</translation>
@@ -11108,7 +11199,7 @@
       <translation>Haltepunkt bearbeiten...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Haltepunkt aktivieren</translation>
@@ -11332,344 +11423,344 @@
       <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Automatische Vervollständigung</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Die automatische Vervollständigung ist nicht verfügbar, da keine Quelle gesetzt ist.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation>Provider für automatische Vervollständigungen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>Der Provider für automatische Vervollständigungen namens '{0}' ist bereits registriert. Die Wiederholung wird ignoriert.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation>Calltipps-Provider</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>Der Calltipps-Provider namens '{0}' ist bereits registriert. Die Wiederholung wird ignoriert.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Haltepunkt deaktivieren</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Quelltext Abdeckung</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Bitte wählen Sie eine Datei mit Abdeckungsdaten</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Zeilen ohne Abdeckung Markieren</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Alle Zeilen sind abgedeckt.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Es gibt keine Datei mit Abdeckungsinformationen.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Profildaten</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Bitte wählen Sie eine Datei mit Profildaten</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Syntaxfehler</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Keine Syntaxfehlermeldung verfügbar.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Warnung</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>Keine Warnmeldungen verfügbar.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Stil: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Warnung: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Fehler: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Makro Name</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Wähle einen Makro Namen:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Lade Makrodatei</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Makrodateien (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Fehler beim Makro Laden</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; kann nicht gelesen werden.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; ist zerstört.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Makrodateien (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Fehler beim Makro Laden</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; kann nicht gelesen werden.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; ist zerstört.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Makrodatei schreiben</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Makro speichern</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Fehler beim Makro speichern</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Makrodatei &lt;b&gt;{0}&lt;/b&gt; kann nicht geschrieben werden.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Makroaufzeichnung starten</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Eine Makroaufzeichnung ist bereits aktiv. Neu starten?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Makroaufzeichnung</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Gib einen Namen für das Makro ein:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; wurde geändert, während sie in eric geöffnet war. Neu einlesen?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Warnung:&lt;/b&gt; Vorgenommenen Änderungen gehen beim neu einlesen verloren.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Datei geändert</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Drop Fehler</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; ist keine Datei.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Ressourcen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Datei hinzufügen...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Dateien hinzufügen...</translation>
+      <source>Add file...</source>
+      <translation>Datei hinzufügen...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Dateien hinzufügen...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Aliased-Datei hinzufügen...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Lokalisierte Ressource hinzufügen...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Ressourcenrahmen hinzufügen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Dateiressource hinzufügen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Dateiressourcen hinzufügen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Aliased-Dateiressourcen hinzufügen</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Alias für Datei &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Package-Diagramm</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Klassenattribute anzeigen?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Imports Diagramm</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Imports externer Module anzeigen?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Applikations-Diagramm</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Modulnamen anzeigen?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Zum Wörterbuch hinzufügen</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Zum Wörterbuch hinzufügen</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Alle ignorieren</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation>Zeilen sortieren</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>Die Auswahl enthält für eine numerische Sortierung ungültige Daten.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation>Maus Klick Handler registrieren</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation>Ein Maus Klick Handler für "{0}" wurde bereits durch "{1}" registriert. Die Anfrage durch "{2}" wird abgebrochen...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation>{0:4d}    {1}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
@@ -11677,12 +11768,12 @@
     =&gt;  {2}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation>EditorConfig Eigenschaften</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die EditorConfig Eigenschaften für die Datei &lt;b&gt;{0}&lt;/b&gt; konnten nicht geladen werden.&lt;/p&gt;</translation>
     </message>
@@ -65826,12 +65917,44 @@
       <translation>&lt;b&gt;setup.py Assistent&lt;/b&gt;&lt;p&gt;Dieser Assistent öffnet einen Dialog zur Eingabe aller Parameter, um einen Basisinhalt einer setup.py Datei zu erzeugen. Der erzeugte Quelltext wird an die Stelle der Einfügemarke geschrieben.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation>setup.cfg Assistent</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation>setup.cfg Assistent...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;setup.cfg Assistent&lt;/b&gt;&lt;p&gt;Dieser Assistent öffnet einen Dialog zur Eingabe aller Parameter, um einen Basisinhalt einer setup.cfg Datei zu erzeugen. Der erzeugte Quelltext wird an die Stelle der Einfügemarke geschrieben.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation>pyproject.toml Assistent</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation>pyproject.toml Assistent...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;pyproject.toml Assistent&lt;/b&gt;&lt;p&gt;Dieser Assistent öffnet einen Dialog zur Eingabe aller Parameter, um einen Basisinhalt einer pyproject.toml Datei zu erzeugen. Der erzeugte Quelltext wird an die Stelle der Einfügemarke geschrieben.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation>Kein aktueller Editor</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation>Bitte öffnen oder erzeugen Sie zuerst eine Datei.</translation>
     </message>
@@ -65839,22 +65962,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation>Skripte hinzufügen</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation>Python Dateien (*.py);;Alle Dateien (*)</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation>Normaler Text</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation>Markdown</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation>reStructuredText</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation>Python Module hinzufügen</translation>
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation>Python Dateien (*.py)</translation>
     </message>
@@ -65997,6 +66125,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation>Python Version:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation>Gib die Python Versionsspezifikation ein</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation>Beschreibung</translation>
     </message>
@@ -66012,11 +66151,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation>Beschreibung:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation>Gib eine Beschreibung des Paketes ein oder Dateien (eine pro Zeile), aus denen sie gelesen werden soll.</translation>
     </message>
@@ -66032,6 +66166,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation>Inhaltstyp:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation>Schlüsselworte:</translation>
     </message>
@@ -66057,6 +66196,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation>Download URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation>Gib die URL für Downloads ein</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation>Projekt URLs:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation>Name</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation>URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation>Drücken, um die ausgewählten URLs zu löschen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation>Löschen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation>Drücken, um einen Dialog zum Hinzufügen einer Projekt URL zu öffnen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation>Hinzufügen...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation>Drücken, um einen Dialog zur Bearbeitung der ausgewählten Projekt URL zu öffnen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation>Bearbeiten...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation>Lizenz</translation>
     </message>
@@ -66134,13 +66335,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation>Löschen</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation>Drücken, um das Muster hinzuzufügen</translation>
     </message>
@@ -66176,19 +66370,28 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation>Einsprungpunkte</translation>
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation>Hinzufügen...</translation>
+      <source>Type</source>
+      <translation>Typ</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
-      <translation>Skripte</translation>
+      <source>Script Function</source>
+      <translation>Skriptfunktion</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
-      <translation>Füge Skriptdateien über einen Dateienauswahldialog hinzu</translation>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation>Drücken, um einen Dialog zum Hinzufügen eines Einsprungpunktes zu öffnen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
+      <translation>Drücken, um einen Dialog zur Bearbeitung des ausgewählten Einsprungpunktes zu öffnen</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
--- a/eric7/i18n/eric7_empty.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_empty.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -584,6 +584,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1164,6 +1227,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10726,7 +10817,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -10959,7 +11050,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation type="unfinished" />
@@ -11020,7 +11111,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation type="unfinished" />
@@ -11244,356 +11335,356 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
+      <source>Add file...</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65382,12 +65473,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished" />
     </message>
@@ -65395,22 +65518,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65553,6 +65681,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished" />
     </message>
@@ -65568,11 +65707,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65588,6 +65722,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65613,6 +65752,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65690,13 +65891,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65732,18 +65926,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
+      <source>Type</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Script Function</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
--- a/eric7/i18n/eric7_en.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_en.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -584,6 +584,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1164,6 +1227,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10741,7 +10832,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -10974,7 +11065,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation type="unfinished" />
@@ -11035,7 +11126,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation type="unfinished" />
@@ -11259,356 +11350,356 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
+      <source>Add file...</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65430,12 +65521,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished" />
     </message>
@@ -65443,22 +65566,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65601,6 +65729,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished" />
     </message>
@@ -65616,11 +65755,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65636,6 +65770,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65661,6 +65800,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Name</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65738,13 +65939,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65780,18 +65974,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
+      <source>Type</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Script Function</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
--- a/eric7/i18n/eric7_es.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_es.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -590,6 +590,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Consola</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Archivos Python (*.py);;Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nombre:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1178,6 +1241,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nombre:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10810,7 +10901,7 @@
       <translation>Sacar de comentario</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation>Generar Docstring</translation>
@@ -11043,7 +11134,7 @@
       <translation>Corrección ortográfica</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Corrección ortográfica...</translation>
@@ -11104,7 +11195,7 @@
       <translation>Editar punto de interrupción...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Activar punto de interrupción</translation>
@@ -11328,344 +11419,344 @@
       <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Desea sobreescribirlo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Autocompletar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Autocompletar no está disponible porque no hay origen de datos para autocompletar.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation>Proveedor de Autocompletado</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>El proveedor de lista de completado'{0}' ya está registrado. Se ignora la solicitud duplicada.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation>Proveedor de Call-Tips</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>El proveedor de call-tips'{0}' ya está registrado. Se ignora la solicitud duplicada.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Deshabilitar punto de interrupción</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Cobertura de codigo</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Por favor seleccione un archivo de cobertura</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Mostrar Anotaciones de Cobertura de Código</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Todas las líneas han sido cubiertas.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>No hay archivo de cobertura disponible.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Datos de profiling</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Por favor seleccione un archivo de profiling</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Error de sintaxis</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>No hay mensajes de error de sintaxis disponibles.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Advertencia</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>No hay mensajes de advertencia disponibles.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Estilo: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Advertencia: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Error: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Nombre de macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Seleccione un nombre de macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Cargar archivo de macro</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Archivos de Macro  (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Error al cargar macro</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;El archivo de macro &lt;b&gt;{0}&lt;/b&gt; no se puede leer.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;El archivo de macro &lt;b&gt;{0}&lt;/b&gt; está dañado&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Archivos de Macro  (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Error al cargar macro</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;El archivo de macro &lt;b&gt;{0}&lt;/b&gt; no se puede leer.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;El archivo de macro &lt;b&gt;{0}&lt;/b&gt; está dañado&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Guardar archivo de macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Guardar macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;El archivo de macro &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Desea sobreescribirlo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Error al guardar macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;El archivo de macro  &lt;b&gt;{0}&lt;/b&gt; no se puede escribir.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Comenzar grabación de macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Grabación de macro ya está activada. ¿Comenzar una nueva?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Grabando macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Introduzca el nombre de la macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ha cambiado mientras estaba abierto en eric. ¿Desea volver a cargarlo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Advertencia:&lt;/b&gt; Perderá los cambios si lo reabre.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Archivo modificado</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Error al soltar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; no es un archivo.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Recursos</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Añadir archivo...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Añadir archivos...</translation>
+      <source>Add file...</source>
+      <translation>Añadir archivo...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Añadir archivos...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Añadir archivo con un alias...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Añadir recursos localizados...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Añadir ventana de recursos</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Añadir archivo de recursos</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Añadir archivo de recursos</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Añadir archivo de recursos con un alias</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Alias para el archivo &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Digrama de paquetes</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>¿Incluir atributos de clase?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Diagrama de imports</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>¿Incluir los imports de módulos externos?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Diagrama de aplicación</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>¿Incluir nombres de módulos?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Añadir al diccionario</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Añadir al diccionario</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Ignorar Todo</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation>Ordenar Líneas</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>La selección contiene datos ilegales para una ordenación numérica.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation>Registrar Manejador de Clicks de Ratón</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation>Un manejador de clicks de ratón para "{0}" ya está registrado por "{1}". Abortando solicitud por "{2}"...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation>{0:4d}    {1}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
@@ -11673,12 +11764,12 @@
     =&gt;  {2}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation>Propiedades de EditorConfig</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Las propiedades de EditorConfig para el archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido cargar.&lt;/p&gt;</translation>
     </message>
@@ -65808,12 +65899,44 @@
       <translation>&lt;b&gt;Asistente de setup.py&lt;/b&gt;&lt;p&gt;Este asistente abre un diálogo para introducir todos los parámentros necesarios para crear los contenidos básicos de un archivo setup.py. El código generado se inserta en la posición actual del cursor.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation>No hay editor actual</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation>Por favor, abrir o crear un archivo primero.</translation>
     </message>
@@ -65821,22 +65944,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation>Añadir Scripts</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation>Archivos Python (*.py);;Todos los Archivos(*)</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished">Markdown</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation>Añadir Módulos Python</translation>
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation>Archivos de Python (*.py)</translation>
     </message>
@@ -65979,6 +66107,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished">Versión de Python:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation>Descripción</translation>
     </message>
@@ -65994,11 +66133,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation>Descripción:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation>Introducir la descripción del paquete o de los archivos (uno por línea) a partir de dónde obtenerlo.</translation>
     </message>
@@ -66014,6 +66148,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation>Palabras Clave:</translation>
     </message>
@@ -66039,6 +66178,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Nombre</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation>Borrar</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation>Añadir...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Editar...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation>Licencia</translation>
     </message>
@@ -66116,13 +66317,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation>Borrar</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation>Pulsar para añadir el patrón</translation>
     </message>
@@ -66158,19 +66352,28 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation>Añadir...</translation>
+      <source>Type</source>
+      <translation type="unfinished">Tipo</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
-      <translation>Scripts</translation>
+      <source>Script Function</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
-      <translation>Añadir archivos de script a través de un diálogo de selección de archivos</translation>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
@@ -66182,6 +66385,26 @@
       <source>Populate from Project</source>
       <translation>Popular a partir del Proyecto</translation>
     </message>
+    <message>
+      <source>Add Scripts</source>
+      <translation type="vanished">Añadir Scripts</translation>
+    </message>
+    <message>
+      <source>Python Files (*.py);;All Files(*)</source>
+      <translation type="vanished">Archivos Python (*.py);;Todos los Archivos(*)</translation>
+    </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Descripción:</translation>
+    </message>
+    <message>
+      <source>Scripts</source>
+      <translation type="vanished">Scripts</translation>
+    </message>
+    <message>
+      <source>Add script files via a files selection dialog</source>
+      <translation type="vanished">Añadir archivos de script a través de un diálogo de selección de archivos</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
--- a/eric7/i18n/eric7_fr.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_fr.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -597,6 +597,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Console</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Fichiers Python (*.py);;Tous les fichiers (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nom :</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1185,6 +1248,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nom :</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL :</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10809,7 +10900,7 @@
       <translation>Décommenter</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11042,7 +11133,7 @@
       <translation type="unfinished">Orthographe</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Correction orthographique...</translation>
@@ -11103,7 +11194,7 @@
       <translation>Éditer le point d'arrêt...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Activer le point d'arrêt</translation>
@@ -11327,356 +11418,356 @@
       <translation>&lt;p&gt;Le fichier &lt;b&gt;{0}&lt;/b&gt;existe déjà. Écraser ?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Autocompletion</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>L'autocompletion n'est pas disponible car aucune source d'autocomplétion n'est définie.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Désactiver le point d'arrêt</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Code Coverage</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Sélectionner un fichier coverage</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Afficher les annotations de Code Coverage</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Toutes les lignes ont été executées.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Impossible de trouver le fichier de coverage.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Profiler de données</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Sélectionner un fichier profile</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Erreur de syntaxe</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Aucun message d'erreur de syntaxe..</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Warning</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>Pas de message d'alerte disponible.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Style : {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Alerte : {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Erreur : {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Nom de la macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Sélectionner un nom de macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Charger un fichier macro</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Fichier Macro (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Erreur lors du chargement de la macro</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt; ne peut être lu.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt; est corrompu.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Fichier Macro (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Erreur lors du chargement de la macro</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt; ne peut être lu.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt; est corrompu.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Enregistrer le fichier macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Enregistrer la macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt;existe déjà. Écraser ?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Erreur lors de l'enregistrement de la macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Le fichier macro &lt;b&gt;{0}&lt;/b&gt; ne peut être écrit.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Démarrer l'enregistrement de la macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>L'enregistrement de macro est déjà actif. En démarrer une nouvelle ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Enregistrement de macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Entrer le nom de la macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Alerte :&lt;/b&gt; Vous allez perdre vos modifications à la réouverture.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Fichier modifié</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation type="unfinished">{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Erreur de suppression</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; n'est pas un fichier.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Ressources</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Ajouter un fichier...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Ajouter des fichiers...</translation>
+      <source>Add file...</source>
+      <translation>Ajouter un fichier...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Ajouter des fichiers...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Ajouter un fichier alias...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Ajouter une ressource localisée...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Ajouter un cadre ressource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Ajoute un fichier ressource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Ajoute des fichiers ressources</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Ajoute un alias de fichier ressource</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Diagramme de package</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Inclure les attributs de classes ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Diagramme des modules</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Inclure l'importation de modules externes?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Diagramme de l'application</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Inclure les noms de modules ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Ajouter au dictionnaire</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Ajouter au dictionnaire</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Tout ignorer</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>La sélection contient des données illégales pour un tri numérique.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation>Propriétés d'EditorConfig</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Les propriétés d'EditorConfig du fichier &lt;b&gt;{0}&lt;/b&gt; n'ont pas pu être chargées.&lt;/p&gt;</translation>
     </message>
@@ -65740,12 +65831,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation>Pas d'éditeur courant</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation>Veuillez d'abord créer ou ouvrir un fichier.</translation>
     </message>
@@ -65753,22 +65876,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation>Ajouter scripts</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation>Fichiers Python (*.py);;Tous les fichiers (*)</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished">Markdown</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation>Ajouter module Python</translation>
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation>Fichiers Python (*.py)</translation>
     </message>
@@ -65911,6 +66039,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished">Version Python :</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation>Description</translation>
     </message>
@@ -65926,11 +66065,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation>Description :</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65946,6 +66080,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation>Mots-clefs :</translation>
     </message>
@@ -65971,6 +66110,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="vanished">URL de téléchargement :</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="vanished">Entrer l'URL de téléchargement</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Nom</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation>Supprimer</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation>Ajouter...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Éditer...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation>Licence</translation>
     </message>
@@ -66048,13 +66249,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation>Supprimer</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -66090,19 +66284,28 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation>Ajouter...</translation>
+      <source>Type</source>
+      <translation type="unfinished">Type</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
-      <translation>Scripts</translation>
+      <source>Script Function</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
-      <translation>Ajouter des fichiers script via un sélectionneur de fichiers</translation>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
@@ -66115,12 +66318,24 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <source>Download URL:</source>
-      <translation type="vanished">URL de téléchargement :</translation>
-    </message>
-    <message>
-      <source>Enter the download URL</source>
-      <translation type="vanished">Entrer l'URL de téléchargement</translation>
+      <source>Add Scripts</source>
+      <translation type="vanished">Ajouter scripts</translation>
+    </message>
+    <message>
+      <source>Python Files (*.py);;All Files(*)</source>
+      <translation type="vanished">Fichiers Python (*.py);;Tous les fichiers (*)</translation>
+    </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Description :</translation>
+    </message>
+    <message>
+      <source>Scripts</source>
+      <translation type="vanished">Scripts</translation>
+    </message>
+    <message>
+      <source>Add script files via a files selection dialog</source>
+      <translation type="vanished">Ajouter des fichiers script via un sélectionneur de fichiers</translation>
     </message>
   </context>
   <context>
--- a/eric7/i18n/eric7_it.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_it.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -587,6 +587,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Console</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">File Python (*.py);;Tutti i File (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nome:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1174,6 +1237,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nome:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10791,7 +10882,7 @@
       <translation>Annulla commenta</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11024,7 +11115,7 @@
       <translation type="unfinished">Spelling</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Controllo sillabazione...</translation>
@@ -11085,7 +11176,7 @@
       <translation>Modifica Breakpoint...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Abilita breakpoint</translation>
@@ -11309,356 +11400,356 @@
       <translation>&lt;p&gt;Il file &lt;b&gt;{0}&lt;/b&gt; esiste già. Sovrascriverlo ?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Autocompletamento</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>L'autocomplentamento non è disponibile perchè non ci sono fonti impostate.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Disabilita breakpoint</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Analisi codice</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Per favore seleziona un file per l'analisi</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Mostra le annotazioni dell'analisi del codice</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Tutte le linee sono state analizzate.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Non ci sono file di analisi disponibili.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Profilazione dati</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Per favore seleziona un file per la profilazione</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Errore di sintassi</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Nessun messaggio degli errori di sintassi disponibile.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Attenzione</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>Nessun messaggio di attenzione disponibile.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Stile: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Attenzione: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Errore: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Nome Macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Seleziona un nome per la macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Carica un file di macro</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>File Macro (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Errore nel caricamento della macro</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Il file macro &lt;b&gt;{0}&lt;/b&gt; non può essere letto.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Il file macro &lt;b&gt;{0}&lt;/b&gt; è danneggiato.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>File Macro (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Errore nel caricamento della macro</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Il file macro &lt;b&gt;{0}&lt;/b&gt; non può essere letto.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Il file macro &lt;b&gt;{0}&lt;/b&gt; è danneggiato.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Salva un file di macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Salva macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il file  delle macro &lt;b&gt;{0}&lt;/b&gt; esiste già.Sovrascriverlo ?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Errore nel salvataggio della macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il file macro &lt;b&gt;{0}&lt;/b&gt; non può essere scritto.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Avvia registrazione della macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Registrazione macro già attiva. Avvia nuovamente ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Registrazione Macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Inserisci un nome per la macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Attenzione:&lt;/b&gt; con la riapertura le modifiche andranno perse.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>File modificato</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Errore Drop</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; non è un file.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Risorse</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Aggiungi file...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Aggiungi files...</translation>
+      <source>Add file...</source>
+      <translation>Aggiungi file...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Aggiungi files...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Aggiungi file sinonimo...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Aggiungi una risorsa localizzata...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Aggiungi riquadro delle risorse</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Aggiungi un file risorse</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Aggiundi dei file risorse</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Aggiungi file sinonimo delle risorse</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Alias per il file &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Diagrammi del package</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Includi gli attributi della classe ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Importa diagrammi</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Includi gli import dai moduli esterni ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Diagrammi dell'applicazione</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Includi i nomi dei moduli ?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Aggiungi al dizionario</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Aggiungi al dizionario</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Ignora tutto</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation>Righe ordinate</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>La selezione contiene dati non validi per un ordinamento numerico.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65689,12 +65780,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished">Nessun editor corrente</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">Per favore prima apri o crea un file.</translation>
     </message>
@@ -65702,22 +65825,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65860,6 +65988,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished">Descrizione</translation>
     </message>
@@ -65875,11 +66014,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished">Descrizione:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65895,6 +66029,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65920,6 +66059,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Nome</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished">Cancella</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">Aggiungi...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Modifica...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65997,13 +66198,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished">Cancella</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -66039,18 +66233,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation type="unfinished">Aggiungi...</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Entry Points</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Type</source>
+      <translation type="unfinished">Tipo</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Script Function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -66063,6 +66266,10 @@
       <source>Populate from Project</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Descrizione:</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
--- a/eric7/i18n/eric7_pt.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_pt.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -596,6 +596,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Ficheiros Python (*.py);;Ficheiros Todos (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nome:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1184,6 +1247,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Nome:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10803,7 +10894,7 @@
       <translation>Descomentar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11036,7 +11127,7 @@
       <translation type="unfinished">Verificação ortográfica</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Verificação ortográfica...</translation>
@@ -11097,7 +11188,7 @@
       <translation>Editar ponto de interrupção...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Habilitar pontos de interrupção</translation>
@@ -11321,356 +11412,356 @@
       <translation>&lt;p&gt;O ficheiro &lt;b&gt;{0}&lt;/b&gt; já existe. Sobreescrever?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Autocompletar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Autocompletar não está disponivel porque a fonte de autocompletar não está definida.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Inabilitar ponto de interrupção</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Foram cobertas as linhas todas.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Dados de Perfil</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Escolha um ficheiro de perfil por favor</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Erro de Sintaxe</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Não está disponível a mensagem de erro de sintaxe.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Aviso</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>Não estão disponíveis mensagens de aviso.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Estilo: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Aviso: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Erro: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Nome de Macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Selecionar um nome de macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Carregar ficheiro macro</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Ficheiros Macro (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Erro ao carregar macro</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; não se pode ler.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; está corrompido.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Ficheiros Macro (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Erro ao carregar macro</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; não se pode ler.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; está corrompido.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Gravar ficheiro macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Gravar macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; já existe. Sobreescrever-lo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Erro ao gravar macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;O ficheiro macro &lt;b&gt;{0}&lt;/b&gt; não pode ser escrito.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Iniciar Registo de Macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>A gravação de macro já está ativada. Começar nova?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Gravação de Macro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Introduza o nome de macro:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Aviso:&lt;/b&gt; Perderá todas as alterações uma vez que o volte a abrir.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Ficheiro alterado</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; não é um ficheiro.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Recursos</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Adicionar Ficheiro...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Adicionar Ficheiros...</translation>
+      <source>Add file...</source>
+      <translation>Adicionar Ficheiro...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Adicionar Ficheiros...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Adicionar ficheiro com pseudónimo...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Adicionar recursos localizado...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Adicionar recurso de ficheiro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Adicionar recursos de ficheiro</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Adicionar recurso de ficheiro com pseudónimo</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Pseudónimo para o ficheiro &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Diagrama do Pacote</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Incluir atributos de classes?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Diagrama de Imports</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Incluir imports de módulos externos?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Diagrama da Aplicação</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Incluir nome dos módulos?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Adicionar dicionário</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Adicionar dicionário</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Ignorar Tudo</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation>Ordenar Linhas</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>A seleção contém dados ilegais para uma ordenação numérica.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65591,12 +65682,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished">Não há um editor atual</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">Por favor, primeiro abra ou crie um ficheiro.</translation>
     </message>
@@ -65604,22 +65727,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65762,6 +65890,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished">Versão de Python:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished">Descrição</translation>
     </message>
@@ -65777,11 +65916,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished">Descrição:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65797,6 +65931,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65822,6 +65961,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Nome</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished">Apagar</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">Adicionar...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Editar...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65899,13 +66100,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished">Apagar</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65941,18 +66135,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation type="unfinished">Adicionar...</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Entry Points</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Type</source>
+      <translation type="unfinished">Tipo</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Script Function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -65965,6 +66168,10 @@
       <source>Populate from Project</source>
       <translation type="unfinished">Preencher desde Projeto</translation>
     </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Descrição:</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
--- a/eric7/i18n/eric7_ru.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_ru.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -590,6 +590,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Консоль</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Файлы Python (*.py);;Все файлы (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Имя:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1178,6 +1241,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Имя:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10846,7 +10937,7 @@
       <translation>Раскомментировать</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation>Генерировать строки документации</translation>
@@ -11079,7 +11170,7 @@
       <translation>Проверка орфографии</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Проверка орфографии...</translation>
@@ -11140,7 +11231,7 @@
       <translation>Редактировать точку останова...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Установить точку останова</translation>
@@ -11364,344 +11455,344 @@
       <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; уже существует. Переписать?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Автодополнение</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Автодополнение недоступно, так как не задан источник автодополнения.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation>Источник автодополнений</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>Список дополнений источника '{0}' уже зарегистрирован. Повторный запрос проигнорирован.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation>Источник всплывающих подсказок</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation>Источник всплывающих подсказок '{0}' уже зарегистрирован. Повторный запрос проигнорирован.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Убрать точку останова</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Покрытие кода</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Пожалуйста, выберите файл покрытия</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Показать аннотации по покрытию кода</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Все строки были охвачены.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Нет доступного файла покрытия.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Данные профайлера</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Пожалуйста, выберите файл профиля</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Синтаксическая ошибка</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Нет сообщения о синтаксической ошибке.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>Предупреждение</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation>Нет предупреждающего сообщения.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation>Стиль: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Предупреждение: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Ошибка: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Имя макроса</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Задайте имя макроса:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Загрузить макрос</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Макросы (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Ошибка при загрузке макроса</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Невозможно прочитать файл с макросами: &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Файл с макросами &lt;b&gt;{0}&lt;/b&gt; повреждён.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Макросы (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Ошибка при загрузке макроса</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Невозможно прочитать файл с макросами: &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Файл с макросами &lt;b&gt;{0}&lt;/b&gt; повреждён.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Сохранить файл с макросами</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Сохранить макрос</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Макро &lt;b&gt;{0}&lt;/b&gt; уже существует. Переписать?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Ошибка при сохранении макроса</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Невозможно сохранить файл с макросами: &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Начать запись макроса</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Запись макроса уже идёт. Начать новую запись?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Запись макроса</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Задайте имя макроса:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; был изменён, будучи открытым в eric. Перепрочесть?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;Предупреждение:&lt;/b&gt; При переоткрытии все изменения будут потеряны.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Файл изменен</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (только чтение)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Ошибка Drag&amp;&amp;Drop</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; не является файлом.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Ресурсы</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Добавить файл...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Добавить файлы...</translation>
+      <source>Add file...</source>
+      <translation>Добавить файл...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Добавить файлы...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Добавить файл под другим именем...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Добавить локализованный ресурс...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Добавить фрагмент ресурсов</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Добавить файл ресурсов</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Добавить файлы ресурсов</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Добавить файл ресурсов под другим именем</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>Другое имя для файла &lt;b&gt;{0}&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Диаграмма пакетов</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Включать атрибуты класса?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Диаграмма импортов</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Включать импорты из внешних модулей?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Диаграмма приложения</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Включать имена модулей?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Добавить в словарь</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Добавить в словарь</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Игнорировать всё</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation>Сортировать строки</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation>Выборка содержит данные неподходящие для сортировки как числа.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation>Регистрация обработчика кликов мышки</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation>Обработчик кликов мышки для "{0}" уже зарегистрирован "{1}". Запрос прерван "{2}"...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation>{0:4d}    {1}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
@@ -11709,12 +11800,12 @@
     =&gt;  {2}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation>Свойства EditorConfig</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Не удается загрузить свойства EditorConfig для файла &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
@@ -65968,12 +66059,44 @@
       <translation>&lt;b&gt;Мастер setup.py&lt;/b&gt;&lt;p&gt;Этот мастер открывает диалог для ввода всех параметров, необходимых для создания основной контент файла setup.py. Созданный код будет вставлен в текущую позицию курсора.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation>Нет текущего редактора</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation>Пожалуйста, сначала откройте или создайте файл.</translation>
     </message>
@@ -65981,22 +66104,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation>Добавить сценарии</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation>Файлы Python (*.py);;Все файлы (*)</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished">Markdown</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation>Добавить модули Python</translation>
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation>Файлы Python (*.py)</translation>
     </message>
@@ -66139,6 +66267,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished">Версия Python:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation>Описание</translation>
     </message>
@@ -66154,11 +66293,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation>Описание:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation>Введите описание пакета или файлов (по одному в строке).</translation>
     </message>
@@ -66174,6 +66308,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation>Ключевые слова:</translation>
     </message>
@@ -66199,6 +66338,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Имя</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation>Удалить</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation>Добавить...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Правка...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation>Лицензия</translation>
     </message>
@@ -66276,13 +66477,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation>Удалить</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation>Добавить шаблоны</translation>
     </message>
@@ -66318,19 +66512,28 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Entry Points</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation>Добавить...</translation>
+      <source>Type</source>
+      <translation type="unfinished">Тип</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
-      <translation>Сценарии</translation>
+      <source>Script Function</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
-      <translation>Добавление файлов сценариев посредством диалога выбора файлов</translation>
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
@@ -66342,6 +66545,26 @@
       <source>Populate from Project</source>
       <translation>Получить из проекта</translation>
     </message>
+    <message>
+      <source>Add Scripts</source>
+      <translation type="vanished">Добавить сценарии</translation>
+    </message>
+    <message>
+      <source>Python Files (*.py);;All Files(*)</source>
+      <translation type="vanished">Файлы Python (*.py);;Все файлы (*)</translation>
+    </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Описание:</translation>
+    </message>
+    <message>
+      <source>Scripts</source>
+      <translation type="vanished">Сценарии</translation>
+    </message>
+    <message>
+      <source>Add script files via a files selection dialog</source>
+      <translation type="vanished">Добавление файлов сценариев посредством диалога выбора файлов</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
--- a/eric7/i18n/eric7_tr.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_tr.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -587,6 +587,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">Konsol- kumanda birimi</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished">Python Dosyaları (*.py);;Tüm Dosyalar (*)</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Adı:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1171,6 +1234,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">Adı:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10768,7 +10859,7 @@
       <translation>Yorumlanamaz</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11001,7 +11092,7 @@
       <translation type="unfinished">Yazım kontolü yapılıyor</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>Yazım Kontrolü...</translation>
@@ -11062,7 +11153,7 @@
       <translation>Bekleme noktasını düzenle...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>Beklemenoktasını etkinleştir</translation>
@@ -11286,356 +11377,356 @@
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; dosyası halen mevcut. Üzerine yazılsın mı?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>Otomatik tamamlama</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>Otomatiktamamlama uygun değil çünkü bu otomatiktamamlama kaynağı değil.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>Durmanoktasını iptal et</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>Kod Koruyucu</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>Lütfen bir koruyucu dosya seçiniz</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>Kodların Dipnotunu Göster</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>Tüm satırlar korumaya alındı.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>Hazırda koruma dosyası yok.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>Veri Kesiti</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>Lütfen kesit dosyasını seçiniz</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>Sözdizimi Hatası</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>Uygun söz dizimi hata mesajı yok.</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation type="unfinished">Dikkat</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>Dikkat: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>Hata: {0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>Makro Adı</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>Bir makro ismi seç:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>Makro dosyasını yükle</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>Makro dosyaları (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>Makronun yüklenmesinde hata</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; okunamıyor.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; bozuk.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>Makro dosyaları (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>Makronun yüklenmesinde hata</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; okunamıyor.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; bozuk.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>Makro Dosyasını Kaydet</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>Makro Kaydet</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; zaten var. Üzerine yazılsın mı?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>Makronun kaydedilmesinde hata</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Makro dosyası &lt;b&gt;{0}&lt;/b&gt; yazılamıyor.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>Makro Kaydı Başladı</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>Makro kaydı şuan aktif. Yeniden başlasın mı?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>Makro Kaydediliyor</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>Makronun ismini gir:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>Dosya değiştirilmiş</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0} (ro)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>Düşme hatası</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; bir dosya değil.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>Kaynaklar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>Dosya ekle...</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
-      <translation>Dosyaları ekle...</translation>
+      <source>Add file...</source>
+      <translation>Dosya ekle...</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>Dosyaları ekle...</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>Kısaltmalar dosyasına ekle...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>Yaral kaynak ekle...</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>Çerçeve kaynağı ekle</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>Dosya kaynağını ekle</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>Dosya kaynaklarını ekle</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>Kısaltmalar dosyası kaynağını ekle</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation>&lt;b&gt;{0} dosyası için takma ad&lt;/b&gt;:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>Paket Şeması</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>Sınıf nitelikleri dahil edilsin mi?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>Şemayı İçe Aktar</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>Harici modüllerdan içe aktarım dahil edilsin mi?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>Uygulama Şeması</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>Modül isimleri dahil edilsin mi?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>Sözlüğe ekle</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>Sözlüğe ekle</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>Hepsini Yoksay</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65540,12 +65631,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished">Geçerli düzenleyici yok</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">Lütfen ilkönce bir dosya açın yada oluşturun.</translation>
     </message>
@@ -65553,22 +65676,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65711,6 +65839,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished">Açıklama</translation>
     </message>
@@ -65726,11 +65865,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished">Açıklama:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65746,6 +65880,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65771,6 +65910,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">Adı</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished">Sil</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">Ekle...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">Düzenle...</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65848,13 +66049,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished">Sil</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65890,18 +66084,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation type="unfinished">Ekle...</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Entry Points</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Type</source>
+      <translation type="unfinished">Tip</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Script Function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -65914,6 +66117,10 @@
       <source>Populate from Project</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">Açıklama:</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>
--- a/eric7/i18n/eric7_zh_CN.ts	Sat Jul 02 17:22:06 2022 +0200
+++ b/eric7/i18n/eric7_zh_CN.ts	Sat Jul 02 18:53:56 2022 +0200
@@ -597,6 +597,69 @@
     </message>
   </context>
   <context>
+    <name>AddEntryPointDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="47" />
+      <source>Console</source>
+      <translation type="unfinished">控制台程序</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="48" />
+      <source>GUI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="99" />
+      <source>Select Script File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.py" line="101" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Add Entry Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Select the script type</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">名称:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter a name for the entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Script Function:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Enter the script and function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddEntryPointDialog.ui" line="0" />
+      <source>Press to select the script via a file selection dialog</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AddFileDialog</name>
     <message>
       <location filename="../Project/AddFileDialog.ui" line="0" />
@@ -1183,6 +1246,34 @@
     </message>
   </context>
   <context>
+    <name>AddProjectUrlDialog</name>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Add Project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">名称:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter a name for the URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>URL:</source>
+      <translation type="unfinished">URL:</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/AddProjectUrlDialog.ui" line="0" />
+      <source>Enter the URL</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>AnnotationsChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="15" />
@@ -10793,7 +10884,7 @@
       <translation>取消注释</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8845" />
+      <location filename="../QScintilla/Editor.py" line="8847" />
       <location filename="../QScintilla/Editor.py" line="867" />
       <source>Generate Docstring</source>
       <translation type="unfinished" />
@@ -11026,7 +11117,7 @@
       <translation type="unfinished">拼写法</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7978" />
+      <location filename="../QScintilla/Editor.py" line="7980" />
       <location filename="../QScintilla/Editor.py" line="1203" />
       <source>Check spelling...</source>
       <translation>正在进行拼写检查…</translation>
@@ -11087,7 +11178,7 @@
       <translation>编辑断点…</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5717" />
+      <location filename="../QScintilla/Editor.py" line="5719" />
       <location filename="../QScintilla/Editor.py" line="1282" />
       <source>Enable breakpoint</source>
       <translation>允许断点</translation>
@@ -11311,356 +11402,356 @@
       <translation>&lt;p&gt;文件 &lt;b&gt;{0}&lt;/b&gt; 已经存在。是否覆盖?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4878" />
+      <location filename="../QScintilla/Editor.py" line="4880" />
       <source>Autocompletion</source>
       <translation>自动完成</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="4879" />
+      <location filename="../QScintilla/Editor.py" line="4881" />
       <source>Autocompletion is not available because there is no autocompletion source set.</source>
       <translation>自动完成无效,没有设定自动完成源。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5016" />
+      <location filename="../QScintilla/Editor.py" line="5018" />
       <source>Auto-Completion Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5017" />
+      <location filename="../QScintilla/Editor.py" line="5019" />
       <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5310" />
+      <location filename="../QScintilla/Editor.py" line="5312" />
       <source>Call-Tips Provider</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5311" />
+      <location filename="../QScintilla/Editor.py" line="5313" />
       <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="5720" />
+      <location filename="../QScintilla/Editor.py" line="5722" />
       <source>Disable breakpoint</source>
       <translation>去除断点</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6075" />
+      <location filename="../QScintilla/Editor.py" line="6077" />
       <source>Code Coverage</source>
       <translation>代码覆盖率</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6076" />
+      <location filename="../QScintilla/Editor.py" line="6078" />
       <source>Please select a coverage file</source>
       <translation>请选择一个覆盖率文件</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6150" />
-      <location filename="../QScintilla/Editor.py" line="6143" />
+      <location filename="../QScintilla/Editor.py" line="6152" />
+      <location filename="../QScintilla/Editor.py" line="6145" />
       <source>Show Code Coverage Annotations</source>
       <translation>显示代码覆盖率注解</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6144" />
+      <location filename="../QScintilla/Editor.py" line="6146" />
       <source>All lines have been covered.</source>
       <translation>所有行均被已覆盖。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6151" />
+      <location filename="../QScintilla/Editor.py" line="6153" />
       <source>There is no coverage file available.</source>
       <translation>没有有效的覆盖率文件。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6250" />
+      <location filename="../QScintilla/Editor.py" line="6252" />
       <source>Profile Data</source>
       <translation>剖析数据</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6251" />
+      <location filename="../QScintilla/Editor.py" line="6253" />
       <source>Please select a profile file</source>
       <translation>请选择一个剖析文件</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6412" />
-      <location filename="../QScintilla/Editor.py" line="6406" />
+      <location filename="../QScintilla/Editor.py" line="6414" />
+      <location filename="../QScintilla/Editor.py" line="6408" />
       <source>Syntax Error</source>
       <translation>语法错误</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6413" />
+      <location filename="../QScintilla/Editor.py" line="6415" />
       <source>No syntax error message available.</source>
       <translation>语法错误消息无效。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6624" />
-      <location filename="../QScintilla/Editor.py" line="6618" />
+      <location filename="../QScintilla/Editor.py" line="6626" />
+      <location filename="../QScintilla/Editor.py" line="6620" />
       <source>Warning</source>
       <translation>警告</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6625" />
+      <location filename="../QScintilla/Editor.py" line="6627" />
       <source>No warning messages available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6685" />
+      <location filename="../QScintilla/Editor.py" line="6687" />
       <source>Style: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6688" />
+      <location filename="../QScintilla/Editor.py" line="6690" />
       <source>Warning: {0}</source>
       <translation>警告:{0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6695" />
+      <location filename="../QScintilla/Editor.py" line="6697" />
       <source>Error: {0}</source>
       <translation>错误:{0}</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6801" />
+      <location filename="../QScintilla/Editor.py" line="6803" />
       <source>Macro Name</source>
       <translation>宏名称</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6802" />
+      <location filename="../QScintilla/Editor.py" line="6804" />
       <source>Select a macro name:</source>
       <translation>选择一个宏名称:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6829" />
+      <location filename="../QScintilla/Editor.py" line="6831" />
       <source>Load macro file</source>
       <translation>输入宏文件</translation>
     </message>
     <message>
+      <location filename="../QScintilla/Editor.py" line="6875" />
+      <location filename="../QScintilla/Editor.py" line="6833" />
+      <source>Macro files (*.macro)</source>
+      <translation>宏文件 (*.macro)</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6853" />
+      <location filename="../QScintilla/Editor.py" line="6844" />
+      <source>Error loading macro</source>
+      <translation>载入宏文件出错</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6845" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="6854" />
+      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../QScintilla/Editor.py" line="6873" />
-      <location filename="../QScintilla/Editor.py" line="6831" />
-      <source>Macro files (*.macro)</source>
-      <translation>宏文件 (*.macro)</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6851" />
-      <location filename="../QScintilla/Editor.py" line="6842" />
-      <source>Error loading macro</source>
-      <translation>载入宏文件出错</translation>
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6843" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6852" />
-      <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; is corrupt.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../QScintilla/Editor.py" line="6871" />
       <source>Save macro file</source>
       <translation>保存宏文件</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6888" />
+      <location filename="../QScintilla/Editor.py" line="6890" />
       <source>Save macro</source>
       <translation>保存宏</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6889" />
+      <location filename="../QScintilla/Editor.py" line="6891" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;宏文件 &lt;b&gt;{0}&lt;/b&gt; 已经存在。是否覆盖?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6902" />
+      <location filename="../QScintilla/Editor.py" line="6904" />
       <source>Error saving macro</source>
       <translation>保存宏出错</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6903" />
+      <location filename="../QScintilla/Editor.py" line="6905" />
       <source>&lt;p&gt;The macro file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6915" />
+      <location filename="../QScintilla/Editor.py" line="6917" />
       <source>Start Macro Recording</source>
       <translation>开始宏录制</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6916" />
+      <location filename="../QScintilla/Editor.py" line="6918" />
       <source>Macro recording is already active. Start new?</source>
       <translation>宏录制已激活。开始录制新宏?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6941" />
+      <location filename="../QScintilla/Editor.py" line="6943" />
       <source>Macro Recording</source>
       <translation>宏录制</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="6942" />
+      <location filename="../QScintilla/Editor.py" line="6944" />
       <source>Enter name of the macro:</source>
       <translation>输入宏名称:</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7093" />
+      <location filename="../QScintilla/Editor.py" line="7095" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; has been changed while it was opened in eric. Reread it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7099" />
+      <location filename="../QScintilla/Editor.py" line="7101" />
       <source>&lt;br&gt;&lt;b&gt;Warning:&lt;/b&gt; You will lose your changes upon reopening it.</source>
       <translation>&lt;br&gt;&lt;b&gt;警告:&lt;/b&gt;您在重新打开时将丢失所有更改。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7105" />
+      <location filename="../QScintilla/Editor.py" line="7107" />
       <source>File changed</source>
       <translation>文件已改变</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7158" />
+      <location filename="../QScintilla/Editor.py" line="7160" />
       <source>{0} (ro)</source>
       <translation>{0}(只读)</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7455" />
+      <location filename="../QScintilla/Editor.py" line="7457" />
       <source>Drop Error</source>
       <translation>降落误差</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7456" />
+      <location filename="../QScintilla/Editor.py" line="7458" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; 不是一个文件。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7474" />
+      <location filename="../QScintilla/Editor.py" line="7476" />
       <source>Resources</source>
       <translation>资源</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7477" />
-      <source>Add file...</source>
-      <translation>添加文件…</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7479" />
-      <source>Add files...</source>
+      <source>Add file...</source>
       <translation>添加文件…</translation>
     </message>
     <message>
       <location filename="../QScintilla/Editor.py" line="7481" />
+      <source>Add files...</source>
+      <translation>添加文件…</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7483" />
       <source>Add aliased file...</source>
       <translation>添加别名文件…</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7484" />
+      <location filename="../QScintilla/Editor.py" line="7486" />
       <source>Add localized resource...</source>
       <translation>添加本地资源…</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7488" />
+      <location filename="../QScintilla/Editor.py" line="7490" />
       <source>Add resource frame</source>
       <translation>添加资源结构</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7508" />
+      <location filename="../QScintilla/Editor.py" line="7510" />
       <source>Add file resource</source>
       <translation>添加文件资源</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7524" />
+      <location filename="../QScintilla/Editor.py" line="7526" />
       <source>Add file resources</source>
       <translation>添加多个文件资源</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7551" />
-      <location filename="../QScintilla/Editor.py" line="7544" />
+      <location filename="../QScintilla/Editor.py" line="7553" />
+      <location filename="../QScintilla/Editor.py" line="7546" />
       <source>Add aliased file resource</source>
       <translation>添加别名文件资源</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7552" />
+      <location filename="../QScintilla/Editor.py" line="7554" />
       <source>Alias for file &lt;b&gt;{0}&lt;/b&gt;:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7617" />
+      <location filename="../QScintilla/Editor.py" line="7619" />
       <source>Package Diagram</source>
       <translation>程序包图</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7618" />
+      <location filename="../QScintilla/Editor.py" line="7620" />
       <source>Include class attributes?</source>
       <translation>包含类属性?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7636" />
+      <location filename="../QScintilla/Editor.py" line="7638" />
       <source>Imports Diagram</source>
       <translation>引用图</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7637" />
+      <location filename="../QScintilla/Editor.py" line="7639" />
       <source>Include imports from external modules?</source>
       <translation>从外部模块包含引用?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7650" />
+      <location filename="../QScintilla/Editor.py" line="7652" />
       <source>Application Diagram</source>
       <translation>应用程序图</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7651" />
+      <location filename="../QScintilla/Editor.py" line="7653" />
       <source>Include module names?</source>
       <translation>包含模块名?</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="7980" />
-      <source>Add to dictionary</source>
-      <translation>添加到文件夹</translation>
-    </message>
-    <message>
       <location filename="../QScintilla/Editor.py" line="7982" />
+      <source>Add to dictionary</source>
+      <translation>添加到文件夹</translation>
+    </message>
+    <message>
+      <location filename="../QScintilla/Editor.py" line="7984" />
       <source>Ignore All</source>
       <translation>全部忽略</translation>
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8396" />
+      <location filename="../QScintilla/Editor.py" line="8398" />
       <source>Sort Lines</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8397" />
+      <location filename="../QScintilla/Editor.py" line="8399" />
       <source>The selection contains illegal data for a numerical sort.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8487" />
+      <location filename="../QScintilla/Editor.py" line="8489" />
       <source>Register Mouse Click Handler</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8488" />
+      <location filename="../QScintilla/Editor.py" line="8490" />
       <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8581" />
+      <location filename="../QScintilla/Editor.py" line="8583" />
       <source>{0:4d}    {1}</source>
       <comment>line number, source code</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8586" />
+      <location filename="../QScintilla/Editor.py" line="8588" />
       <source>{0:4d}    {1}
     =&gt;  {2}</source>
       <comment>line number, source code, file name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8651" />
+      <location filename="../QScintilla/Editor.py" line="8653" />
       <source>EditorConfig Properties</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/Editor.py" line="8652" />
+      <location filename="../QScintilla/Editor.py" line="8654" />
       <source>&lt;p&gt;The EditorConfig properties for file &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -65645,12 +65736,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="139" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="101" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="102" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
+      <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="122" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="118" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="119" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="123" />
+      <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="181" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="140" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="182" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">请您先打开或创建一个文件。</translation>
     </message>
@@ -65658,22 +65781,27 @@
   <context>
     <name>SetupWizardDialog</name>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="444" />
-      <source>Add Scripts</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="446" />
-      <source>Python Files (*.py);;All Files(*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="483" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="98" />
+      <source>Plain Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="99" />
+      <source>Markdown</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="100" />
+      <source>reStructuredText</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="905" />
       <source>Add Python Modules</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="485" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py" line="907" />
       <source>Python Files (*.py)</source>
       <translation type="unfinished" />
     </message>
@@ -65816,6 +65944,17 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Python Version:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the Python version specifier</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Description</source>
       <translation type="unfinished">描述</translation>
     </message>
@@ -65831,11 +65970,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Description:</source>
-      <translation type="unfinished">描述:</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Enter the description of the package or files (one per line) to get it from.</source>
       <translation type="unfinished" />
     </message>
@@ -65851,6 +65985,11 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Content Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Keywords:</source>
       <translation type="unfinished" />
     </message>
@@ -65876,6 +66015,68 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Download URL:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Enter the download URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Project URLs:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">名称</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to delete the selected URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Delete</source>
+      <translation type="unfinished">删除</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add a project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">添加…</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected project URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">编辑…</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>License</source>
       <translation type="unfinished" />
     </message>
@@ -65953,13 +66154,6 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Delete</source>
-      <translation type="unfinished">删除</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
       <source>Press to add the pattern</source>
       <translation type="unfinished" />
     </message>
@@ -65995,18 +66189,27 @@
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add...</source>
-      <translation type="unfinished">添加…</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Scripts</source>
+      <source>Entry Points</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
-      <source>Add script files via a files selection dialog</source>
+      <source>Type</source>
+      <translation type="unfinished">类型</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Script Function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to add an entry point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui" line="0" />
+      <source>Press to open a dialog to edit the selected entry point</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -66019,6 +66222,10 @@
       <source>Populate from Project</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <source>Description:</source>
+      <translation type="vanished">描述:</translation>
+    </message>
   </context>
   <context>
     <name>Shell</name>

eric ide

mercurial