16 ) |
16 ) |
17 from PyQt6.QtNetwork import QNetworkRequest, QNetworkReply |
17 from PyQt6.QtNetwork import QNetworkRequest, QNetworkReply |
18 |
18 |
19 from EricWidgets.EricApplication import ericApp |
19 from EricWidgets.EricApplication import ericApp |
20 from EricWidgets import EricMessageBox, EricFileDialog |
20 from EricWidgets import EricMessageBox, EricFileDialog |
21 from EricWidgets.EricCompleters import EricDirCompleter |
21 from EricWidgets.EricPathPicker import EricPathPickerModes |
22 |
22 |
23 from .Ui_SetupWizardDialog import Ui_SetupWizardDialog |
23 from .Ui_SetupWizardDialog import Ui_SetupWizardDialog |
24 |
24 |
25 import UI.PixmapCache |
|
26 import Utilities |
25 import Utilities |
27 import Preferences |
26 import Preferences |
28 |
27 |
29 |
28 |
30 class SetupWizardDialog(QDialog, Ui_SetupWizardDialog): |
29 class SetupWizardDialog(QDialog, Ui_SetupWizardDialog): |
31 """ |
30 """ |
32 Class implementing the setup.py wizard dialog. |
31 Class implementing the setup.py wizard dialog. |
33 |
32 |
34 It displays a dialog for entering the parameters |
33 It displays a dialog for entering the parameters for the setup.py code |
35 for the EricMessageBox code generator. |
34 generator. |
36 """ |
35 """ |
37 ClassifiersUrl = "https://pypi.org/pypi?%3Aaction=list_classifiers" |
36 ClassifiersUrl = "https://pypi.org/pypi?%3Aaction=list_classifiers" |
38 |
37 |
39 def __init__(self, parent=None): |
38 def __init__(self, parent=None): |
40 """ |
39 """ |
47 |
46 |
48 self.__replies = [] |
47 self.__replies = [] |
49 |
48 |
50 self.dataTabWidget.setCurrentIndex(0) |
49 self.dataTabWidget.setCurrentIndex(0) |
51 |
50 |
52 self.__packageDirCompleter = EricDirCompleter(self.packageEdit) |
51 self.packageRootPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
53 self.__packageRootDirCompleter = EricDirCompleter(self.packageRootEdit) |
52 self.sourceDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
54 self.__sourceDirCompleter = EricDirCompleter(self.sourceDirectoryEdit) |
|
55 |
|
56 self.packageRootDirButton.setIcon(UI.PixmapCache.getIcon("open")) |
|
57 self.packageDirButton.setIcon(UI.PixmapCache.getIcon("open")) |
|
58 self.sourceDirectoryButton.setIcon(UI.PixmapCache.getIcon("open")) |
|
59 |
53 |
60 self.__mandatoryStyleSheet = "QLineEdit {border: 2px solid;}" |
54 self.__mandatoryStyleSheet = "QLineEdit {border: 2px solid;}" |
61 for lineEdit in [self.nameEdit, self.versionEdit, |
55 for lineEdit in [self.nameEdit, self.versionEdit, |
62 self.homePageUrlEdit, self.authorEdit, |
56 self.homePageUrlEdit, self.authorEdit, |
63 self.authorEmailEdit, self.maintainerEdit, |
57 self.authorEmailEdit, self.maintainerEdit, |
70 QDialogButtonBox.StandardButton.Ok) |
64 QDialogButtonBox.StandardButton.Ok) |
71 self.__okButton.setEnabled(False) |
65 self.__okButton.setEnabled(False) |
72 |
66 |
73 projectOpen = ericApp().getObject("Project").isOpen() |
67 projectOpen = ericApp().getObject("Project").isOpen() |
74 self.projectButton.setEnabled(projectOpen) |
68 self.projectButton.setEnabled(projectOpen) |
75 self.autodiscoverPackagesButton.setEnabled(projectOpen) |
|
76 |
69 |
77 self.homePageUrlEdit.textChanged.connect(self.__enableOkButton) |
70 self.homePageUrlEdit.textChanged.connect(self.__enableOkButton) |
78 self.nameEdit.textChanged.connect(self.__enableOkButton) |
71 self.nameEdit.textChanged.connect(self.__enableOkButton) |
79 self.versionEdit.textChanged.connect(self.__enableOkButton) |
72 self.versionEdit.textChanged.connect(self.__enableOkButton) |
80 self.authorEdit.textChanged.connect(self.__enableOkButton) |
73 self.authorEdit.textChanged.connect(self.__enableOkButton) |
384 code += '{0}keywords="{1}",{2}'.format( |
377 code += '{0}keywords="{1}",{2}'.format( |
385 istring, self.keywordsEdit.text(), os.linesep) |
378 istring, self.keywordsEdit.text(), os.linesep) |
386 |
379 |
387 code += '{0}packages=find_packages('.format(istring) |
380 code += '{0}packages=find_packages('.format(istring) |
388 src = Utilities.fromNativeSeparators( |
381 src = Utilities.fromNativeSeparators( |
389 self.sourceDirectoryEdit.text()) |
382 self.sourceDirectoryPicker.text()) |
390 excludePatterns = [] |
383 excludePatterns = [] |
391 for row in range(self.excludePatternList.count()): |
384 for row in range(self.excludePatternList.count()): |
392 excludePatterns.append( |
385 excludePatterns.append( |
393 self.excludePatternList.item(row).text()) |
386 self.excludePatternList.item(row).text()) |
394 if src: |
387 if src: |
463 "." |
456 "." |
464 ) |
457 ) |
465 self.summaryEdit.setText(summary) |
458 self.summaryEdit.setText(summary) |
466 self.descriptionEdit.setPlainText(description) |
459 self.descriptionEdit.setPlainText(description) |
467 |
460 |
468 self.packageRootEdit.setText(project.getProjectPath()) |
461 self.packageRootPicker.setText(project.getProjectPath()) |
469 |
462 |
470 # prevent overwriting of entries by disabling the button |
463 # prevent overwriting of entries by disabling the button |
471 self.projectButton.setEnabled(False) |
464 self.projectButton.setEnabled(False) |
472 |
|
473 @pyqtSlot() |
|
474 def on_packageRootDirButton_clicked(self): |
|
475 """ |
|
476 Private slot to select the packages root directory via a |
|
477 directory selection dialog. |
|
478 """ |
|
479 startDir = self.packageRootEdit.text() |
|
480 if not startDir: |
|
481 startDir = self.__getStartDir() |
|
482 packagesRootDir = EricFileDialog.getExistingDirectory( |
|
483 self, |
|
484 self.tr("Packages Root Directory"), |
|
485 Utilities.fromNativeSeparators(startDir), |
|
486 EricFileDialog.ShowDirsOnly) |
|
487 if packagesRootDir: |
|
488 self.packageRootEdit.setText( |
|
489 Utilities.toNativeSeparators(packagesRootDir)) |
|
490 |
|
491 @pyqtSlot(str) |
|
492 def on_packageRootEdit_textChanged(self, txt): |
|
493 """ |
|
494 Private slot handling the entering of a packages root. |
|
495 |
|
496 @param txt text of the line edit (string) |
|
497 """ |
|
498 projectOpen = ericApp().getObject("Project").isOpen() |
|
499 validPackagesRoot = bool(txt) and os.path.exists(txt) |
|
500 self.autodiscoverPackagesButton.setEnabled( |
|
501 projectOpen or validPackagesRoot) |
|
502 |
465 |
503 def __getStartDir(self): |
466 def __getStartDir(self): |
504 """ |
467 """ |
505 Private method to get the start directory for selection dialogs. |
468 Private method to get the start directory for selection dialogs. |
506 |
469 |
531 @pyqtSlot() |
494 @pyqtSlot() |
532 def on_addScriptButton_clicked(self): |
495 def on_addScriptButton_clicked(self): |
533 """ |
496 """ |
534 Private slot to add scripts to the list. |
497 Private slot to add scripts to the list. |
535 """ |
498 """ |
536 startDir = self.packageRootEdit.text() or self.__getStartDir() |
499 startDir = self.packageRootPicker.text() or self.__getStartDir() |
537 scriptsList = EricFileDialog.getOpenFileNames( |
500 scriptsList = EricFileDialog.getOpenFileNames( |
538 self, |
501 self, |
539 self.tr("Add Scripts"), |
502 self.tr("Add Scripts"), |
540 startDir, |
503 startDir, |
541 self.tr("Python Files (*.py);;All Files(*)")) |
504 self.tr("Python Files (*.py);;All Files(*)")) |
570 @pyqtSlot() |
533 @pyqtSlot() |
571 def on_addModuleButton_clicked(self): |
534 def on_addModuleButton_clicked(self): |
572 """ |
535 """ |
573 Private slot to add Python modules to the list. |
536 Private slot to add Python modules to the list. |
574 """ |
537 """ |
575 startDir = self.packageRootEdit.text() or self.__getStartDir() |
538 startDir = self.packageRootPicker.text() or self.__getStartDir() |
576 modulesList = EricFileDialog.getOpenFileNames( |
539 modulesList = EricFileDialog.getOpenFileNames( |
577 self, |
540 self, |
578 self.tr("Add Python Modules"), |
541 self.tr("Add Python Modules"), |
579 startDir, |
542 startDir, |
580 self.tr("Python Files (*.py)")) |
543 self.tr("Python Files (*.py)")) |
635 """ |
598 """ |
636 Private slot handling a press of the return button of the |
599 Private slot handling a press of the return button of the |
637 exclude pattern edit. |
600 exclude pattern edit. |
638 """ |
601 """ |
639 self.on_addExludePatternButton_clicked() |
602 self.on_addExludePatternButton_clicked() |
640 |
|
641 @pyqtSlot() |
|
642 def on_sourceDirectoryButton_clicked(self): |
|
643 """ |
|
644 Private slot to select the packages root directory via a |
|
645 directory selection dialog. |
|
646 """ |
|
647 startDir = self.sourceDirectoryEdit.text() or self.__getStartDir() |
|
648 sourceDirectory = EricFileDialog.getExistingDirectory( |
|
649 self, |
|
650 self.tr("Source Directory"), |
|
651 Utilities.fromNativeSeparators(startDir), |
|
652 EricFileDialog.ShowDirsOnly) |
|
653 if sourceDirectory: |
|
654 self.sourceDirectoryEdit.setText( |
|
655 Utilities.toNativeSeparators(sourceDirectory)) |
|