src/eric7/UI/UserInterface.py

branch
eric7-maintenance
changeset 10817
cbdafa2fc879
parent 10815
b8631a4fb2f0
parent 10816
236d97cba7c5
child 10873
4e8e63df7893
--- a/src/eric7/UI/UserInterface.py	Wed Jul 03 09:23:38 2024 +0200
+++ b/src/eric7/UI/UserInterface.py	Wed Jul 03 10:39:16 2024 +0200
@@ -24,7 +24,6 @@
 from PyQt6.QtCore import (
     PYQT_VERSION_STR,
     QDate,
-    QObject,
     QProcess,
     QSize,
     Qt,
@@ -65,6 +64,7 @@
 from eric7.Debugger.DebugServer import DebugServer
 from eric7.Debugger.DebugUI import DebugUI
 from eric7.EricCore import EricFileSystemWatcher
+from eric7.EricCore.EricStdRedirector import EricStdRedirector
 from eric7.EricGui import EricPixmapCache
 from eric7.EricGui.EricAction import EricAction, createActionGroup
 from eric7.EricNetwork.EricNetworkIcon import EricNetworkIcon
@@ -115,92 +115,6 @@
     SSL_AVAILABLE = False
 
 
-class Redirector(QObject):
-    """
-    Helper class used to redirect stdout and stderr to the log window.
-
-    @signal appendStderr(str) emitted to write data to stderr logger
-    @signal appendStdout(str) emitted to write data to stdout logger
-    """
-
-    appendStderr = pyqtSignal(str)
-    appendStdout = pyqtSignal(str)
-
-    def __init__(self, stderr, parent=None):
-        """
-        Constructor
-
-        @param stderr flag indicating stderr is being redirected
-        @type bool
-        @param parent reference to the parent object
-        @type QObject
-        """
-        super().__init__(parent)
-        self.stderr = stderr
-        self.buffer = ""
-
-    def __nWrite(self, n):
-        """
-        Private method used to write data.
-
-        @param n max number of bytes to write
-        @type int
-        """
-        if n:
-            line = self.buffer[:n]
-            if self.stderr:
-                self.appendStderr.emit(line)
-            else:
-                self.appendStdout.emit(line)
-            self.buffer = self.buffer[n:]
-
-    def __bufferedWrite(self):
-        """
-        Private method returning number of characters to write.
-
-        @return number of characters buffered or length of buffered line
-        @rtype int
-        """
-        return self.buffer.rfind("\n") + 1
-
-    def flush(self):
-        """
-        Public method used to flush the buffered data.
-        """
-        self.__nWrite(len(self.buffer))
-
-    def write(self, s):
-        """
-        Public method used to write data.
-
-        @param s data to be written (it must support the str-method)
-        @type Any
-        """
-        self.buffer += str(s)
-        self.__nWrite(self.__bufferedWrite())
-
-    def isatty(self):
-        """
-        Public method to indicate a tty.
-
-        Note: This always reports 'False'.
-
-        @return flag indicating a tty
-        @rtype bool
-        """
-        return False
-
-    @property
-    def encoding(self):
-        """
-        Public method to report the used encoding.
-
-        @return used encoding
-        @rtype str
-        """
-        return Preferences.getSystem("IOEncoding")
-
-
 class UserInterfaceSide(enum.Enum):
     """
     Class defining the supported sides of the user interface.
@@ -341,10 +255,10 @@
         logging.getLogger(__name__).debug("Initializing Basic Services...")
 
         # Generate the redirection helpers
-        self.stdout = Redirector(False, self)
-        self.stdout.appendStdout.connect(self.appendToStdout)
-        self.stderr = Redirector(True, self)
-        self.stderr.appendStderr.connect(self.appendToStderr)
+        self.stdout = EricStdRedirector(False, self)
+        self.stdout.stdoutString.connect(self.appendToStdout)
+        self.stderr = EricStdRedirector(True, self)
+        self.stderr.stderrString.connect(self.appendToStderr)
         # Redirect sys.stdout and/or sys.stderr if those are None
         if sys.stdout is None or UserInterface.ReleaseMode:
             sys.stdout = self.stdout

eric ide

mercurial