eric7/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py

branch
eric7
changeset 8465
59bb8fdeef1b
parent 8318
962bce857696
child 8522
4f263b89a293
diff -r 9058a129177e -r 59bb8fdeef1b eric7/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py	Sun Jul 11 15:17:16 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py	Sun Jul 11 16:29:12 2021 +0200
@@ -7,12 +7,18 @@
 Module implementing the Mercurial configuration page.
 """
 
+import os
+import sys
+
 from PyQt6.QtCore import pyqtSlot
 
+from EricWidgets.EricApplication import ericApp
+
 from Preferences.ConfigurationPages.ConfigurationPageBase import (
     ConfigurationPageBase
 )
 from .Ui_MercurialPage import Ui_MercurialPage
+from .. import HgUtilities
 
 from Utilities import supportedCodecs
 
@@ -36,6 +42,8 @@
         self.encodingComboBox.addItems(sorted(supportedCodecs))
         self.encodingModeComboBox.addItems(["strict", "ignore", "replace"])
         
+        self.installButton.setEnabled(not self.__mercurialInstalled())
+        
         # set initial values
         # global options
         index = self.encodingComboBox.findText(
@@ -121,3 +129,20 @@
         
         dlg = HgUserConfigDialog(version=hgVersion(self.__plugin)[1])
         dlg.exec()
+    
+    @pyqtSlot()
+    def on_installButton_clicked(self):
+        """
+        Private slot to install Mercurial alongside eric7.
+        """
+        pip = ericApp().getObject("Pip")
+        pip.installPackages(["mercurial"], interpreter=sys.executable)
+        self.installButton.setEnabled(not self.__mercurialInstalled())
+    
+    def __mercurialInstalled(self):
+        """
+        Private method to check, if mercurial is installed alongside eric7.
+        """
+        hg = HgUtilities.getHgExecutable()
+        # assume local installation, if the path is absolute
+        return os.path.isabs(hg)

eric ide

mercurial