MqttMonitor/MqttMonitorWidget.py

changeset 11
90d3ebed4cc0
parent 10
7e0e921dc7ea
child 18
bbfe5866b6aa
child 27
aeb276d76ec7
--- a/MqttMonitor/MqttMonitorWidget.py	Sat Sep 01 20:18:11 2018 +0200
+++ b/MqttMonitor/MqttMonitorWidget.py	Sun Sep 02 18:29:35 2018 +0200
@@ -164,6 +164,8 @@
         self.brokerStatusButton.setEnabled(True)
         
         self.__statusLoadValues.clear()
+        self.__clearBrokerStatusLabels()
+        self.__setBrokerStatusSubscribed(False)
     
     @pyqtSlot(int)
     def __brokerDisconnected(self, rc):
@@ -322,7 +324,11 @@
                 port = 1883
             if host:
                 self.__addBrokerToRecent(host, port)
-                self.__client.connectToServer(host, port=port)
+                if self.__connectionOptions is None:
+                    self.__client.connectToServer(host, port=port)
+                else:
+                    self.__client.connectToServerWithOptions(
+                        host, port=port, options=self.__connectionOptions)
     
     @pyqtSlot(str)
     def on_subscribeTopicEdit_textChanged(self, topic):
@@ -403,6 +409,16 @@
             self.__updatePublishTopicComboBox()
     
     @pyqtSlot()
+    def on_publishClearButton_clicked(self):
+        """
+        Private slot to clear the publish data fields.
+        """
+        self.publishTopicComboBox.clearEditText()
+        self.publishPayloadEdit.clear()
+        self.publishQosSpinBox.setValue(0)
+        self.publishRetainCheckBox.setChecked(False)
+    
+    @pyqtSlot()
     def on_brokerStatusButton_clicked(self):
         """
         Private slot to subscribe or unsubscribe the broker status topic.
@@ -413,20 +429,32 @@
                 MqttMonitorWidget.BrokerStatusTopic)
             if rc == 0:
                 # successfully sent
-                self.__brokerStatusTopicSubscribed = False
-                self.brokerStatusButton.setText(self.tr("Subscribe"))
-                self.brokerStatusButton.setToolTip(
-                    self.tr("Press to activate the status display"))
+                self.__setBrokerStatusSubscribed(False)
         else:
             # subscribe status topic
             rc, _ = self.__client.subscribe(
                 MqttMonitorWidget.BrokerStatusTopic)
             if rc == 0:
                 # successfully sent
-                self.__brokerStatusTopicSubscribed = True
-                self.brokerStatusButton.setText(self.tr("Unsubscribe"))
-                self.brokerStatusButton.setToolTip(
-                    self.tr("Press to deactivate the status display"))
+                self.__setBrokerStatusSubscribed(True)
+    
+    def __setBrokerStatusSubscribed(self, subscribed):
+        """
+        Private method to set the subscription status for the broker status
+        topics.
+        
+        @param subscribed subscription status for the broker status topics
+        @type bool
+        """
+        self.__brokerStatusTopicSubscribed = subscribed
+        if subscribed:
+            self.brokerStatusButton.setText(self.tr("Unsubscribe"))
+            self.brokerStatusButton.setToolTip(
+                self.tr("Press to deactivate the status display"))
+        else:
+            self.brokerStatusButton.setText(self.tr("Subscribe"))
+            self.brokerStatusButton.setToolTip(
+                self.tr("Press to activate the status display"))
     
     #######################################################################
     ## Utility methods
@@ -470,10 +498,10 @@
         else:
             currentPort = 1883
         currentPortStr = "{0:5}".format(currentPort)
-        portsSet = set([b[1] for b in brokerList])
-        portsSet.update([1883, 8883])
+        portsSet = {b[1] for b in brokerList}
+        portsSet.update({1883, 8883})
         self.brokerPortComboBox.addItems(
-            sorted(["{0:5}".format(p) for p in portsSet]))
+            sorted("{0:5}".format(p) for p in portsSet))
         index = self.brokerPortComboBox.findText(currentPortStr)
         self.brokerPortComboBox.setCurrentIndex(index)
     
@@ -559,6 +587,18 @@
             # ignore topics not shown in display
             pass
     
+    def __clearBrokerStatusLabels(self):
+        """
+        Private method to clear the broker status labels.
+        """
+        for statusLabelKey in self.__statusLabelMapping:
+            if statusLabelKey.startswith(
+                    MqttMonitorWidget.BrokerStatusTopicLoadPrefix):
+                label = "- / - / -"
+            else:
+                label = "-"
+            self.__statusLabelMapping[statusLabelKey].setText(label)
+    
     def __loadDefaultDictFactory(self):
         """
         Private method to populate non-existing load items.

eric ide

mercurial