MqttMonitor/MqttConnectionOptionsDialog.py

Thu, 30 Dec 2021 11:19:57 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 30 Dec 2021 11:19:57 +0100
branch
eric7
changeset 114
8c0e9e602124
parent 105
36ec7431ad04
child 123
3d7e63ed4fd1
permissions
-rw-r--r--

Updated copyright for 2022.

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 """
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
31 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
32 """
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 Constructor
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
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
35 @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
36 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
37 "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
38 "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
39 "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
40 "UserProperties".
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
41 @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
42 @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
43 @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
44 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
45 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
46 self.setupUi(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
47
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
48 self.tlsCertsFilePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
49 self.tlsCertsFilePicker.setFilters(
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
50 self.tr("Certificate Files (*.crt *.pem);;All Files (*)"))
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
51
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
52 self.willPropertiesButton.setIcon(
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
53 UI.PixmapCache.getIcon("listSelection"))
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
54
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
55 self.optionsWidget.setCurrentIndex(0)
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
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
57 # initialize MQTTv5 related stuff
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
58 self.on_mqttv5Button_toggled(False)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
59
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
60 self.__populateDefaults(options=options)
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
61
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
62 self.connectPropertiesButton.clicked[bool].connect(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
63 self.__propertiesTypeSelected)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
64 self.disconnectPropertiesButton.clicked[bool].connect(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
65 self.__propertiesTypeSelected)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
66
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
67 self.__updateOkButton()
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
68
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
69 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
70 """
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
71 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
72 """
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
73 if (
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
74 self.clientIdEdit.text() == "" and
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
75 not self.cleanSessionCheckBox.isChecked()
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
76 ):
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"),
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
81 self.tr("""An empty Client ID requires a clean session."""))
3737a78bb6c5 MqttConnectionOptionsDialog: added some validity checks and added the default value for 'keepalive' setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
82 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
83 enable = True
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
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
85 self.buttonBox.button(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
86 QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
87
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()
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
94 self.clientIdEdit.setText(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
95 uuid.toString(QUuid.StringFormat.WithoutBraces))
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
96
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
97 @pyqtSlot(str)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
98 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
99 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
100 Private slot handling a change of the client ID string.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
101
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
102 @param clientId client ID
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
103 @type str
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
104 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
105 self.__updateOkButton()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
106
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
107 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
108 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
109 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
110 Private slot to handle a change of the clean session selection.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
111
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
112 @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
113 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
114 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
115 self.__updateOkButton()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
116
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
117 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
118 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
119 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
120 Private slot to handle the selection of the MQTT protocol.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
121
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
122 @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
123 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
124 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
125 self.optionsWidget.setTabEnabled(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
126 self.optionsWidget.indexOf(self.propertiesTab),
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
127 checked
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
128 )
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
129 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
130 self.willPropertiesButton.setVisible(checked)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
131
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
132 @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
133 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
134 """
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 Private slot to handle the press of a button box 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
136
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 @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
138 @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
139 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
140 if button == self.buttonBox.button(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
141 QDialogButtonBox.StandardButton.RestoreDefaults
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
142 ):
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
143 self.__populateDefaults(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
144
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
145 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
146 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
147 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
148 Private slot to handle a change of the properties usage.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
149
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
150 @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
151 CONNECT and DISCONNECT
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
152 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
153 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
154 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
155 self.connectPropertiesButton.click()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
156 self.disconnectPropertiesButton.setEnabled(not checked)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
157
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
158 @pyqtSlot(bool)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
159 def __propertiesTypeSelected(self, checked):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
160 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
161 Private slot to handle the switching of the user properties type.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
162
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
163 @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
164 @type bool
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
165 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
166 if checked:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
167 # handle the selection only
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
168 if self.connectPropertiesButton.isChecked():
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
169 self.__userProperties["disconnect"] = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
170 self.propertiesWidget.getProperties())
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
171 self.propertiesWidget.setProperties(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
172 self.__userProperties["connect"])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
173 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
174 self.__userProperties["connect"] = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
175 self.propertiesWidget.getProperties())
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
176 self.propertiesWidget.setProperties(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
177 self.__userProperties["disconnect"])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
178
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
179 @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
180 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
181 """
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 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
183 """
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
184 from .MqttUserPropertiesEditor import MqttUserPropertiesEditorDialog
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
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 dlg = MqttUserPropertiesEditorDialog(
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
187 self.tr("Last Will User Properties"), self.__willProperties, 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
188 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
189 self.__willProperties = dlg.getProperties()
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
190
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
191 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
192 """
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 Private method to populate the dialog.
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
194
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
195 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
196 default values.
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
197
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
198 @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
199 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
200 "ConnectionTimeout", "Keepalive", "CleanSession", "Username",
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
201 "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
202 "WillProperties", "TlsEnable", "TlsCaCert", "UserProperties".
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
203 @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
204 """
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 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
206 options = MqttClient.defaultConnectionOptions()
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
207
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
208 # 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
209 self.clientIdEdit.setText(options["ClientId"])
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
210 self.mqttv31Button.setChecked(
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
211 options["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
212 self.mqttv311Button.setChecked(
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
213 options["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
214 self.mqttv5Button.setChecked(
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
215 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
216 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
217 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
218 self.cleanSessionCheckBox.setChecked(options["CleanSession"])
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
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 # 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
221 self.usernameEdit.setText(options["Username"])
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
222 self.passwordEdit.setText(pwConvert(options["Password"], encode=False))
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
223
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
224 # 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
225 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
226 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
227 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
228 self.willMessageEdit.setPlainText(options["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
229 self.__willProperties = copy.deepcopy(
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
230 options.get("WillProperties", []))
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
231
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
232 # TLS parameters
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
233 self.tlsEnableCheckBox.setChecked(options["TlsEnable"])
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
234 self.tlsCertsFilePicker.setText(options["TlsCaCert"])
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
235
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
236 # user properties
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
237 self.__userProperties = copy.deepcopy(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
238 options.get("UserProperties", {}))
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
239 if not self.__userProperties:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
240 self.__userProperties = {
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
241 "connect": [],
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
242 "disconnect": [],
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
243 "use_connect": True,
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
244 }
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
245
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
246 if options["Protocol"] == MqttProtocols.MQTTv5:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
247 self.connectPropertiesButton.setChecked(True)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
248 self.propertiesWidget.setProperties(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
249 self.__userProperties["connect"])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
250 self.samePropertiesCheckBox.setChecked(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
251 self.__userProperties["use_connect"])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
252 self.disconnectPropertiesButton.setEnabled(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
253 not self.__userProperties["use_connect"])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
254 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
255 self.propertiesWidget.clear()
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
256
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
257 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
258 """
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
259 Public method get the entered 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
260
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
261 @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
262 "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
263 "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
264 "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
265 "TlsCaCert", "UserProperties".
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
266 @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
267 """
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
268 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
269 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
270 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
271 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
272 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
273 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
274 else:
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
275 # 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
276 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
277
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
278 if protocol == MqttProtocols.MQTTv5:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
279 if self.connectPropertiesButton.isChecked():
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
280 self.__userProperties["connect"] = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
281 self.propertiesWidget.getProperties())
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
282 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
283 self.__userProperties["disconnect"] = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
284 self.propertiesWidget.getProperties())
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
285 self.__userProperties["use_connect"] = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
286 self.samePropertiesCheckBox.isChecked())
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
287 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
288 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
289 self.__willProperties = []
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
290
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 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
292 "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
293 "Protocol": protocol,
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
294 "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
295 "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
296 "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
297 "Username": self.usernameEdit.text(),
22
545979c7dcd4 MqttClient, MqttConnectionOptionsDialog: added support for encrypted passwords.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
298 "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
299 "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
300 "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
301 "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
302 "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
303 "WillProperties": copy.deepcopy(self.__willProperties),
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
304 "TlsEnable": self.tlsEnableCheckBox.isChecked(),
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
305 "TlsCaCert": self.tlsCertsFilePicker.text(),
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
306 "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
307 }

eric ide

mercurial