MqttMonitor/MqttMonitorWidget.py

changeset 48
41dd2bfee4e4
parent 47
185fac480ed2
child 50
8e9e83221c15
diff -r 185fac480ed2 -r 41dd2bfee4e4 MqttMonitor/MqttMonitorWidget.py
--- a/MqttMonitor/MqttMonitorWidget.py	Wed Sep 12 19:36:33 2018 +0200
+++ b/MqttMonitor/MqttMonitorWidget.py	Wed Sep 12 19:59:06 2018 +0200
@@ -72,12 +72,10 @@
         self.__messagesQosFormat.setFontItalic(True)
         
         self.__isAlternate = False
-        self.__followLatestMessage = True
         
         # TODO: Messages Edit improvements:
-        #   1. add check box for self.__followLatestMessage
-        #   2. add capability to search
-        #   3. add capability to save contents to a file
+        #   1. add capability to search
+        #   2. add capability to save contents to a file
         
         for logLevel in (MqttClient.LogDisabled,
                          MqttClient.LogDebug,
@@ -91,9 +89,8 @@
             self.logLevelComboBox.count() - 1)
         
         # TODO: Log Edit improvements:
-        #   1. add check box for self.__followLatestLogMessage
-        #   2. add capability to search
-        #   3. add configuration capability for colors
+        #   1. add capability to search
+        #   2. add configuration capability for colors
         
         self.__logMessagesBackgrounds = {
             MqttClient.LogDebug: QBrush(Qt.white),
@@ -104,7 +101,6 @@
             MqttClient.LogDisabled: QBrush(Qt.magenta)
             # reuse LogDisabled for unknown log levels
         }
-        self.__followLatestLogMessage = True
         
         self.brokerWidget.setCurrentIndex(0)
         
@@ -292,6 +288,8 @@
             # always show unknown log levels
             pass
         
+        scrollbarValue = self.logEdit.verticalScrollBar().value()
+        
         textCursor = self.logEdit.textCursor()
         if not self.logEdit.document().isEmpty():
             textCursor.movePosition(QTextCursor.End)
@@ -311,8 +309,11 @@
         
         txt = self.tr("{0}: {1}").format(mqttLogLevelString(level), message)
         self.logEdit.insertPlainText(Utilities.filterAnsiSequences(txt))
-        if self.__followLatestLogMessage:
+        
+        if self.followLogMessagesCheckBox.isChecked():
             self.logEdit.ensureCursorVisible()
+        else:
+            self.logEdit.verticalScrollBar().setValue(scrollbarValue)
     
     @pyqtSlot(str, bytes, int, bool)
     def __messageReceived(self, topic, payload, qos, retain):
@@ -749,6 +750,8 @@
         @param qos quality of service indicator (0, 1, 2)
         @type int
         """
+        scrollbarValue = self.messagesEdit.verticalScrollBar().value()
+        
         textCursor = self.messagesEdit.textCursor()
         if not self.messagesEdit.document().isEmpty():
             textCursor.movePosition(QTextCursor.End)
@@ -777,8 +780,10 @@
         self.messagesEdit.insertPlainText(
             Utilities.filterAnsiSequences(payloadStr))
         
-        if self.__followLatestMessage:
+        if self.followMessagesCheckBox.isChecked():
             self.messagesEdit.ensureCursorVisible()
+        else:
+            self.messagesEdit.verticalScrollBar().setValue(scrollbarValue)
         
         self.__isAlternate = not self.__isAlternate
     

eric ide

mercurial