eric6/PluginManager/PluginRepositoryDialog.py

changeset 7049
0a8a9bd15242
parent 6949
a5255f1ba3f0
child 7229
53054eb5b15a
--- 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())
         

eric ide

mercurial