eric6/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py

changeset 7370
5fb53279f2df
parent 7360
9190402e4505
child 7533
88261c96484b
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Wed Jan 08 19:13:57 2020 +0100
+++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Mon Jan 13 19:23:08 2020 +0100
@@ -8,13 +8,12 @@
 process.
 """
 
-
 import os
 
-from PyQt5.QtCore import pyqtSlot, Qt, QProcess, QTimer, QSize
+from PyQt5.QtCore import pyqtSlot, Qt, QSize
 from PyQt5.QtGui import QTextCursor
 from PyQt5.QtWidgets import (
-    QWidget, QDialogButtonBox, QMenu, QHeaderView, QTreeWidgetItem, QLineEdit
+    QWidget, QDialogButtonBox, QMenu, QHeaderView, QTreeWidgetItem
 )
 
 from E5Gui.E5Application import e5App
@@ -27,7 +26,6 @@
 
 import Preferences
 import UI.PixmapCache
-from Globals import strToQByteArray
 
 
 class HgStatusDialog(QWidget, Ui_HgStatusDialog):
@@ -64,13 +62,6 @@
         self.vcs.committed.connect(self.__committed)
         self.__hgClient = self.vcs.getClient()
         self.__mq = mq
-        if self.__hgClient:
-            self.process = None
-        else:
-            self.process = QProcess()
-            self.process.finished.connect(self.__procFinished)
-            self.process.readyReadStandardOutput.connect(self.__readStdout)
-            self.process.readyReadStandardError.connect(self.__readStderr)
         
         self.statusList.headerItem().setText(self.__lastColumn, "")
         self.statusList.header().setSortIndicator(
@@ -212,17 +203,8 @@
         
         @param e close event (QCloseEvent)
         """
-        if self.__hgClient:
-            if self.__hgClient.isExecuting():
-                self.__hgClient.cancel()
-        else:
-            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)
+        if self.__hgClient.isExecuting():
+            self.__hgClient.cancel()
         
         if self.__mq:
             self.vcs.getPlugin().setPreferences(
@@ -353,60 +335,23 @@
             if os.path.splitdrive(repodir)[1] == os.sep:
                 return
         
-        if self.__hgClient:
-            self.inputGroup.setEnabled(False)
-            self.inputGroup.hide()
-            self.refreshButton.setEnabled(False)
-            
-            out, err = self.__hgClient.runcommand(args)
-            if err:
-                self.__showError(err)
-            if out:
-                for line in out.splitlines():
-                    self.__processOutputLine(line)
-                    if self.__hgClient.wasCanceled():
-                        break
-            self.__finish()
-        else:
-            if self.process:
-                self.process.kill()
-            
-            self.process.setWorkingDirectory(repodir)
-            
-            self.process.start('hg', args)
-            procStarted = self.process.waitForStarted(5000)
-            if not procStarted:
-                self.inputGroup.setEnabled(False)
-                self.inputGroup.hide()
-                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.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
-                self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
-                self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
-                
-                self.refreshButton.setEnabled(False)
+        self.refreshButton.setEnabled(False)
+        
+        out, err = self.__hgClient.runcommand(args)
+        if err:
+            self.__showError(err)
+        if out:
+            for line in out.splitlines():
+                self.__processOutputLine(line)
+                if self.__hgClient.wasCanceled():
+                    break
+        self.__finish()
     
     def __finish(self):
         """
         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.refreshButton.setEnabled(True)
         
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
@@ -436,37 +381,10 @@
         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()
+            self.__hgClient.cancel()
         elif button == self.refreshButton:
             self.on_refreshButton_clicked()
     
-    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.__finish()
-    
-    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:
-            self.process.setReadChannel(QProcess.StandardOutput)
-            
-            while self.process.canReadLine():
-                line = str(self.process.readLine(), self.vcs.getEncoding(),
-                           'replace')
-                self.__processOutputLine(line)
-    
     def __processOutputLine(self, line):
         """
         Private method to process the lines of output.
@@ -477,18 +395,6 @@
             status, path = line.strip().split(" ", 1)
             self.__generateItem(status, path)
     
-    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.
@@ -498,61 +404,6 @@
         self.errorGroup.show()
         self.errors.insertPlainText(out)
         self.errors.ensureCursorVisible()
-        
-        if not self.__hgClient:
-            # show input in case the process asked for some input
-            self.inputGroup.setEnabled(True)
-            self.inputGroup.show()
-    
-    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 subversion 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(HgStatusDialog, self).keyPressEvent(evt)
     
     @pyqtSlot()
     def on_refreshButton_clicked(self):

eric ide

mercurial