MqttMonitor/MqttMonitorWidget.py

Wed, 21 Jul 2021 20:10:36 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Jul 2021 20:10:36 +0200
branch
eric7
changeset 102
70b8858199f5
parent 101
0eae5f616154
child 103
5fe4f179975f
permissions
-rw-r--r--

Started implementing support for MQTT v5 user properties.

1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
84
044df16e55aa Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 82
diff changeset
3 # Copyright (c) 2018 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
4 #
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
5
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
7 Module implementing the MQTT Monitor widget.
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
11 import collections
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
12 import copy
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
13 import contextlib
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
15 from PyQt6.QtCore import pyqtSlot, Qt, QTimer, QFileInfo, QPoint
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
16 from PyQt6.QtGui import QFont, QTextCursor, QBrush, QColor
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
17 from PyQt6.QtWidgets import QWidget, QDialog, QMenu
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
19 from EricWidgets import EricMessageBox, EricFileDialog
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
20 from EricWidgets.EricPathPicker import EricPathPickerModes
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
21
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from .Ui_MqttMonitorWidget import Ui_MqttMonitorWidget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
24 from .MqttClient import (
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
25 MqttClient, MqttProtocols, mqttConnackMessage, mqttErrorMessage,
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
26 mqttLogLevelString
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
27 )
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
28 from .MqttReasonCodes import mqttReasonCode
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
29
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 import UI.PixmapCache
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
31 import Utilities
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 class MqttMonitorWidget(QWidget, Ui_MqttMonitorWidget):
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
36 Class implementing the MQTT Monitor widget.
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
38 BrokerStatusTopicPrefix = "$SYS/broker/"
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
39 BrokerStatusTopic = "$SYS/broker/#"
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
40 BrokerStatusTopicLoadPrefix = "$SYS/broker/load/"
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
41
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
42 def __init__(self, plugin, usesDarkPalette, parent=None):
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 Constructor
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
46 @param plugin reference to the plug-in object
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
47 @type MqttMonitorPlugin
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
48 @param usesDarkPalette flag indicating the use of a dark application
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
49 palette
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
50 @type bool
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @param parent reference to the parent widget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @type QWidget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
54 super().__init__(parent)
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.setupUi(self)
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
57 self.__plugin = plugin
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
58 self.__iconSuffix = "dark" if usesDarkPalette else "light"
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
59
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
60 self.__connectedToBroker = False
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
61 self.__brokerStatusTopicSubscribed = False
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
62
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.pixmapLabel.setPixmap(UI.PixmapCache.getPixmap(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
64 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
65 "mqtt48-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
66 ))
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
67
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
68 self.publishPayloadFilePicker.setMode(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
69 EricPathPickerModes.OPEN_FILE_MODE)
44
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
70 self.publishPayloadFilePicker.setFilters(self.tr("All Files (*)"))
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
71
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
72 self.__messagesFormat = self.messagesEdit.currentCharFormat()
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
73 self.__messagesTopicFormat = self.messagesEdit.currentCharFormat()
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
74 self.__messagesTopicFormat.setFontWeight(QFont.Weight.Bold)
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
75 self.__messagesQosFormat = self.messagesEdit.currentCharFormat()
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
76 self.__messagesQosFormat.setFontItalic(True)
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
77
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
78 self.__propertiesFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
79 self.__propertiesTopicFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
80 self.__propertiesTopicFormat.setFontWeight(QFont.Weight.Bold)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
81 self.__propertiesNameFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
82 self.__propertiesNameFormat.setFontItalic(True)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
83
52
cc8734657162 MqttClient: added search capability for the received messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
84 self.messagesSearchWidget.attachTextEdit(self.messagesEdit)
85
1ee3f393af03 Removed support for obsolete eric6 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
85 self.messagesSearchWidget.setWidthForHeight(False)
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
86
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
87 self.__isMessageAlternate = False
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
88 self.__isPropertiesAlternate = False
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
89
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
90 for logLevel in (MqttClient.LogDisabled,
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
91 MqttClient.LogDebug,
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
92 MqttClient.LogInfo,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
93 MqttClient.LogNotice,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
94 MqttClient.LogWarning,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
95 MqttClient.LogError):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
96 self.logLevelComboBox.addItem(mqttLogLevelString(
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
97 logLevel, isMqttLogLevel=False), logLevel)
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
98 self.logLevelComboBox.setCurrentIndex(
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
99 self.logLevelComboBox.count() - 1)
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
100
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
101 if usesDarkPalette:
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
102 self.__logMessagesBackgrounds = {
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
103 MqttClient.LogDebug: QBrush(QColor("#2f2f2f")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
104 MqttClient.LogInfo: QBrush(QColor("#868686")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
105 MqttClient.LogNotice: QBrush(QColor("#009900")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
106 MqttClient.LogWarning: QBrush(QColor("#999900")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
107 MqttClient.LogError: QBrush(QColor("#990000")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
108 MqttClient.LogDisabled: QBrush(QColor("#990099")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
109 # reuse LogDisabled for unknown log levels
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
110 }
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
111 else:
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
112 self.__logMessagesBackgrounds = {
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
113 MqttClient.LogDebug: QBrush(Qt.GlobalColor.white),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
114 MqttClient.LogInfo: QBrush(Qt.GlobalColor.lightGray),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
115 MqttClient.LogNotice: QBrush(Qt.GlobalColor.green),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
116 MqttClient.LogWarning: QBrush(Qt.GlobalColor.yellow),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
117 MqttClient.LogError: QBrush(Qt.GlobalColor.red),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
118 MqttClient.LogDisabled: QBrush(Qt.GlobalColor.magenta)
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
119 # reuse LogDisabled for unknown log levels
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
120 }
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
121
53
10eb15c22d46 MqttClient: added search capability for the received log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
122 self.logSearchWidget.attachTextEdit(self.logEdit)
85
1ee3f393af03 Removed support for obsolete eric6 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
123 self.logSearchWidget.setWidthForHeight(False)
53
10eb15c22d46 MqttClient: added search capability for the received log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
124
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
125 self.brokerWidget.setCurrentIndex(0)
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
126
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
127 self.__connectionModeProfile = True
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
128 self.__setConnectionMode(True) # initial mode is 'profile connection'
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
129 self.__populateProfileComboBox()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
130
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
131 self.connectButton.setIcon(UI.PixmapCache.getIcon("ircConnect"))
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: 8
diff changeset
132 self.brokerConnectionOptionsButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
133 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
134 "connectionOptions-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
135 ))
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: 8
diff changeset
136 self.__populateBrokerComboBoxes()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
137 self.brokerStatusLabel.hide()
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
138
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
139 self.subscribeButton.setIcon(UI.PixmapCache.getIcon("plus"))
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
140 self.subscribeButton.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
141 self.subscribePropertiesButton.setIcon(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
142 UI.PixmapCache.getIcon("listSelection"))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
143 self.subscribePropertiesButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
144 self.subscribePropertiesButton.setVisible(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
145
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
146 self.unsubscribeButton.setIcon(UI.PixmapCache.getIcon("minus"))
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
147 self.unsubscribeButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
148 self.unsubscribePropertiesButton.setIcon(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
149 UI.PixmapCache.getIcon("listSelection"))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
150 self.unsubscribePropertiesButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
151 self.unsubscribePropertiesButton.setVisible(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
152
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
153 self.__initPropertiesEditMenu()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
154
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
155 self.__subscribedTopics = []
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
156 self.__topicQueue = {}
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
157 self.__updateUnsubscribeTopicComboBox()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
158
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
159 self.__publishedTopics = []
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
160 self.__updatePublishTopicComboBox()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
161 self.publishButton.setEnabled(False)
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
162
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: 8
diff changeset
163 self.__connectionOptions = 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: 8
diff changeset
164
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
165 prefix = MqttMonitorWidget.BrokerStatusTopicPrefix
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
166 self.__statusLabelMapping = {
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
167 # broker
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
168 prefix + "version": self.versionLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
169 prefix + "timestamp": self.timestampLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
170 prefix + "uptime": self.uptimeLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
171 prefix + "subscriptions/count": self.subscriptionsLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
172 # clients
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
173 prefix + "clients/connected": self.clientsConnectedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
174 prefix + "clients/disconnected": self.clientsDisconnectedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
175 prefix + "clients/expired": self.clientsExpiredLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
176 prefix + "clients/maximum": self.clientsMaximumLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
177 prefix + "clients/total": self.clientsTotalLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
178 # messages
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
179 prefix + "messages/sent": self.messagesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
180 prefix + "messages/received": self.messagesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
181 prefix + "messages/stored": self.messagesStoredLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
182 prefix + "store/messages/count": self.messagesStoredLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
183 prefix + "messages/inflight": self.messagesInflightLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
184 prefix + "retained messages/count": self.messagesRetainedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
185 # publish messages
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
186 prefix + "publish/messages/sent": self.publishMessagesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
187 prefix + "publish/messages/received":
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
188 self.publishMessagesReceivedLabel,
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
189 prefix + "publish/messages/dropped":
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
190 self.publishMessagesDroppedLabel,
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
191 # traffic
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
192 prefix + "bytes/sent": self.bytesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
193 prefix + "bytes/received": self.bytesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
194 # load
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
195 prefix + "load/bytes/sent": self.loadBytesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
196 prefix + "load/bytes/received": self.loadBytesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
197 prefix + "load/messages/sent": self.loadMessagesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
198 prefix + "load/messages/received": self.loadMessagesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
199 prefix + "load/publish/sent": self.loadPublishSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
200 prefix + "load/publish/received": self.loadPublishReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
201 prefix + "load/publish/dropped": self.loadPublishDroppedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
202 prefix + "load/connections": self.loadConnectionsLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
203 prefix + "load/sockets": self.loadSocketsLabel,
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
204 }
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
205
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
206 self.__statusLoadValues = collections.defaultdict(
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
207 self.__loadDefaultDictFactory)
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
208
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
209 # TODO: make MQTT default protocol version a configuration option
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
210 # (config page)
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
211 def __createClient(self, clientId="", cleanSession=None,
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
212 protocol=MqttProtocols.MQTTv311):
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
213 """
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
214 Private method to instantiate a MQTT client for a given protocol.
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
215
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
216 @param clientId ID to be used for the client
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
217 @type str
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
218 @param cleanSession flag indicating to start a clean session
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
219 @type bool
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
220 @param protocol MQTT protocol version to be used (defaults to
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
221 MqttProtocols.MQTTv311)
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
222 @type MqttProtocols (optional)
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
223 @return created and connected MQTT client object
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
224 @rtype MqttClient
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
225 """
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
226 client = MqttClient(clientId=clientId, cleanSession=cleanSession,
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
227 protocol=protocol)
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
228
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
229 # connect the MQTT client signals
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
230 client.onConnectV3.connect(self.__brokerConnected)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
231 client.onConnectV5.connect(self.__brokerConnected)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
232 client.onDisconnectedV3.connect(self.__brokerDisconnected)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
233 client.onDisconnectedV5.connect(self.__brokerDisconnected)
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
234 client.onLog.connect(self.__clientLog)
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
235 client.onMessageV3.connect(self.__messageReceived)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
236 client.onMessageV5.connect(self.__messageReceived)
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
237 client.onPublish.connect(self.__messagePublished)
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
238 client.onSubscribeV3.connect(self.__topicSubscribed)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
239 client.onSubscribeV5.connect(self.__topicSubscribedV5)
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
240 client.onUnsubscribeV3.connect(self.__topicUnsubscribed)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
241 client.onUnsubscribeV5.connect(self.__topicUnsubscribedV5)
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
242
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
243 client.connectTimeout.connect(self.__connectTimeout)
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
244
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
245 return client
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
246
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
247 def __initPropertiesEditMenu(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
248 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
249 Private method to create the properties output context menu.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
250 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
251 self.__propertiesEditMenu = QMenu(self)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
252 self.__copyPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
253 UI.PixmapCache.getIcon("editCopy"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
254 self.tr("Copy"), self.propertiesEdit.copy)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
255 self.__propertiesEditMenu.addSeparator()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
256 self.__selectAllPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
257 UI.PixmapCache.getIcon("editSelectAll"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
258 self.tr("Select All"), self.propertiesEdit.selectAll)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
259 self.__propertiesEditMenu.addSeparator()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
260 self.__clearPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
261 UI.PixmapCache.getIcon("editDelete"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
262 self.tr("Clear"), self.propertiesEdit.clear)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
263
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
264 self.propertiesEdit.copyAvailable.connect(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
265 self.__copyPropertiesAct.setEnabled)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
266
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
267 self.__copyPropertiesAct.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
268
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
269 #######################################################################
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
270 ## Slots handling MQTT related signals
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
271 #######################################################################
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
272
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
273 @pyqtSlot(dict, int)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
274 @pyqtSlot(dict, int, int, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
275 def __brokerConnected(self, flags, rc, packetType=None, properties=None):
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
276 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
277 Private slot to handle being connected to a broker.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
278
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
279 @param flags flags set for the connection
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
280 @type dict
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
281 @param rc CONNACK result code or MQTTv5 reason code
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
282 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
283 @param packetType packet type as reported by the client
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
284 @type int
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
285 @param properties dictionary containing the received connection
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
286 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
287 @type dict
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
288 """
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
289 self.brokerStatusLabel.hide()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
290
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
291 # TODO: add support for flags[‘session present’]
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
292 if rc == 0:
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
293 self.__connectedToBroker = 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: 8
diff changeset
294 self.__connectionOptions = None
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
295
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
296 msg = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
297 mqttReasonCode(rc, packetType)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
298 if packetType is not None else
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
299 mqttConnackMessage(rc)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
300 )
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
301 self.__flashBrokerStatusLabel(msg)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
302
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
303 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
304 self.__showProperties("Connect", properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
305
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
306 self.connectButton.setEnabled(True)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
307 if rc == 0:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
308 self.__connectedToBroker = True
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
309 self.__connectionOptions = None
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
310
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
311 self.connectButton.setIcon(
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
312 UI.PixmapCache.getIcon("ircDisconnect"))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
313
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
314 self.subscribeGroup.setEnabled(True)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
315 self.subscribePropertiesButton.setVisible(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
316 self.__client.getProtocol() == MqttProtocols.MQTTv5)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
317 self.unsubscribeGroup.setEnabled(True)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
318 self.unsubscribePropertiesButton.setVisible(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
319 self.__client.getProtocol() == MqttProtocols.MQTTv5)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
320 self.publishGroup.setEnabled(True)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
321 self.brokerStatusButton.setEnabled(True)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
322
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
323 self.__statusLoadValues.clear()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
324 self.__clearBrokerStatusLabels()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
325 self.__setBrokerStatusSubscribed(False)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
326 else:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
327 self.__client.stopLoop()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
328
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
329 @pyqtSlot()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
330 def __connectTimeout(self):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
331 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
332 Private slot handling a timeout during a connection attempt.
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
333 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
334 self.__flashBrokerStatusLabel(self.tr("Connection timed out"))
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
335 self.__setConnectButtonState()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
336
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
337 @pyqtSlot(int)
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
338 @pyqtSlot(int, int)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
339 def __brokerDisconnected(self, rc, packetType=None):
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
340 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
341 Private slot to handle a disconnection from the broker.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
342
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
343 @param rc MQTT error result code
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
344 @type int
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
345 @param packetType packet type as reported by the client
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
346 @type int
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
347 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
348 self.__connectedToBroker = False
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
349
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
350 # ensure, the client loop is stopped
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
351 self.__client.stopLoop()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
352
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
353 msg = (
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
354 # MQTT v5
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
355 mqttReasonCode(rc, packetType)
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
356 if packetType is not None else
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
357 # MQTT v3
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
358 (
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
359 mqttErrorMessage(rc)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
360 if rc > 0 else
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
361 self.tr("Connection to Broker shut down cleanly.")
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
362 )
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
363 )
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
364 self.__flashBrokerStatusLabel(msg)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
365
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
366 self.connectButton.setIcon(UI.PixmapCache.getIcon("ircConnect"))
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
367 self.__setConnectButtonState()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
368
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
369 self.__subscribedTopics = []
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
370 self.__topicQueue = {}
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
371 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
372 self.__updatePublishTopicComboBox()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
373
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
374 self.subscribeGroup.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
375 self.subscribePropertiesButton.setVisible(False)
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
376 self.unsubscribeGroup.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
377 self.unsubscribePropertiesButton.setVisible(False)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
378 self.publishGroup.setEnabled(False)
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
379 self.brokerStatusButton.setEnabled(False)
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
380
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
381 self.__statusLoadValues.clear()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
382
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
383 @pyqtSlot(int, str)
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
384 def __clientLog(self, level, message):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
385 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
386 Private slot to handle the receipt of a log message.
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
387
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
388 @param level log level
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
389 @type int
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
390 @param message log message
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
391 @type str
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
392 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
393 with contextlib.suppress(KeyError):
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
394 if MqttClient.LogLevelMap[level] < self.logLevelComboBox.itemData(
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
395 self.logLevelComboBox.currentIndex()):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
396 return
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
397
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
398 scrollbarValue = self.logEdit.verticalScrollBar().value()
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
399
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
400 textCursor = self.logEdit.textCursor()
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
401 if not self.logEdit.document().isEmpty():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
402 textCursor.movePosition(QTextCursor.MoveOperation.End)
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
403 self.logEdit.setTextCursor(textCursor)
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
404 self.logEdit.insertPlainText("\n")
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
405
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
406 textBlockFormat = textCursor.blockFormat()
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
407 try:
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
408 textBlockFormat.setBackground(
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
409 self.__logMessagesBackgrounds[MqttClient.LogLevelMap[level]])
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
410 except KeyError:
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
411 textBlockFormat.setBackground(
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
412 self.__logMessagesBackgrounds[MqttClient.LogDisabled])
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
413 textCursor.setBlockFormat(textBlockFormat)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
414 textCursor.movePosition(QTextCursor.MoveOperation.End)
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
415 self.logEdit.setTextCursor(textCursor)
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
416
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
417 txt = self.tr("{0}: {1}").format(mqttLogLevelString(level), message)
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
418 self.logEdit.insertPlainText(Utilities.filterAnsiSequences(txt))
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
419
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
420 if self.followLogMessagesCheckBox.isChecked():
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
421 self.logEdit.ensureCursorVisible()
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
422 else:
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
423 self.logEdit.verticalScrollBar().setValue(scrollbarValue)
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
424
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
425 @pyqtSlot(str, bytes, int, bool)
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
426 @pyqtSlot(str, bytes, int, bool, dict)
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
427 def __messageReceived(self, topic, payload, qos, retain, properties=None):
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
428 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
429 Private slot to handle the receipt of a message.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
430
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
431 @param topic topic of the message
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
432 @type str
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
433 @param payload payload (i.e. data) of the message
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
434 @type bytes
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
435 @param qos quality of service indicator
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
436 @type int
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
437 @param retain flag indicating a retained message
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
438 @type bool
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
439 @param properties properties sent with the message (MQTT v5)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
440 @type Properties
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
441 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
442 if topic.startswith(MqttMonitorWidget.BrokerStatusTopicPrefix):
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
443 # handle broker status messages
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
444 self.__handleBrokerStatusMessage(topic, payload)
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
445 else:
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
446 self.__appendMessage(topic, payload, qos, retain,
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
447 properties=properties)
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
448
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
449 @pyqtSlot(int)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
450 def __messagePublished(self, mid):
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
451 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
452 Private slot to handle a message being published.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
453
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
454 @param mid ID of the published message
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
455 @type int
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
456 """
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
457 # nothing to show for this
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
458 pass
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
459
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
460 @pyqtSlot(int)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
461 def __topicSubscribed(self, mid):
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
462 """
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
463 Private slot to handle being subscribed to topics (MQTT v3.1,
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
464 MQTT v3.1.1).
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
465
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
466 @param mid ID of the subscribe request
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
467 @type int
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
468 """
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
469 if mid in self.__topicQueue:
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
470 topic = self.__topicQueue.pop(mid)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
471 self.__subscribedTopics.append(topic)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
472 self.subscribeTopicEdit.clear()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
473
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
474 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
475 self.__updatePublishTopicComboBox()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
476
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
477 @pyqtSlot(int, list, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
478 def __topicSubscribedV5(self, mid, reasonCodes, properties):
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
479 """
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
480 Private slot to handle being subscribed to topics (MQTT v5).
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
481
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
482 @param mid ID of the subscribe request
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
483 @type int
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
484 @param reasonCodes list of reason codes, one for each topic
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
485 @type list of ReasonCodes
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
486 @param properties dictionary containing the received subscribe
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
487 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
488 @type dict
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
489 """
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
490 msg = mqttReasonCode(reasonCodes[0].value, reasonCodes[0].packetType)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
491 self.__flashBrokerStatusLabel(msg)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
492
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
493 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
494 self.__showProperties("Subscribe", properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
495
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
496 self.__topicSubscribed(mid)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
497
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
498 @pyqtSlot(int)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
499 def __topicUnsubscribed(self, mid):
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
500 """
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
501 Private slot to handle being unsubcribed from a topic (MQTT v3.1,
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
502 MQTT v3.1.1).
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
503
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
504 @param mid ID of the unsubscribe request
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
505 @type int
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
506 """
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
507 if mid in self.__topicQueue:
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
508 topic = self.__topicQueue.pop(mid)
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
509 with contextlib.suppress(ValueError):
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
510 self.__subscribedTopics.remove(topic)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
511 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
512 self.__updatePublishTopicComboBox()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
513
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
514 @pyqtSlot(int, int, int, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
515 def __topicUnsubscribedV5(self, mid, rc, packetType, properties):
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
516 """
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
517 Private slot to handle being unsubscribed to topics (MQTT v5).
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
518
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
519 @param mid ID of the subscribe request
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
520 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
521 @param rc MQTTv5 reason code
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
522 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
523 @param packetType packet type as reported by the client
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
524 @type int
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
525 @param properties dictionary containing the received subscribe
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
526 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
527 @type dict
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
528 """
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
529 msg = mqttReasonCode(rc, packetType)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
530 self.__flashBrokerStatusLabel(msg)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
531
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
532 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
533 self.__showProperties("Subscribe", properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
534
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
535 self.__topicUnsubscribed(mid)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
536
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
537 #######################################################################
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
538 ## Slots handling UI interactions
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
539 #######################################################################
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
540
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
541 @pyqtSlot()
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
542 def __flashBrokerStatusLabel(self, message):
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
543 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
544 Private slot to show the broker status label with some text for
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
545 5 seconds.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
546
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
547 @param message message to be shown
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
548 @type str
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
549 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
550 self.brokerStatusLabel.setText(message)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
551 self.brokerStatusLabel.show()
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
552 QTimer.singleShot(5000, self.brokerStatusLabel.hide)
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
553
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
554 @pyqtSlot()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
555 def on_modeButton_clicked(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
556 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
557 Private slot to switch between connection profiles and direct
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
558 connection mode.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
559 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
560 self.__setConnectionMode(not self.__connectionModeProfile)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
561
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
562 @pyqtSlot(str)
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
563 def on_profileComboBox_currentIndexChanged(self, profileName):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
564 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
565 Private slot handling the change of the selected profile.
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
566
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
567 @param profileName name of the selected profile
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
568 @type str
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
569 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
570 self.__setConnectButtonState()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
571
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
572 @pyqtSlot(str)
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
573 def on_brokerComboBox_editTextChanged(self, host):
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
574 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
575 Private slot to handling entering or selecting a broker host name.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
576
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
577 @param host host name of the broker
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
578 @type str
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
579 """
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
580 self.__setConnectButtonState()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
581
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
582 @pyqtSlot()
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: 8
diff changeset
583 def on_brokerConnectionOptionsButton_clicked(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: 8
diff changeset
584 """
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
585 Private slot to show a dialog to modify connection options or a
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
586 dialog to edit connection profiles.
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: 8
diff changeset
587 """
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
588 if self.__connectionModeProfile:
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
589 from .MqttConnectionProfilesDialog import (
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
590 MqttConnectionProfilesDialog
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
591 )
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
592 dlg = MqttConnectionProfilesDialog(
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
593 self.__plugin.getPreferences("BrokerProfiles"), parent=self)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
594 if dlg.exec() == QDialog.DialogCode.Accepted:
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
595 profilesDict = dlg.getProfiles()
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
596 self.__plugin.setPreferences("BrokerProfiles", profilesDict)
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
597 self.__populateProfileComboBox()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
598 else:
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
599 from .MqttConnectionOptionsDialog import (
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
600 MqttConnectionOptionsDialog
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
601 )
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
602 dlg = MqttConnectionOptionsDialog(
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
603 self.__connectionOptions, parent=self)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
604 if dlg.exec() == QDialog.DialogCode.Accepted:
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
605 self.__connectionOptions = dlg.getConnectionOptions()
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
606 if self.__connectionOptions["TlsEnable"]:
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
607 port = self.brokerPortComboBox.currentText().strip()
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
608 if port == "1883":
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
609 # it is default non-encrypted port => set to TLS port
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
610 self.brokerPortComboBox.setEditText("8883")
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
611 else:
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
612 port = self.brokerPortComboBox.currentText().strip()
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
613 if port == "8883":
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
614 # it is default TLS port => set to non-encrypted port
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
615 self.brokerPortComboBox.setEditText("1883")
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: 8
diff changeset
616
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: 8
diff changeset
617 @pyqtSlot()
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
618 def on_connectButton_clicked(self):
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
619 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
620 Private slot to handle a connect or disconnect request.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
621 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
622 if self.__connectedToBroker:
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
623 self.__client.disconnectFromServer()
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
624 else:
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
625 if self.__connectionModeProfile:
21
be4b201d9a41 MqttMonitorWidget: fixed an issue with forgotten '()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
626 self.__profileConnectToBroker()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
627 else:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
628 self.__directConnectToBroker()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
629
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
630 @pyqtSlot()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
631 def on_subscribePropertiesButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
632 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
633 Private slot to edit the subscribe user properties.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
634 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
635 topic = self.subscribeTopicEdit.text()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
636 self.__editProperties(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
637 "subscribe",
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
638 self.tr("SUBSCRIBE: User Properties for '{0}'").format(topic),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
639 topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
640 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
641
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
642 @pyqtSlot(str)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
643 def on_subscribeTopicEdit_textChanged(self, topic):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
644 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
645 Private slot to handle a change of the entered topic.
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
646
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
647 @param topic entered topic text
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
648 @type str
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
649 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
650 self.subscribeButton.setEnabled(bool(topic))
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
651 self.subscribePropertiesButton.setEnabled(bool(topic))
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
652
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
653 @pyqtSlot()
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
654 def on_subscribeTopicEdit_returnPressed(self):
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
655 """
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
656 Private slot handling the user pressing the return button to subscribe
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
657 a topic.
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
658 """
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
659 self.on_subscribeButton_clicked()
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
660
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
661 @pyqtSlot()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
662 def on_subscribeButton_clicked(self):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
663 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
664 Private slot to subscribe to the entered topic.
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
665 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
666 topic = self.subscribeTopicEdit.text()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
667 qos = self.subscribeQosSpinBox.value()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
668 if topic:
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
669 if topic.startswith(MqttMonitorWidget.BrokerStatusTopicPrefix):
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
670 EricMessageBox.warning(
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
671 self,
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
672 self.tr("Subscribe to Topic"),
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
673 self.tr("Subscriptions to the Status topic '$SYS' shall"
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
674 " be done on the 'Status' tab."))
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
675 else:
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
676 properties = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
677 self.__plugin.getPreferences("SubscribeProperties")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
678 .get(topic, [])
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
679 if self.__client.getProtocol() == MqttProtocols.MQTTv5 else
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
680 None
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
681 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
682 result, mid = self.__client.subscribe(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
683 topic, qos=qos, properties=properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
684 self.__topicQueue[mid] = topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
685
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
686 @pyqtSlot()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
687 def on_unsubscribePropertiesButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
688 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
689 Private slot to edit the unsubscribe user properties.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
690 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
691 topic = self.unsubscribeTopicComboBox.currentText()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
692 self.__editProperties(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
693 "unsubscribe",
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
694 self.tr("UNSUBSCRIBE: User Properties for '{0}'").format(topic),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
695 topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
696 )
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
697
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
698 @pyqtSlot(str)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
699 def on_unsubscribeTopicComboBox_currentIndexChanged(self, topic):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
700 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
701 Private slot to handle the selection of a topic to unsubscribe from.
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
702
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
703 @param topic topic text
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
704 @type str
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
705 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
706 self.unsubscribeButton.setEnabled(bool(topic))
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
707 self.unsubscribePropertiesButton.setEnabled(bool(topic))
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
708
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
709 @pyqtSlot()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
710 def on_unsubscribeButton_clicked(self):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
711 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
712 Private slot to unsubscribe from the selected topic.
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
713 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
714 topic = self.unsubscribeTopicComboBox.currentText()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
715 if topic:
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
716 properties = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
717 self.__plugin.getPreferences("SubscribeProperties")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
718 .get(topic, [])
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
719 if self.__client.getProtocol() == MqttProtocols.MQTTv5 else
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
720 None
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
721 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
722 result, mid = self.__client.unsubscribe(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
723 topic, properties=properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
724 self.__topicQueue[mid] = topic
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
725
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
726 @pyqtSlot(str)
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
727 def on_publishTopicComboBox_editTextChanged(self, topic):
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
728 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
729 Private slot to handle changes of the publish topic name.
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
730
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
731 @param topic topic text
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
732 @type str
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
733 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
734 self.publishButton.setEnabled(bool(topic))
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
735
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
736 @pyqtSlot()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
737 def on_publishButton_clicked(self):
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
738 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
739 Private slot to publish the entered message.
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
740 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
741 topic = self.publishTopicComboBox.currentText()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
742 qos = self.publishQosSpinBox.value()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
743 retain = self.publishRetainCheckBox.isChecked()
44
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
744 payloadFile = self.publishPayloadFilePicker.text()
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
745 if (
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
746 bool(payloadFile) and
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
747 os.path.exists(payloadFile) and
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
748 os.path.getsize(payloadFile) <= 268435455
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
749 ):
44
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
750 # payload size limit is 268,435,455 bytes
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
751 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
752 with open(payloadFile, "rb") as f:
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
753 payloadStr = f.read()
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
754 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
755 EricMessageBox.critical(
44
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
756 self,
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
757 self.tr("Read Payload from File"),
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
758 self.tr("""<p>The file <b>{0}</b> could not be read."""
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
759 """ Aborting...</p><p>Reason: {1}</p>""").format(
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
760 payloadFile, str(err)))
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
761 return
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
762 else:
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
763 payloadStr = self.publishPayloadEdit.toPlainText()
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
764 if not payloadStr:
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
765 # use empty string together with the retain flag to clean
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
766 # a retained message by sending None instead
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
767 payloadStr = None
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
768
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
769 msgInfo = self.__client.publish(topic, payloadStr, qos, retain)
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
770 if msgInfo.rc == 0:
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
771 if topic not in self.__publishedTopics:
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
772 self.__publishedTopics.append(topic)
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
773 self.__updatePublishTopicComboBox(resetTopic=False)
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
774 if self.clearPublishCheckBox.isChecked():
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
775 self.on_publishClearButton_clicked()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
776
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
777 @pyqtSlot()
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
778 def on_publishClearRetainedButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
779 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
780 Private slot to clear the retained messages for the topic.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
781 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
782 topic = self.publishTopicComboBox.currentText()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
783
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
784 msgInfo = self.__client.publish(topic, payload=None, retain=True)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
785 if msgInfo.rc == 0:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
786 if topic not in self.__publishedTopics:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
787 self.__publishedTopics.append(topic)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
788 self.__updatePublishTopicComboBox(resetTopic=False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
789
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
790 @pyqtSlot()
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
791 def on_publishClearButton_clicked(self):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
792 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
793 Private slot to clear the publish data fields.
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
794 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
795 self.publishTopicComboBox.clearEditText()
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
796 self.publishPayloadEdit.clear()
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
797 self.publishQosSpinBox.setValue(0)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
798 self.publishRetainCheckBox.setChecked(False)
44
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
799 self.publishPayloadFilePicker.clear()
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
800
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
801 @pyqtSlot(str)
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
802 def on_publishPayloadFilePicker_textChanged(self, path):
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
803 """
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
804 Private slot handling a change of path of the payload file.
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
805
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
806 @param path path of the payload file
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
807 @type str
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
808 """
ca2e03cb6ed4 MqttMonitorWidget: added capability to read the payload data to be published from a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
809 self.publishPayloadEdit.setEnabled(not bool(path))
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
810
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
811 @pyqtSlot(QPoint)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
812 def on_propertiesEdit_customContextMenuRequested(self, pos):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
813 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
814 Private slot to show the context menu for the properties output.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
815
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
816 @param pos the position of the mouse pointer
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
817 @type QPoint
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
818 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
819 self.__propertiesEditMenu.popup(self.propertiesEdit.mapToGlobal(pos))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
820
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
821 @pyqtSlot()
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
822 def on_brokerStatusButton_clicked(self):
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
823 """
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
824 Private slot to subscribe or unsubscribe the broker status topic.
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
825 """
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
826 if self.__brokerStatusTopicSubscribed:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
827 # unsubscribe status topic
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
828 rc, _ = self.__client.unsubscribe(
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
829 MqttMonitorWidget.BrokerStatusTopic)
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
830 if rc == 0:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
831 # successfully sent
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
832 self.__setBrokerStatusSubscribed(False)
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
833 else:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
834 # subscribe status topic
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
835 rc, _ = self.__client.subscribe(
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
836 MqttMonitorWidget.BrokerStatusTopic)
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
837 if rc == 0:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
838 # successfully sent
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
839 self.__setBrokerStatusSubscribed(True)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
840
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
841 @pyqtSlot(int)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
842 def on_messagesEdit_blockCountChanged(self, newBlockCount):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
843 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
844 Private slot handling changes of received messages.
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
845
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
846 @param newBlockCount (ignored)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
847 @type int
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
848 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
849 enable = not self.messagesEdit.document().isEmpty()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
850 self.saveMessagesButton.setEnabled(enable)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
851 self.clearMessagesButton.setEnabled(enable)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
852
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
853 @pyqtSlot()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
854 def on_saveMessagesButton_clicked(self):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
855 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
856 Private slot to save the received messages.
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
857 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
858 fn, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
859 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
860 self.tr("Save Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
861 "",
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
862 self.tr("Messages Files (*.txt);;All Files (*)"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
863 "",
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
864 EricFileDialog.DontConfirmOverwrite)
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
865
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
866 if fn:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
867 if fn.endswith("."):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
868 fn = fn[:-1]
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
869
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
870 ext = QFileInfo(fn).suffix()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
871 if not ext:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
872 ex = selectedFilter.split("(*")[1].split(")")[0]
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
873 if ex:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
874 fn += ex
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
875 if QFileInfo(fn).exists():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
876 res = EricMessageBox.yesNo(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
877 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
878 self.tr("Save Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
879 self.tr("<p>The file <b>{0}</b> already exists."
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
880 " Overwrite it?</p>").format(fn),
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
881 icon=EricMessageBox.Warning)
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
882 if not res:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
883 return
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
884
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
885 fn = Utilities.toNativeSeparators(fn)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
886 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
887 with open(fn, "w") as f:
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
888 f.write(self.messagesEdit.toPlainText())
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
889 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
890 EricMessageBox.critical(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
891 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
892 self.tr("Save Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
893 self.tr("""<p>The file <b>{0}</b> could not be written."""
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
894 """</p><p>Reason: {1}</p>""").format(
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
895 fn, str(err)))
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
896
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
897 @pyqtSlot(int)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
898 def on_logEdit_blockCountChanged(self, newBlockCount):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
899 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
900 Private slot handling changes of received messages.
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
901
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
902 @param newBlockCount (ignored)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
903 @type int
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
904 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
905 enable = not self.logEdit.document().isEmpty()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
906 self.saveLogMessagesButton.setEnabled(enable)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
907 self.clearLogMessagesButton.setEnabled(enable)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
908
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
909 @pyqtSlot()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
910 def on_saveLogMessagesButton_clicked(self):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
911 """
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
912 Private slot to save the log messages.
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
913 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
914 fn, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
915 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
916 self.tr("Save Log Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
917 "",
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
918 self.tr("Log Files (*.log);;All Files (*)"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
919 "",
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
920 EricFileDialog.DontConfirmOverwrite)
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
921
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
922 if fn:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
923 if fn.endswith("."):
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
924 fn = fn[:-1]
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
925
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
926 ext = QFileInfo(fn).suffix()
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
927 if not ext:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
928 ex = selectedFilter.split("(*")[1].split(")")[0]
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
929 if ex:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
930 fn += ex
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
931 if QFileInfo(fn).exists():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
932 res = EricMessageBox.yesNo(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
933 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
934 self.tr("Save Log Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
935 self.tr("<p>The file <b>{0}</b> already exists."
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
936 " Overwrite it?</p>").format(fn),
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
937 icon=EricMessageBox.Warning)
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
938 if not res:
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
939 return
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
940
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
941 fn = Utilities.toNativeSeparators(fn)
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
942 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
943 with open(fn, "w") as f:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
944 f.write(self.logEdit.toPlainText())
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
945 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
946 EricMessageBox.critical(
50
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
947 self,
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
948 self.tr("Save Log Messages"),
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
949 self.tr("""<p>The file <b>{0}</b> could not be written."""
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
950 """</p><p>Reason: {1}</p>""").format(
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
951 fn, str(err)))
8e9e83221c15 MqttMonitorWidget: added capability to save the received messages and log messages to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
952
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
953 #######################################################################
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
954 ## Utility methods
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
955 #######################################################################
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
956
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
957 def __setBrokerStatusSubscribed(self, subscribed):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
958 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
959 Private method to set the subscription status for the broker status
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
960 topics.
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
961
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
962 @param subscribed subscription status for the broker status topics
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
963 @type bool
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
964 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
965 self.__brokerStatusTopicSubscribed = subscribed
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
966 if subscribed:
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
967 self.brokerStatusButton.setText(self.tr("Unsubscribe"))
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
968 self.brokerStatusButton.setToolTip(
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
969 self.tr("Press to deactivate the status display"))
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
970 else:
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
971 self.brokerStatusButton.setText(self.tr("Subscribe"))
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
972 self.brokerStatusButton.setToolTip(
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
973 self.tr("Press to activate the status display"))
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
974
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: 8
diff changeset
975 def __addBrokerToRecent(self, host, port):
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
976 """
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
977 Private method to add a host name to the list of recently connected
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
978 brokers.
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
979
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
980 @param host host name of broker
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
981 @type str
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: 8
diff changeset
982 @param port port number of the connection
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: 8
diff changeset
983 @type int
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
984 """
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: 8
diff changeset
985 brokerList = self.__plugin.getPreferences("RecentBrokersWithPort")
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: 8
diff changeset
986 hostAndPort = [host, port]
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: 8
diff changeset
987 if hostAndPort in brokerList:
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: 8
diff changeset
988 brokerList.remove(hostAndPort)
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: 8
diff changeset
989 brokerList.insert(0, hostAndPort)
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
990 # limit to most recently used 20 entries
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
991 brokerList = brokerList[:20]
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: 8
diff changeset
992 self.__plugin.setPreferences("RecentBrokersWithPort", brokerList)
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: 8
diff changeset
993
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: 8
diff changeset
994 self.__populateBrokerComboBoxes()
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: 8
diff changeset
995
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: 8
diff changeset
996 def __populateBrokerComboBoxes(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: 8
diff changeset
997 """
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: 8
diff changeset
998 Private method to populate the broker name and port combo boxes.
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: 8
diff changeset
999 """
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1000 brokerPortList = self.__plugin.getPreferences("RecentBrokersWithPort")
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
1001
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: 8
diff changeset
1002 # step 1: clear combo boxes
3
82845c0fd550 Fixed some code style issues and implemented the broker connect/disconnect group of the MqttMonitorWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
1003 self.brokerComboBox.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: 8
diff changeset
1004 self.brokerPortComboBox.clear()
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: 8
diff changeset
1005
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: 8
diff changeset
1006 # step 2a: populate the broker name list
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1007 currentBroker = brokerPortList[0][0] if brokerPortList else ""
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1008 brokerSet = {b[0].strip() for b in brokerPortList}
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1009 self.brokerComboBox.addItems(sorted(brokerSet))
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1010 index = self.brokerComboBox.findText(currentBroker)
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1011 self.brokerComboBox.setCurrentIndex(index)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1012
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: 8
diff changeset
1013 # step 2b: populate the broker ports list
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1014 currentPort = brokerPortList[0][1] if brokerPortList else 1883
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: 8
diff changeset
1015 currentPortStr = "{0:5}".format(currentPort)
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1016 portsSet = {b[1] for b in brokerPortList}
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1017 portsSet.update({1883, 8883})
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: 8
diff changeset
1018 self.brokerPortComboBox.addItems(
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1019 sorted("{0:5}".format(p) for p in portsSet))
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: 8
diff changeset
1020 index = self.brokerPortComboBox.findText(currentPortStr)
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: 8
diff changeset
1021 self.brokerPortComboBox.setCurrentIndex(index)
43
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1022
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1023 # step 3: update the connect button state
a0853f7a8b80 MqttClient, MqttMonitorWidget: limited amount of recently used brokers to 20 and added a log level selection to disable logging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
1024 self.__setConnectButtonState()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1025
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1026 def __populateProfileComboBox(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1027 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1028 Private method to populate the profiles selection box.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1029 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1030 profilesDict = self.__plugin.getPreferences("BrokerProfiles")
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1031 mostRecentProfile = self.__plugin.getPreferences("MostRecentProfile")
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1032
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1033 self.profileComboBox.clear()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1034 self.profileComboBox.addItems(sorted(profilesDict.keys()))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1035 if mostRecentProfile:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1036 index = self.profileComboBox.findText(mostRecentProfile)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1037 if index >= 0:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1038 self.profileComboBox.setCurrentIndex(index)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1039
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1040 self.__setConnectButtonState()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1041
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1042 def __updateUnsubscribeTopicComboBox(self):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1043 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1044 Private method to update the unsubcribe topic combo box.
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1045 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1046 self.unsubscribeTopicComboBox.clear()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1047 self.unsubscribeTopicComboBox.addItems(sorted(self.__subscribedTopics))
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1048 self.unsubscribeButton.setEnabled(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1049 bool(self.__subscribedTopics))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1050 self.unsubscribePropertiesButton.setEnabled(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1051 bool(self.__subscribedTopics))
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1052
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1053 def __updatePublishTopicComboBox(self, resetTopic=True):
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1054 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1055 Private method to update the publish topic combo box.
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1056
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1057 @param resetTopic flag indicating to reset the topic
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1058 @type bool
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1059 """
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1060 currentTopic = self.publishTopicComboBox.currentText()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1061 self.publishTopicComboBox.clear()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1062 self.publishTopicComboBox.addItems(
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1063 list(set(self.__publishedTopics + self.__subscribedTopics)))
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1064 if resetTopic:
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1065 self.publishTopicComboBox.clearEditText()
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1066 else:
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1067 topicIndex = self.publishTopicComboBox.findText(currentTopic)
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1068 self.publishTopicComboBox.setCurrentIndex(topicIndex)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1069
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1070 def __appendMessage(self, topic, payload, qos, retain, properties=None):
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1071 """
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1072 Private method to append a received message to the output.
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1073
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1074 @param topic topic of the received message
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1075 @type str
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1076 @param payload payload of the received message
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1077 @type bytes
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1078 @param qos quality of service indicator (0, 1, 2)
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1079 @type int
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1080 @param retain flag indicating a retained message
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1081 @type bool
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1082 @param properties properties sent with the message (MQTT v5)
101
0eae5f616154 Corrected some code style issues and added support for message properties to the on_message callback function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
1083 @type dict
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1084 """
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
1085 scrollbarValue = self.messagesEdit.verticalScrollBar().value()
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
1086
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1087 textCursor = self.messagesEdit.textCursor()
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1088 if not self.messagesEdit.document().isEmpty():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
1089 textCursor.movePosition(QTextCursor.MoveOperation.End)
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1090 self.messagesEdit.setTextCursor(textCursor)
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1091 self.messagesEdit.insertPlainText("\n")
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1092
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1093 textBlockFormat = textCursor.blockFormat()
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1094 if self.__isMessageAlternate:
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1095 textBlockFormat.setBackground(
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1096 self.messagesEdit.palette().alternateBase())
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1097 else:
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1098 textBlockFormat.setBackground(
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1099 self.messagesEdit.palette().base())
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1100 textCursor.setBlockFormat(textBlockFormat)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
1101 textCursor.movePosition(QTextCursor.MoveOperation.End)
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1102 self.messagesEdit.setTextCursor(textCursor)
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1103
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1104 self.messagesEdit.setCurrentCharFormat(self.__messagesTopicFormat)
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1105 self.messagesEdit.insertPlainText(topic + "\n")
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1106
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1107 self.messagesEdit.setCurrentCharFormat(self.__messagesQosFormat)
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1108 self.messagesEdit.insertPlainText(self.tr("QoS: {0}\n").format(qos))
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1109
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1110 if retain:
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1111 self.messagesEdit.setCurrentCharFormat(self.__messagesQosFormat)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1112 self.messagesEdit.insertPlainText(self.tr("Retained Message\n"))
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1113
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1114 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1115 self.messagesEdit.setCurrentCharFormat(self.__messagesTopicFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1116 self.messagesEdit.insertPlainText(self.tr("Properties:\n"))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1117 self.messagesEdit.setCurrentCharFormat(self.__messagesFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1118 for name, value in sorted(properties.items):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1119 self.messagesEdit.insertPlainText(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1120 self.tr("{0}: {1}\n", "property name, property value")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1121 .format(name, value)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1122 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1123
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1124 payloadStr = str(payload, encoding="utf-8", errors="replace")
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1125 self.messagesEdit.setCurrentCharFormat(self.__messagesFormat)
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1126 self.messagesEdit.insertPlainText(
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1127 Utilities.filterAnsiSequences(payloadStr))
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1128
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
1129 if self.followMessagesCheckBox.isChecked():
47
185fac480ed2 MqttMonitorWidget: enhanced the log messages display by colorizing each received message depending on log level.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
1130 self.messagesEdit.ensureCursorVisible()
48
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
1131 else:
41dd2bfee4e4 MqttMonitorWidget: added code to keep the scrollbar position while appending new messages or log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
1132 self.messagesEdit.verticalScrollBar().setValue(scrollbarValue)
46
a777a37a91e7 MqttMonitorWidget: enhanced the message display by alternating the background color for each received message.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1133
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1134 self.__isMessageAlternate = not self.__isMessageAlternate
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1135
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1136 def __handleBrokerStatusMessage(self, topic, payload):
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1137 """
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1138 Private method to handle a status message of the broker.
5
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1139
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1140 @param topic topic of the received message
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1141 @type str
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1142 @param payload payload of the received message
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1143 @type bytes
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1144 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
1145 payloadStr = str(payload, encoding="utf-8", errors="replace").strip()
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1146 topic = topic.strip()
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1147
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1148 if topic.startswith(MqttMonitorWidget.BrokerStatusTopicLoadPrefix):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1149 self.__handleBrokerLoadStatusMessage(topic, payloadStr)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1150 else:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1151 with contextlib.suppress(KeyError):
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1152 label = self.__statusLabelMapping[topic]
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1153 label.setText(payloadStr)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1154
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1155 def __handleBrokerLoadStatusMessage(self, topic, payloadStr):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1156 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1157 Private method to append a received message to the output.
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1158
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1159 @param topic topic of the received message
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1160 @type str
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1161 @param payloadStr string representation of the payload of the
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1162 received message
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1163 @type str
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1164 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1165 subtopic, topicElement = topic.rsplit("/", 1)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1166 self.__statusLoadValues[subtopic][topicElement] = payloadStr
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
1167
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1168 with contextlib.suppress(KeyError):
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1169 label = self.__statusLabelMapping[subtopic]
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1170 label.setText("{0} / {1} / {2}".format(
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1171 self.__statusLoadValues[subtopic]["1min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1172 self.__statusLoadValues[subtopic]["5min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1173 self.__statusLoadValues[subtopic]["15min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1174 ))
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1175
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1176 def __clearBrokerStatusLabels(self):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1177 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1178 Private method to clear the broker status labels.
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1179 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1180 for statusLabelKey in self.__statusLabelMapping:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1181 label = (
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1182 "- / - / -"
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1183 if statusLabelKey.startswith(
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1184 MqttMonitorWidget.BrokerStatusTopicLoadPrefix) else
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1185 "-"
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1186 )
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1187 self.__statusLabelMapping[statusLabelKey].setText(label)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1188
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1189 def __loadDefaultDictFactory(self):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1190 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1191 Private method to populate non-existing load items.
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1192
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1193 @return default dictionary entry
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1194 @rtype dict
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1195 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1196 return {
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1197 "1min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1198 "5min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1199 "15min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1200 }
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1201
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1202 def __setConnectionMode(self, profileMode):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1203 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1204 Private method to set the connection mode.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1205
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1206 @param profileMode flag indicating the profile connection mode
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1207 @type bool
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1208 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1209 self.__connectionModeProfile = profileMode
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1210 if profileMode:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1211 self.modeButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1212 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1213 "profiles-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1214 ))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1215 else:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1216 self.modeButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1217 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1218 "quickopen-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1219 ))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1220
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1221 self.profileComboBox.setVisible(profileMode)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1222 self.brokerConnectionWidget.setVisible(not profileMode)
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1223 self.__setConnectButtonState()
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1224
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1225 def __setConnectButtonState(self):
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1226 """
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1227 Private method to set the enabled state of the connect button.
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1228 """
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1229 if self.__connectionModeProfile:
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1230 self.connectButton.setEnabled(
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1231 bool(self.profileComboBox.currentText()))
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1232 else:
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1233 self.connectButton.setEnabled(
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1234 bool(self.brokerComboBox.currentText()))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1235
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1236 def __directConnectToBroker(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1237 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1238 Private method to connect to the broker with entered data.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1239 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1240 host = self.brokerComboBox.currentText()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1241 port = self.brokerPortComboBox.currentText().strip()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1242 try:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1243 port = int(port)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1244 except ValueError:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1245 # use standard port at 1883
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1246 port = 1883
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1247 if host:
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1248 self.brokerStatusLabel.setText(
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1249 self.tr("Connecting to {0}:{1} ...").format(
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1250 host, port))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1251 self.brokerStatusLabel.show()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1252
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1253 self.__addBrokerToRecent(host, port)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1254 self.connectButton.setEnabled(False)
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1255 if self.__connectionOptions 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
1256 self.__client = self.__createClient()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1257 self.__client.connectToServer(host, port=port)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1258 else:
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1259 self.__client = self.__createClient(
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1260 clientId=self.__connectionOptions["ClientId"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1261 cleanSession=self.__connectionOptions["CleanSession"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1262 protocol=self.__connectionOptions["Protocol"]
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1263 )
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1264 self.__client.connectToServerWithOptions(
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1265 host, port=port, options=self.__connectionOptions)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1266
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1267 def __profileConnectToBroker(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1268 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1269 Private method to connect to the broker with selected profile.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1270 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1271 profileName = self.profileComboBox.currentText()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1272 if profileName:
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1273 self.__plugin.setPreferences("MostRecentProfile", profileName)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1274
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1275 profilesDict = self.__plugin.getPreferences("BrokerProfiles")
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1276 connectionProfile = copy.copy(profilesDict[profileName])
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1277 host = connectionProfile["BrokerAddress"]
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1278 port = connectionProfile["BrokerPort"]
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1279 try:
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1280 protocol = connectionProfile["Protocol"]
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1281 except KeyError:
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1282 protocol = MqttProtocols.MQTTv311
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1283
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1284 self.brokerStatusLabel.setText(
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1285 self.tr("Connecting to {0}:{1} ...").format(
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1286 host, port))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1287 self.brokerStatusLabel.show()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1288
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1289 self.connectButton.setEnabled(False)
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1290
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1291 self.__client = self.__createClient(
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1292 clientId=connectionProfile["ClientId"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1293 cleanSession=connectionProfile["CleanSession"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1294 protocol=protocol
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1295 )
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1296 self.__client.connectToServerWithOptions(
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1297 host, port=port, options=connectionProfile)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1298
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1299 def __showProperties(self, typeStr, properties):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1300 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1301 Private method to display the received properties in the properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1302 pane.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1303
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1304 @param typeStr message type
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1305 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1306 @param properties dictionary containing the relevant properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1307 @type dict
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1308 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1309 textCursor = self.propertiesEdit.textCursor()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1310 if not self.propertiesEdit.document().isEmpty():
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1311 textCursor.movePosition(QTextCursor.MoveOperation.End)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1312 self.propertiesEdit.setTextCursor(textCursor)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1313
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1314 textBlockFormat = textCursor.blockFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1315 if self.__isPropertiesAlternate:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1316 textBlockFormat.setBackground(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1317 self.propertiesEdit.palette().alternateBase())
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1318 else:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1319 textBlockFormat.setBackground(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1320 self.propertiesEdit.palette().base())
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1321 textCursor.setBlockFormat(textBlockFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1322 textCursor.movePosition(QTextCursor.MoveOperation.End)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1323 self.propertiesEdit.setTextCursor(textCursor)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1324
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1325 self.propertiesEdit.setCurrentCharFormat(self.__propertiesTopicFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1326 self.propertiesEdit.insertPlainText(typeStr + "\n")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1327
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1328 for name, value in sorted(properties.items()):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1329 self.propertiesEdit.setCurrentCharFormat(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1330 self.__propertiesNameFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1331 self.propertiesEdit.insertPlainText("{0}: ".format(name))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1332 self.propertiesEdit.setCurrentCharFormat(self.__propertiesFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1333 self.propertiesEdit.insertPlainText("{0}\n".format(str(value)))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1334
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1335 self.propertiesEdit.ensureCursorVisible()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1336
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1337 self.__isPropertiesAlternate = not self.__isPropertiesAlternate
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1338
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1339 def __editProperties(self, propertiesType, header, key):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1340 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1341 Private method to edit user properties of a given type.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1342
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1343 @param propertiesType properties type (one of 'subscribe',
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1344 'unsubscribe', 'publish')
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1345 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1346 @param header header to be shown in the edit dialog
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1347 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1348 @param key key to retrieve the right properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1349 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1350 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1351 from .MqttUserPropertiesEditor import MqttUserPropertiesEditor
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1352
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1353 preferencesKey = "{0}Properties".format(propertiesType.capitalize())
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1354 properties = self.__plugin.getPreferences(preferencesKey)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1355 dlg = MqttUserPropertiesEditor(header, properties.get(key, []), self)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1356 if dlg.exec() == QDialog.DialogCode.Accepted:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1357 properties[key] = dlg.getProperties()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1358 self.__plugin.setPreferences(preferencesKey, properties)

eric ide

mercurial