--- a/MqttMonitor/MqttConnectionOptionsDialog.py Mon Jun 28 17:44:07 2021 +0200 +++ b/MqttMonitor/MqttConnectionOptionsDialog.py Sun Jul 18 18:30:15 2021 +0200 @@ -15,6 +15,8 @@ from .Ui_MqttConnectionOptionsDialog import Ui_MqttConnectionOptionsDialog +from .MqttClient import MqttClient, MqttProtocols + from Utilities.crypto import pwConvert @@ -22,17 +24,15 @@ """ Class implementing a dialog to enter MQTT connection options. """ - def __init__(self, client, options=None, parent=None): + def __init__(self, options=None, parent=None): """ Constructor - @param client reference to the MQTT client object - @type MqttClient @param options dictionary containing the connection options to populate the dialog with. It must have the keys "ClientId", - "Keepalive", "CleanSession", "Username", "Password", "WillTopic", - "WillMessage", "WillQos", "WillRetain", "TlsEnable", "TlsCaCert", - "ConnectionTimeout". + "Protocol", "ConnectionTimeout", "Keepalive", "CleanSession", + "Username", "Password", "WillTopic", "WillMessage", "WillQos", + "WillRetain", "TlsEnable", "TlsCaCert". @type dict @param parent reference to the parent widget @type QWidget @@ -40,8 +40,6 @@ super().__init__(parent) self.setupUi(self) - self.__client = client - self.tlsCertsFilePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) self.tlsCertsFilePicker.setFilters( self.tr("Certificate Files (*.crt *.pem);;All Files (*)")) @@ -106,10 +104,16 @@ @type dict """ if options is None: - options = self.__client.defaultConnectionOptions() + options = MqttClient.defaultConnectionOptions() # general self.clientIdEdit.setText(options["ClientId"]) + self.mqttv31Button.setChecked( + options["Protocol"] == MqttProtocols.MQTTv31) + self.mqttv311Button.setChecked( + options["Protocol"] == MqttProtocols.MQTTv311) + self.mqttv5Button.setChecked( + options["Protocol"] == MqttProtocols.MQTTv5) self.connectionTimeoutSpinBox.setValue(options["ConnectionTimeout"]) self.keepaliveSpinBox.setValue(options["Keepalive"]) self.cleanSessionCheckBox.setChecked(options["CleanSession"]) @@ -133,13 +137,23 @@ Public method get the entered connection options. @return dictionary containing the connection options. It has the keys - "ClientId", "Keepalive", "CleanSession", "Username", "Password", - "WillTopic", "WillMessage", "WillQos", "WillRetain", "TlsEnable", - "TlsCaCert", "ConnectionTimeout". + "ClientId", "Protocol", "ConnectionTimeout", "Keepalive", + "CleanSession", "Username", "Password", "WillTopic", "WillMessage", + "WillQos", "WillRetain", "TlsEnable", "TlsCaCert". @rtype dict """ + if self.mqttv31Button.isChecked(): + protocol = MqttProtocols.MQTTv31 + elif self.mqttv311Button.isChecked(): + protocol = MqttProtocols.MQTTv311 + elif self.mqttv5Button.isChecked(): + protocol = MqttProtocols.MQTTv5 + else: + protocol = MqttProtocols.MQTTv311 + return { "ClientId": self.clientIdEdit.text(), + "Protocol": protocol, "ConnectionTimeout": self.connectionTimeoutSpinBox.value(), "Keepalive": self.keepaliveSpinBox.value(), "CleanSession": self.cleanSessionCheckBox.isChecked(),