--- a/eric6/PluginManager/PluginRepositoryDialog.py Mon Jul 01 19:20:10 2019 +0200 +++ b/eric6/PluginManager/PluginRepositoryDialog.py Tue Jul 02 19:33:49 2019 +0200 @@ -97,11 +97,13 @@ self.__downloadInstallButton.setEnabled(False) self.__downloadCancelButton = self.buttonBox.addButton( self.tr("Cancel"), QDialogButtonBox.ActionRole) + self.__downloadCancelButton.setEnabled(False) self.__installButton = \ self.buttonBox.addButton(self.tr("Close && Install"), QDialogButtonBox.ActionRole) - self.__downloadCancelButton.setEnabled(False) self.__installButton.setEnabled(False) + self.__closeButton = self.buttonBox.button(QDialogButtonBox.Close) + self.__closeButton.setEnabled(True) self.repositoryUrlEdit.setText( Preferences.getUI("PluginRepositoryUrl6")) @@ -227,6 +229,21 @@ # join lines by a blank return ' '.join(newlines) + def __changeScheme(self, url, newScheme=""): + """ + Private method to change the scheme of the given URL. + + @param url URL to be modified + @type str + @param newScheme scheme to be set for the given URL + @return modified URL + @rtype str + """ + if not newScheme: + newScheme = self.repositoryUrlEdit.text().split("//", 1)[0] + + return newScheme + "//" + url.split("//", 1)[1] + @pyqtSlot(QPoint) def on_repositoryList_customContextMenuRequested(self, pos): """ @@ -253,8 +270,12 @@ if self.__repositoryMissing or current is None: return - self.urlEdit.setText( - current.data(0, PluginRepositoryWidget.UrlRole) or "") + url = current.data(0, PluginRepositoryWidget.UrlRole) + if url is None: + url = "" + else: + url = self.__changeScheme(url) + self.urlEdit.setText(url) self.descriptionEdit.setPlainText( current.data(0, PluginRepositoryWidget.DescrRole) and self.__formatDescription( @@ -341,10 +362,14 @@ self.__downloadButton.setEnabled(False) self.__downloadInstallButton.setEnabled(False) self.__installButton.setEnabled(False) + + newScheme = self.repositoryUrlEdit.text().split("//", 1)[0] for itm in self.repositoryList.selectedItems(): if itm not in [self.__stableItem, self.__unstableItem, self.__unknownItem, self.__obsoleteItem]: - url = itm.data(0, PluginRepositoryWidget.UrlRole) + url = self.__changeScheme( + itm.data(0, PluginRepositoryWidget.UrlRole), + newScheme) filename = os.path.join( Preferences.getPluginManager("DownloadPath"), itm.data(0, PluginRepositoryWidget.FilenameRole)) @@ -357,7 +382,7 @@ """ self.__downloadButton.setEnabled(len(self.__selectedItems())) self.__downloadInstallButton.setEnabled(len(self.__selectedItems())) - self.__installButton.setEnabled(True) + self.__installButton.setEnabled(len(self.__selectedItems())) if not self.__external: ui = e5App().getObject("UserInterface") else: @@ -461,6 +486,7 @@ self.__updateButton.setEnabled(False) self.__downloadButton.setEnabled(False) self.__downloadInstallButton.setEnabled(False) + self.__closeButton.setEnabled(False) self.__downloadCancelButton.setEnabled(True) self.statusLabel.setText(url) @@ -495,6 +521,7 @@ @type func """ self.__updateButton.setEnabled(True) + self.__closeButton.setEnabled(True) self.__downloadCancelButton.setEnabled(False) self.__onlineStateChanged(self.__isOnline())