eric7/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py

branch
eric7
changeset 8757
23b2fe1cd863
parent 8501
7b5f10581c35
child 8838
60ce5c218f0c
equal deleted inserted replaced
8756:8bea096a0f24 8757:23b2fe1cd863
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))

eric ide

mercurial