eric6/Plugins/VcsPlugins/vcsMercurial/HgDialog.py

changeset 7370
5fb53279f2df
parent 7360
9190402e4505
child 7441
f115f4469795
diff -r dbeeed55df08 -r 5fb53279f2df eric6/Plugins/VcsPlugins/vcsMercurial/HgDialog.py
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgDialog.py	Wed Jan 08 19:13:57 2020 +0100
+++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgDialog.py	Mon Jan 13 19:23:08 2020 +0100
@@ -7,21 +7,13 @@
 Module implementing a dialog starting a process and showing its output.
 """
 
-
-import os
-
-from PyQt5.QtCore import (
-    QProcess, QTimer, pyqtSlot, Qt, QCoreApplication, QProcessEnvironment
-)
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QLineEdit
-
-from E5Gui import E5MessageBox
+from PyQt5.QtCore import Qt, QCoreApplication
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
 from .Ui_HgDialog import Ui_HgDialog
 
 import Preferences
 import Utilities
-from Globals import strToQByteArray
 
 
 class HgDialog(QDialog, Ui_HgDialog):
@@ -49,13 +41,8 @@
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
         
-        self.process = None
         self.username = ''
         self.password = ''
-        if useClient:
-            self.__hgClient = hg.getClient()
-        else:
-            self.__hgClient = None
         self.vcs = hg
         
         self.outputGroup.setTitle(text)
@@ -68,19 +55,6 @@
         Private slot called when the process finished or the user pressed
         the button.
         """
-        if (
-            self.process is not None and
-            self.process.state() != QProcess.NotRunning
-        ):
-            self.process.terminate()
-            QTimer.singleShot(2000, self.process.kill)
-            self.process.waitForFinished(3000)
-        
-        self.inputGroup.setEnabled(False)
-        self.inputGroup.hide()
-        
-        self.process = None
-        
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
         self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
@@ -103,20 +77,7 @@
         if button == self.buttonBox.button(QDialogButtonBox.Close):
             self.close()
         elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
-            if self.__hgClient:
-                self.__hgClient.cancel()
-            else:
-                self.__finish()
-    
-    def __procFinished(self, exitCode, exitStatus):
-        """
-        Private slot connected to the finished signal.
-        
-        @param exitCode exit code of the process (integer)
-        @param exitStatus exit status of the process (QProcess.ExitStatus)
-        """
-        self.normal = (exitStatus == QProcess.NormalExit) and (exitCode == 0)
-        self.__finish()
+            self.vcs.getClient().cancel()
     
     def startProcess(self, args, workingDir=None, showArgs=True,
                      environment=None):
@@ -132,7 +93,6 @@
         """
         self.errorGroup.hide()
         self.normal = False
-        self.intercept = False
         
         self.__hasAddOrDelete = False
         if (
@@ -150,53 +110,19 @@
             self.resultbox.append(' '.join(args))
             self.resultbox.append('')
         
-        if self.__hgClient is None:
-            self.process = QProcess()
-            if environment:
-                env = QProcessEnvironment.systemEnvironment()
-                for key, value in environment.items():
-                    env.insert(key, value)
-                self.process.setProcessEnvironment(env)
-            
-            self.process.finished.connect(self.__procFinished)
-            self.process.readyReadStandardOutput.connect(self.__readStdout)
-            self.process.readyReadStandardError.connect(self.__readStderr)
-            
-            if workingDir:
-                self.process.setWorkingDirectory(workingDir)
-            self.process.start('hg', args)
-            procStarted = self.process.waitForStarted(5000)
-            if not procStarted:
-                self.buttonBox.setFocus()
-                self.inputGroup.setEnabled(False)
-                E5MessageBox.critical(
-                    self,
-                    self.tr('Process Generation Error'),
-                    self.tr(
-                        'The process {0} could not be started. '
-                        'Ensure, that it is in the search path.'
-                    ).format('hg'))
-            else:
-                self.inputGroup.setEnabled(True)
-                self.inputGroup.show()
-            return procStarted
-        else:
-            self.inputGroup.setEnabled(False)
-            self.inputGroup.hide()
-            
-            out, err = self.__hgClient.runcommand(
-                args, output=self.__showOutput, error=self.__showError)
-            
-            if err:
-                self.__showError(err)
-            if out:
-                self.__showOutput(out)
-            
-            self.normal = True
-            
-            self.__finish()
-            
-            return True
+        out, err = self.vcs.getClient().runcommand(
+            args, output=self.__showOutput, error=self.__showError)
+        
+        if err:
+            self.__showError(err)
+        if out:
+            self.__showOutput(out)
+        
+        self.normal = True
+        
+        self.__finish()
+        
+        return True
     
     def normalExit(self):
         """
@@ -215,19 +141,6 @@
         """
         return self.normal and self.errors.toPlainText() == ""
     
-    def __readStdout(self):
-        """
-        Private slot to handle the readyReadStandardOutput signal.
-        
-        It reads the output of the process, formats it and inserts it into
-        the contents pane.
-        """
-        if self.process is not None:
-            s = str(self.process.readAllStandardOutput(),
-                    self.vcs.getEncoding(),
-                    'replace')
-            self.__showOutput(s)
-    
     def __showOutput(self, out):
         """
         Private slot to show some output.
@@ -246,19 +159,6 @@
         
         QCoreApplication.processEvents()
     
-    def __readStderr(self):
-        """
-        Private slot to handle the readyReadStandardError signal.
-        
-        It reads the error output of the process and inserts it into the
-        error pane.
-        """
-        if self.process is not None:
-            s = str(self.process.readAllStandardError(),
-                    self.vcs.getEncoding(),
-                    'replace')
-            self.__showError(s)
-    
     def __showError(self, out):
         """
         Private slot to show some error.
@@ -271,56 +171,6 @@
         
         QCoreApplication.processEvents()
     
-    def on_passwordCheckBox_toggled(self, isOn):
-        """
-        Private slot to handle the password checkbox toggled.
-        
-        @param isOn flag indicating the status of the check box (boolean)
-        """
-        if isOn:
-            self.input.setEchoMode(QLineEdit.Password)
-        else:
-            self.input.setEchoMode(QLineEdit.Normal)
-    
-    @pyqtSlot()
-    def on_sendButton_clicked(self):
-        """
-        Private slot to send the input to the Mercurial process.
-        """
-        inputTxt = self.input.text()
-        inputTxt += os.linesep
-        
-        if self.passwordCheckBox.isChecked():
-            self.errors.insertPlainText(os.linesep)
-            self.errors.ensureCursorVisible()
-        else:
-            self.errors.insertPlainText(inputTxt)
-            self.errors.ensureCursorVisible()
-        
-        self.process.write(strToQByteArray(inputTxt))
-        
-        self.passwordCheckBox.setChecked(False)
-        self.input.clear()
-    
-    def on_input_returnPressed(self):
-        """
-        Private slot to handle the press of the return key in the input field.
-        """
-        self.intercept = True
-        self.on_sendButton_clicked()
-    
-    def keyPressEvent(self, evt):
-        """
-        Protected slot to handle a key press event.
-        
-        @param evt the key press event (QKeyEvent)
-        """
-        if self.intercept:
-            self.intercept = False
-            evt.accept()
-            return
-        super(HgDialog, self).keyPressEvent(evt)
-    
     def hasAddOrDelete(self):
         """
         Public method to check, if the last action contained an add or delete.

eric ide

mercurial