--- 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.