MqttMonitor/MqttConnectionOptionsDialog.py

Wed, 21 Sep 2022 09:42:33 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Sep 2022 09:42:33 +0200
branch
eric7
changeset 123
3d7e63ed4fd1
parent 114
8c0e9e602124
child 127
8982ef7b7d67
permissions
-rw-r--r--

Performed some code refactoring and reformatted the source code with 'Black'

10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
114
8c0e9e602124 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
3 # Copyright (c) 2018 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
4 #
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
5
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter MQTT connection options.
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
10 import copy
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
11
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
12 from PyQt6.QtCore import pyqtSlot, QUuid
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QAbstractButton
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
15 from EricWidgets import EricMessageBox
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
16 from EricWidgets.EricPathPicker import EricPathPickerModes
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
17
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .Ui_MqttConnectionOptionsDialog import Ui_MqttConnectionOptionsDialog
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
20 from .MqttClient import MqttClient
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
21 from .MqttProtocols import MqttProtocols
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
22
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
23 from Utilities.crypto import pwConvert
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
24 import UI.PixmapCache
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
25
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class MqttConnectionOptionsDialog(QDialog, Ui_MqttConnectionOptionsDialog):
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing a dialog to enter MQTT connection options.
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
31
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
32 def __init__(self, options=None, parent=None):
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Constructor
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
35
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param options dictionary containing the connection options to
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
37 populate the dialog with. It must have the keys "ClientId",
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
38 "Protocol", "ConnectionTimeout", "Keepalive", "CleanSession",
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
39 "Username", "Password", "WillTopic", "WillMessage", "WillQos",
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
40 "WillRetain", "WillProperties", "TlsEnable", "TlsCaCert",
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
41 "UserProperties".
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
42 @type dict
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param parent reference to the parent widget
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type QWidget
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
46 super().__init__(parent)
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.setupUi(self)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
48
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
49 self.tlsCertsFilePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
50 self.tlsCertsFilePicker.setFilters(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
51 self.tr("Certificate Files (*.crt *.pem);;All Files (*)")
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
52 )
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
53
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
54 self.willPropertiesButton.setIcon(UI.PixmapCache.getIcon("listSelection"))
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
55
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
56 self.optionsWidget.setCurrentIndex(0)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
57
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
58 # initialize MQTTv5 related stuff
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
59 self.on_mqttv5Button_toggled(False)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
60
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__populateDefaults(options=options)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
62
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
63 self.connectPropertiesButton.clicked[bool].connect(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
64 self.__propertiesTypeSelected
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
65 )
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
66 self.disconnectPropertiesButton.clicked[bool].connect(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
67 self.__propertiesTypeSelected
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
68 )
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
69
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
70 self.__updateOkButton()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
71
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
72 def __updateOkButton(self):
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
73 """
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
74 Private method to update the enabled state of the OK button.
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
75 """
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
76 if self.clientIdEdit.text() == "" and not self.cleanSessionCheckBox.isChecked():
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
77 enable = False
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
78 EricMessageBox.critical(
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
79 self,
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
80 self.tr("Invalid Connection Parameters"),
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
81 self.tr("""An empty Client ID requires a clean session."""),
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
82 )
20
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
83 else:
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
84 enable = True
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
85
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
86 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
87
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
88 @pyqtSlot()
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
89 def on_generateIdButton_clicked(self):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
90 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
91 Private slot to generate a client ID.
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
92 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
93 uuid = QUuid.createUuid()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
94 self.clientIdEdit.setText(uuid.toString(QUuid.StringFormat.WithoutBraces))
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
95
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
96 @pyqtSlot(str)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
97 def on_clientIdEdit_textChanged(self, clientId):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
98 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
99 Private slot handling a change of the client ID string.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
100
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
101 @param clientId client ID
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
102 @type str
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
103 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
104 self.__updateOkButton()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
105
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
106 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
107 def on_cleanSessionCheckBox_clicked(self, checked):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
108 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
109 Private slot to handle a change of the clean session selection.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
110
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
111 @param checked current state of the clean session selection
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
112 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
113 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
114 self.__updateOkButton()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
115
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
116 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
117 def on_mqttv5Button_toggled(self, checked):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
118 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
119 Private slot to handle the selection of the MQTT protocol.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
120
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
121 @param checked state of the button
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
122 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
123 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
124 self.optionsWidget.setTabEnabled(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
125 self.optionsWidget.indexOf(self.propertiesTab), checked
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
126 )
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
127 self.willPropertiesButton.setEnabled(checked)
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
128 self.willPropertiesButton.setVisible(checked)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
129
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 @pyqtSlot(QAbstractButton)
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 def on_buttonBox_clicked(self, button):
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 Private slot to handle the press of a button box button.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
134
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @param button button that has been pressed
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @type QAbstractButton
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
138 if button == self.buttonBox.button(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
139 QDialogButtonBox.StandardButton.RestoreDefaults
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
140 ):
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.__populateDefaults(options=None)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
142
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
143 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
144 def on_samePropertiesCheckBox_toggled(self, checked):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
145 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
146 Private slot to handle a change of the properties usage.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
147
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
148 @param checked flag indicating to use the same user properties for
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
149 CONNECT and DISCONNECT
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
150 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
151 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
152 if checked and not self.connectPropertiesButton.isChecked():
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
153 self.connectPropertiesButton.click()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
154 self.disconnectPropertiesButton.setEnabled(not checked)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
155
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
156 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
157 def __propertiesTypeSelected(self, checked):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
158 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
159 Private slot to handle the switching of the user properties type.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
160
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
161 @param checked state of the buttons
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
162 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
163 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
164 if checked:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
165 # handle the selection only
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
166 if self.connectPropertiesButton.isChecked():
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
167 self.__userProperties[
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
168 "disconnect"
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
169 ] = self.propertiesWidget.getProperties()
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
170 self.propertiesWidget.setProperties(self.__userProperties["connect"])
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
171 else:
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
172 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
173 self.propertiesWidget.setProperties(self.__userProperties["disconnect"])
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
174
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
175 @pyqtSlot()
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
176 def on_willPropertiesButton_clicked(self):
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
177 """
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
178 Private slot to edit the last will user properties.
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
179 """
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
180 from .MqttUserPropertiesEditor import MqttUserPropertiesEditorDialog
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
181
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
182 dlg = MqttUserPropertiesEditorDialog(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
183 self.tr("Last Will User Properties"), self.__willProperties, self
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
184 )
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
185 if dlg.exec() == QDialog.DialogCode.Accepted:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
186 self.__willProperties = dlg.getProperties()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
187
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 def __populateDefaults(self, options=None):
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 Private method to populate the dialog.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
191
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 If no options dictionary is given, the dialog will be populated with
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 default values.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
194
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
195 @param options dictionary containing the connection options to populate
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
196 the dialog with. It must have the keys "ClientId", "Protocol",
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
197 "ConnectionTimeout", "Keepalive", "CleanSession", "Username",
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
198 "Password", "WillTopic", "WillMessage", "WillQos", "WillRetain",
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
199 "WillProperties", "TlsEnable", "TlsCaCert", "UserProperties".
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
200 @type dict
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 if options is None:
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
203 options = MqttClient.defaultConnectionOptions()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
204
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 # general
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.clientIdEdit.setText(options["ClientId"])
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
207 self.mqttv31Button.setChecked(options["Protocol"] == MqttProtocols.MQTTv31)
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
208 self.mqttv311Button.setChecked(options["Protocol"] == MqttProtocols.MQTTv311)
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
209 self.mqttv5Button.setChecked(options["Protocol"] == MqttProtocols.MQTTv5)
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
210 self.connectionTimeoutSpinBox.setValue(options["ConnectionTimeout"])
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 self.keepaliveSpinBox.setValue(options["Keepalive"])
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 self.cleanSessionCheckBox.setChecked(options["CleanSession"])
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
213
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 # user credentials
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.usernameEdit.setText(options["Username"])
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
216 self.passwordEdit.setText(pwConvert(options["Password"], encode=False))
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
217
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 # last will and testament
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.willQosSpinBox.setValue(options["WillQos"])
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.willRetainCheckBox.setChecked(options["WillRetain"])
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.willTopicEdit.setText(options["WillTopic"])
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.willMessageEdit.setPlainText(options["WillMessage"])
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
223 self.__willProperties = copy.deepcopy(options.get("WillProperties", []))
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
224
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
225 # TLS parameters
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
226 self.tlsEnableCheckBox.setChecked(options["TlsEnable"])
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
227 self.tlsCertsFilePicker.setText(options["TlsCaCert"])
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
228
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
229 # user properties
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
230 self.__userProperties = copy.deepcopy(options.get("UserProperties", {}))
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
231 if not self.__userProperties:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
232 self.__userProperties = {
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
233 "connect": [],
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
234 "disconnect": [],
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
235 "use_connect": True,
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
236 }
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
237
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
238 if options["Protocol"] == MqttProtocols.MQTTv5:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
239 self.connectPropertiesButton.setChecked(True)
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
240 self.propertiesWidget.setProperties(self.__userProperties["connect"])
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
241 self.samePropertiesCheckBox.setChecked(self.__userProperties["use_connect"])
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
242 self.disconnectPropertiesButton.setEnabled(
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
243 not self.__userProperties["use_connect"]
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
244 )
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
245 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
246 self.propertiesWidget.clear()
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
247
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 def getConnectionOptions(self):
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 Public method get the entered connection options.
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
251
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @return dictionary containing the connection options. It has the keys
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
253 "ClientId", "Protocol", "ConnectionTimeout", "Keepalive",
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
254 "CleanSession", "Username", "Password", "WillTopic", "WillMessage",
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
255 "WillQos", "WillRetain", "WillProperties", "TlsEnable",
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
256 "TlsCaCert", "UserProperties".
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
257 @rtype dict
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
259 if self.mqttv31Button.isChecked():
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
260 protocol = MqttProtocols.MQTTv31
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
261 elif self.mqttv311Button.isChecked():
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
262 protocol = MqttProtocols.MQTTv311
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
263 elif self.mqttv5Button.isChecked():
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
264 protocol = MqttProtocols.MQTTv5
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
265 else:
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
266 # should never happen
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
267 protocol = MqttProtocols.MQTTv311
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
268
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
269 if protocol == MqttProtocols.MQTTv5:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
270 if self.connectPropertiesButton.isChecked():
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
271 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
272 else:
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
273 self.__userProperties[
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
274 "disconnect"
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
275 ] = self.propertiesWidget.getProperties()
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
276 self.__userProperties[
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
277 "use_connect"
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
278 ] = self.samePropertiesCheckBox.isChecked()
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
279 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
280 self.__userProperties = {}
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
281 self.__willProperties = []
123
3d7e63ed4fd1 Performed some code refactoring and reformatted the source code with 'Black'
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
282
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 return {
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 "ClientId": self.clientIdEdit.text(),
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
285 "Protocol": protocol,
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
286 "ConnectionTimeout": self.connectionTimeoutSpinBox.value(),
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 "Keepalive": self.keepaliveSpinBox.value(),
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 "CleanSession": self.cleanSessionCheckBox.isChecked(),
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 "Username": self.usernameEdit.text(),
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
290 "Password": pwConvert(self.passwordEdit.text(), encode=True),
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 "WillTopic": self.willTopicEdit.text(),
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 "WillMessage": self.willMessageEdit.toPlainText(),
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 "WillQos": self.willQosSpinBox.value(),
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 "WillRetain": self.willRetainCheckBox.isChecked(),
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
295 "WillProperties": copy.deepcopy(self.__willProperties),
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
296 "TlsEnable": self.tlsEnableCheckBox.isChecked(),
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
297 "TlsCaCert": self.tlsCertsFilePicker.text(),
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
298 "UserProperties": copy.deepcopy(self.__userProperties),
10
7e0e921dc7ea Started to implement the connection options dialog and methods to specify these connection options connecting to the server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 }

eric ide

mercurial