MqttMonitor/MqttMonitorWidget.py

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

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

Updated copyright for 2022.

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
114
8c0e9e602124 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 113
diff changeset
3 # Copyright (c) 2018 - 2022 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
113
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
10 import collections
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
11 import contextlib
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
12 import copy
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os
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
113
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
19 from EricWidgets.EricApplication import ericApp
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
20 from EricWidgets import EricMessageBox, EricFileDialog
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
21 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
22
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from .Ui_MqttMonitorWidget import Ui_MqttMonitorWidget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
25 from .MqttClient import (
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
26 MqttClient, mqttConnackMessage, mqttErrorMessage, 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
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
29 from .MqttProtocols import MqttProtocols
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
30
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 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
32 import Utilities
1
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
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 class MqttMonitorWidget(QWidget, Ui_MqttMonitorWidget):
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
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
37 Class implementing the MQTT Monitor widget.
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
39 BrokerStatusTopicPrefix = "$SYS/broker/"
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
40 BrokerStatusTopic = "$SYS/broker/#"
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
41 BrokerStatusTopicLoadPrefix = "$SYS/broker/load/"
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
42
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
43 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
44 """
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Constructor
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
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
47 @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
48 @type MqttMonitorPlugin
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
49 @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
50 palette
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
51 @type bool
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @param parent reference to the parent widget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @type QWidget
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
55 super().__init__(parent)
1
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.setupUi(self)
bf1a17419d44 Added first outline of the MQTT Monitor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
112
b287c1d2cc78 Optimized the layout margins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
58 self.layout().setContentsMargins(0, 3, 0, 0)
b287c1d2cc78 Optimized the layout margins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
59
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
60 self.__plugin = plugin
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
61 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
62
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
63 self.__connectedToBroker = False
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
64 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
65
113
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
66 with contextlib.suppress(AttributeError):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
67 # backward compatibility
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
68 if not ericApp().usesSmallScreen():
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
69 self.pixmapLabel.setPixmap(UI.PixmapCache.getPixmap(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
70 os.path.join("MqttMonitor", "icons",
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
71 "mqtt48-{0}".format(self.__iconSuffix))
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
72 ))
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
73
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
74 self.publishPayloadFilePicker.setMode(
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
75 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
76 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
77
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
78 self.brokerComboBox.lineEdit().setClearButtonEnabled(True)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
79 self.publishTopicComboBox.lineEdit().setClearButtonEnabled(True)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
80
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
81 self.__messagesFormat = self.messagesEdit.currentCharFormat()
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
82 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
83 self.__messagesTopicFormat.setFontWeight(QFont.Weight.Bold)
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
84 self.__messagesQosFormat = self.messagesEdit.currentCharFormat()
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
85 self.__messagesQosFormat.setFontItalic(True)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
86 self.__messagesSubheaderFormat = self.messagesEdit.currentCharFormat()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
87 self.__messagesSubheaderFormat.setFontUnderline(True)
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
88
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
89 self.__propertiesFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
90 self.__propertiesTopicFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
91 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
92 self.__propertiesNameFormat = self.propertiesEdit.currentCharFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
93 self.__propertiesNameFormat.setFontItalic(True)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
94
52
cc8734657162 MqttClient: added search capability for the received messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
95 self.messagesSearchWidget.attachTextEdit(self.messagesEdit)
85
1ee3f393af03 Removed support for obsolete eric6 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
96 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
97
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
98 self.__isMessageAlternate = False
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
99 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
100
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
101 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
102 MqttClient.LogDebug,
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
103 MqttClient.LogInfo,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
104 MqttClient.LogNotice,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
105 MqttClient.LogWarning,
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
106 MqttClient.LogError):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
107 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
108 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
109 self.logLevelComboBox.setCurrentIndex(
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
110 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
111
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
112 if usesDarkPalette:
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
113 self.__logMessagesBackgrounds = {
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
114 MqttClient.LogDebug: QBrush(QColor("#2f2f2f")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
115 MqttClient.LogInfo: QBrush(QColor("#868686")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
116 MqttClient.LogNotice: QBrush(QColor("#009900")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
117 MqttClient.LogWarning: QBrush(QColor("#999900")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
118 MqttClient.LogError: QBrush(QColor("#990000")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
119 MqttClient.LogDisabled: QBrush(QColor("#990099")),
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
120 # 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
121 }
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
122 else:
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
123 self.__logMessagesBackgrounds = {
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
124 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
125 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
126 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
127 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
128 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
129 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
130 # 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
131 }
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
132
53
10eb15c22d46 MqttClient: added search capability for the received log messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
133 self.logSearchWidget.attachTextEdit(self.logEdit)
85
1ee3f393af03 Removed support for obsolete eric6 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
134 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
135
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
136 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
137
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
138 self.__connectionModeProfile = True
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
139 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
140 self.__populateProfileComboBox()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
141
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
142 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
143 self.brokerConnectionOptionsButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
144 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
145 "connectionOptions-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
146 ))
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
147 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
148 self.brokerStatusLabel.hide()
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
149 self.clearWillButton.setIcon(
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
150 UI.PixmapCache.getIcon("certificateDelete"))
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
151
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
152 self.subscribeTopicComboBox.lineEdit().setClearButtonEnabled(True)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
153 self.subscribeTopicComboBox.lineEdit().returnPressed.connect(
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
154 self.on_subscribeButton_clicked)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
155 self.__populateSubscribeTopicComboBox()
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
156
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
157 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
158 self.subscribeButton.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
159 self.subscribePropertiesButton.setIcon(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
160 UI.PixmapCache.getIcon("listSelection"))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
161 self.subscribePropertiesButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
162 self.subscribePropertiesButton.setVisible(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
163
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
164 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
165 self.unsubscribeButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
166 self.unsubscribePropertiesButton.setIcon(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
167 UI.PixmapCache.getIcon("listSelection"))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
168 self.unsubscribePropertiesButton.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
169 self.unsubscribePropertiesButton.setVisible(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
170
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
171 self.__initPropertiesEditMenu()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 self.__subscribedTopics = []
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 self.__topicQueue = {}
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 self.__updateUnsubscribeTopicComboBox()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
177 self.__publishedTopics = []
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
178 self.__updatePublishTopicComboBox()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
179 self.publishButton.setEnabled(False)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
180 self.publishPropertiesButton.setIcon(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
181 UI.PixmapCache.getIcon("listSelection"))
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
182 self.publishPropertiesButton.setEnabled(False)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
183 self.publishPropertiesButton.setVisible(False)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
184
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
185 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
186
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
187 prefix = MqttMonitorWidget.BrokerStatusTopicPrefix
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
188 self.__statusLabelMapping = {
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
189 # broker
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
190 prefix + "version": self.versionLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
191 prefix + "timestamp": self.timestampLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
192 prefix + "uptime": self.uptimeLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
193 prefix + "subscriptions/count": self.subscriptionsLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
194 # clients
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
195 prefix + "clients/connected": self.clientsConnectedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
196 prefix + "clients/disconnected": self.clientsDisconnectedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
197 prefix + "clients/expired": self.clientsExpiredLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
198 prefix + "clients/maximum": self.clientsMaximumLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
199 prefix + "clients/total": self.clientsTotalLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
200 # messages
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
201 prefix + "messages/sent": self.messagesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
202 prefix + "messages/received": self.messagesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
203 prefix + "messages/stored": self.messagesStoredLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
204 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
205 prefix + "messages/inflight": self.messagesInflightLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
206 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
207 # publish messages
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
208 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
209 prefix + "publish/messages/received":
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
210 self.publishMessagesReceivedLabel,
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
211 prefix + "publish/messages/dropped":
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
212 self.publishMessagesDroppedLabel,
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
213 # traffic
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
214 prefix + "bytes/sent": self.bytesSentLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
215 prefix + "bytes/received": self.bytesReceivedLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
216 # load
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
217 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
218 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
219 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
220 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
221 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
222 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
223 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
224 prefix + "load/connections": self.loadConnectionsLabel,
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
225 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
226 }
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
227
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
228 self.__statusLoadValues = collections.defaultdict(
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
229 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
230
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
231 def __createClient(self, clientId="", cleanSession=None,
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
232 protocol=None):
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
233 """
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
234 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
235
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
236 @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
237 @type str
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
238 @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
239 @type bool
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
240 @param protocol MQTT protocol version to be used (defaults to None)
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
241 @type MqttProtocols or int (optional)
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
242 @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
243 @rtype MqttClient
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
244 """
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
245 if protocol is None:
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
246 protocol = self.__plugin.getPreferences("DefaultProtocol")
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
247
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
248 client = MqttClient(clientId=clientId, cleanSession=cleanSession,
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
249 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
250
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
251 # 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
252 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
253 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
254 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
255 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
256 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
257 client.onMessageV3.connect(self.__messageReceived)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
258 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
259 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
260 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
261 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
262 client.onUnsubscribeV3.connect(self.__topicUnsubscribed)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
263 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
264
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
265 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
266
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
267 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
268
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
269 def __initPropertiesEditMenu(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
270 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
271 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
272 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
273 self.__propertiesEditMenu = QMenu(self)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
274 self.__copyPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
275 UI.PixmapCache.getIcon("editCopy"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
276 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
277 self.__propertiesEditMenu.addSeparator()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
278 self.__selectAllPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
279 UI.PixmapCache.getIcon("editSelectAll"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
280 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
281 self.__propertiesEditMenu.addSeparator()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
282 self.__clearPropertiesAct = self.__propertiesEditMenu.addAction(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
283 UI.PixmapCache.getIcon("editDelete"),
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
284 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
285
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
286 self.propertiesEdit.copyAvailable.connect(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
287 self.__copyPropertiesAct.setEnabled)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
288
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
289 self.__copyPropertiesAct.setEnabled(False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
290
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
291 #######################################################################
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 ## 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
293 #######################################################################
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
294
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 @pyqtSlot(dict, int)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
296 @pyqtSlot(dict, int, int, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
297 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
298 """
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
299 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
300
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 @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
302 @type dict
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
303 @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
304 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
305 @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
306 @type int
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
307 @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
308 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
309 @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
310 """
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
311 self.brokerStatusLabel.hide()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
312
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
313 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
314 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
315 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
316
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
317 try:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
318 sessionPresent = flags["session present"] == 1
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
319 except KeyError:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
320 sessionPresent = False
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
321
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
322 msg = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
323 mqttReasonCode(rc, packetType)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
324 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
325 mqttConnackMessage(rc)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
326 )
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
327 if sessionPresent:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
328 msg = self.tr("{0} - Session still present").format(msg)
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
329 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
330
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
331 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
332 self.__showProperties("Connect", properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
333
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
334 self.connectButton.setEnabled(True)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
335 if rc == 0:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
336 self.__connectedToBroker = True
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
337 self.__connectionOptions = None
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
338
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
339 self.connectButton.setIcon(
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
340 UI.PixmapCache.getIcon("ircDisconnect"))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
341
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
342 self.subscribeGroup.setEnabled(True)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
343 self.subscribePropertiesButton.setVisible(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
344 self.__client.getProtocol() == MqttProtocols.MQTTv5)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
345 self.unsubscribeGroup.setEnabled(True)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
346 self.unsubscribePropertiesButton.setVisible(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
347 self.__client.getProtocol() == MqttProtocols.MQTTv5)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
348 self.publishGroup.setEnabled(True)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
349 self.brokerStatusButton.setEnabled(True)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
350 self.publishPropertiesButton.setVisible(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
351 self.__client.getProtocol() == MqttProtocols.MQTTv5)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
352
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
353 self.__statusLoadValues.clear()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
354 self.__clearBrokerStatusLabels()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
355 self.__setBrokerStatusSubscribed(False)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
356 else:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
357 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
358
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
359 @pyqtSlot()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
360 def __connectTimeout(self):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
361 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
362 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
363 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
364 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
365 self.__setConnectButtonState()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
366
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
367 @pyqtSlot(int)
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
368 @pyqtSlot(int, int)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
369 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
370 """
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
371 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
372
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 @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
374 @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
375 @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
376 @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
377 """
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
378 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
379
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
380 # 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
381 self.__client.stopLoop()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
382
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
383 msg = (
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
384 # 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
385 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
386 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
387 # 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
388 (
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
389 mqttErrorMessage(rc)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
390 if rc > 0 else
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
391 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
392 )
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
393 )
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
394 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
395
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
396 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
397 self.__setConnectButtonState()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
398
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
399 self.__subscribedTopics = []
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
400 self.__topicQueue = {}
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
401 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
402 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
403
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
404 self.subscribeGroup.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
405 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
406 self.unsubscribeGroup.setEnabled(False)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
407 self.unsubscribePropertiesButton.setVisible(False)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
408 self.publishGroup.setEnabled(False)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
409 self.publishPropertiesButton.setVisible(False)
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
410 self.brokerStatusButton.setEnabled(False)
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
411
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
412 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
413
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
414 @pyqtSlot(int, str)
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
415 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
416 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
417 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
418
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
419 @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
420 @type int
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
421 @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
422 @type str
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
423 """
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
424 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
425 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
426 self.logLevelComboBox.currentIndex()):
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
427 return
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
428
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
429 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
430
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
431 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
432 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
433 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
434 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
435 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
436
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
437 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
438 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
439 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
440 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
441 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
442 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
443 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
444 textCursor.setBlockFormat(textBlockFormat)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
445 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
446 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
447
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
448 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
449 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
450
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
451 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
452 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
453 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
454 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
455
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
456 @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
457 @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
458 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
459 """
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
460 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
461
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 @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
463 @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
464 @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
465 @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
466 @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
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 @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
469 @type bool
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
470 @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
471 @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
472 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
473 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
474 # 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
475 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
476 else:
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
477 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
478 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
479
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
480 @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
481 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
482 """
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
483 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
484
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
485 @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
486 @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
487 """
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
488 # 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
489 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
490
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
491 @pyqtSlot(int)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
492 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
493 """
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
494 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
495 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
496
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
497 @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
498 @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
499 """
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
500 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
501 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
502 self.__subscribedTopics.append(topic)
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
503 self.__addTopicToRecent(topic)
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
504
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
505 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
506 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
507
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
508 @pyqtSlot(int, list, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
509 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
510 """
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
511 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
512
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
513 @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
514 @type int
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
515 @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
516 @type list of ReasonCodes
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
517 @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
518 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
519 @type dict
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
520 """
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
521 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
522 self.__flashBrokerStatusLabel(msg)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
523
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
524 if properties:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
525 self.__showProperties("Subscribe", properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
526
99
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
527 self.__topicSubscribed(mid)
420cb8adbf7e Added MQTT V5 support for connect, disconnect and subscribe.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 98
diff changeset
528
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
529 @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
530 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
531 """
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
532 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
533 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
534
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
535 @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
536 @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
537 """
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
538 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
539 topic = self.__topicQueue.pop(mid)
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
540 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
541 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
542 self.__updateUnsubscribeTopicComboBox()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
543 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
544
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
545 @pyqtSlot(int, int, int, dict)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
546 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
547 """
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
548 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
549
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
550 @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
551 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
552 @param rc MQTTv5 reason code
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
553 @type int
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
554 @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
555 @type int
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
556 @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
557 properties
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
558 @type dict
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
559 """
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
560 msg = mqttReasonCode(rc, packetType)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
561 self.__flashBrokerStatusLabel(msg)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
562
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
563 if properties:
113
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 112
diff changeset
564 self.__showProperties("Unsubscribe", properties)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
565
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
566 self.__topicUnsubscribed(mid)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
567
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
568 #######################################################################
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
569 ## 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
570 #######################################################################
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
571
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
572 @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
573 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
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 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
576 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
577
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 @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
579 @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
580 """
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 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
582 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
583 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
584
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
585 @pyqtSlot()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
586 def on_modeButton_clicked(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
587 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
588 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
589 connection mode.
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
590 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
591 self.__setConnectionMode(not self.__connectionModeProfile)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
592
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
593 @pyqtSlot(str)
31
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
594 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
595 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
596 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
597
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
598 @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
599 @type str
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
600 """
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
601 self.__setConnectButtonState()
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
602
40582e448c4b Added a connect timeout function with a settable timeout value.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
603 @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
604 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
605 """
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
606 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
607
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
608 @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
609 @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
610 """
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
611 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
612
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
613 @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
614 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
615 """
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
616 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
617 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
618 """
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
619 if self.__connectionModeProfile:
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
620 from .MqttConnectionProfilesDialog import (
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
621 MqttConnectionProfilesDialog
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
622 )
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
623 profileName = self.profileComboBox.currentText()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
624 dlg = MqttConnectionProfilesDialog(
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
625 self.__plugin.getPreferences("BrokerProfiles"),
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
626 currentProfile=profileName, parent=self)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
627 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
628 profilesDict = dlg.getProfiles()
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
629 self.__plugin.setPreferences("BrokerProfiles", profilesDict)
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
630 self.__populateProfileComboBox()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
631 else:
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
632 from .MqttConnectionOptionsDialog import (
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
633 MqttConnectionOptionsDialog
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
634 )
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
635 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
636 self.__connectionOptions, parent=self)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
637 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
638 self.__connectionOptions = dlg.getConnectionOptions()
25
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
639 if self.__connectionOptions["TlsEnable"]:
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
640 port = self.brokerPortComboBox.currentText().strip()
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
641 if port == "1883":
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
642 # 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
643 self.brokerPortComboBox.setEditText("8883")
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
644 else:
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
645 port = self.brokerPortComboBox.currentText().strip()
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
646 if port == "8883":
01d44a4decf5 MqttConnectionOptionsDialog: added support for TLS.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
647 # 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
648 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
649
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
650 @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
651 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
652 """
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
653 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
654 """
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
655 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
656 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
657 else:
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
658 if self.__connectionModeProfile:
21
be4b201d9a41 MqttMonitorWidget: fixed an issue with forgotten '()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
659 self.__profileConnectToBroker()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
660 else:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
661 self.__directConnectToBroker()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
662
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
663 @pyqtSlot()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
664 def on_subscribePropertiesButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
665 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
666 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
667 """
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
668 topic = self.subscribeTopicComboBox.currentText()
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
669 self.__editProperties(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
670 "subscribe",
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
671 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
672 topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
673 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
674
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
675 @pyqtSlot(str)
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
676 def on_subscribeTopicComboBox_editTextChanged(self, topic):
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
677 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
678 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
679
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
680 @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
681 @type str
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
682 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
683 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
684 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
685
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
686 @pyqtSlot()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
687 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
688 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
689 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
690 """
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
691 topic = self.subscribeTopicComboBox.currentText()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
692 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
693 if topic:
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
694 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
695 EricMessageBox.warning(
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
696 self,
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
697 self.tr("Subscribe to Topic"),
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
698 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
699 " 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
700 else:
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
701 properties = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
702 self.__plugin.getPreferences("SubscribeProperties")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
703 .get(topic, [])
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
704 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
705 None
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
706 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
707 result, mid = self.__client.subscribe(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
708 topic, qos=qos, properties=properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
709 self.__topicQueue[mid] = topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
710
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
711 @pyqtSlot()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
712 def on_unsubscribePropertiesButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
713 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
714 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
715 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
716 topic = self.unsubscribeTopicComboBox.currentText()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
717 self.__editProperties(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
718 "unsubscribe",
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
719 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
720 topic
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
721 )
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
722
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
723 @pyqtSlot(str)
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
724 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
725 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
726 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
727
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
728 @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
729 @type str
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
730 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
731 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
732 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
733
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
734 @pyqtSlot()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
735 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
736 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
737 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
738 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
739 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
740 if topic:
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
741 properties = (
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
742 self.__plugin.getPreferences("SubscribeProperties")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
743 .get(topic, [])
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
744 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
745 None
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
746 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
747 result, mid = self.__client.unsubscribe(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
748 topic, properties=properties)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
749 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
750
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
751 @pyqtSlot()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
752 def on_publishPropertiesButton_clicked(self):
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
753 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
754 Private slot to edit the publish user properties.
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
755 """
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
756 topic = self.publishTopicComboBox.currentText()
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
757 self.__editProperties(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
758 "publish",
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
759 self.tr("PUBLISH: User Properties for '{0}'").format(topic),
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
760 topic
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
761 )
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
762
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
763 @pyqtSlot(str)
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
764 def on_publishTopicComboBox_editTextChanged(self, topic):
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
765 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
766 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
767
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
768 @param topic topic text
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
769 @type str
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
770 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
771 self.publishButton.setEnabled(bool(topic))
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
772 self.publishPropertiesButton.setEnabled(bool(topic))
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
773
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
774 @pyqtSlot()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
775 def on_publishButton_clicked(self):
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
776 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
777 Private slot to publish the entered message.
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
778 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
779 topic = self.publishTopicComboBox.currentText()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
780 qos = self.publishQosSpinBox.value()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
781 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
782 payloadFile = self.publishPayloadFilePicker.text()
78
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
783 if (
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
784 bool(payloadFile) and
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
785 os.path.exists(payloadFile) and
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
786 os.path.getsize(payloadFile) <= 268435455
a22328182bc2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
787 ):
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
788 # 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
789 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
790 with open(payloadFile, "rb") as f:
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
791 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
792 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
793 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
794 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
795 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
796 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
797 """ 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
798 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
799 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
800 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
801 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
802 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
803 # 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
804 # 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
805 payloadStr = None
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
806 properties = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
807 self.__plugin.getPreferences("PublishProperties").get(topic, [])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
808 if self.__client.getProtocol() == MqttProtocols.MQTTv5 else
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
809 None
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
810 )
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
811
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
812 msgInfo = self.__client.publish(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
813 topic, payload=payloadStr, qos=qos, retain=retain,
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
814 properties=properties)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
815 if msgInfo.rc == 0:
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
816 if topic not in self.__publishedTopics:
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
817 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
818 self.__updatePublishTopicComboBox(resetTopic=False)
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
819 if self.clearPublishCheckBox.isChecked():
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
820 self.on_publishClearButton_clicked()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
821
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
822 @pyqtSlot()
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
823 def on_publishClearRetainedButton_clicked(self):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
824 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
825 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
826 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
827 topic = self.publishTopicComboBox.currentText()
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
828 properties = (
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
829 self.__plugin.getPreferences("PublishProperties").get(topic, [])
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
830 if self.__client.getProtocol() == MqttProtocols.MQTTv5 else
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
831 None
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
832 )
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
833
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
834 msgInfo = self.__client.publish(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
835 topic, payload=None, retain=True, properties=properties)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
836 if msgInfo.rc == 0:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
837 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
838 self.__publishedTopics.append(topic)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
839 self.__updatePublishTopicComboBox(resetTopic=False)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
840
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
841 @pyqtSlot()
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
842 def on_publishClearButton_clicked(self):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
843 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
844 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
845 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
846 self.publishTopicComboBox.clearEditText()
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
847 self.publishPayloadEdit.clear()
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
848 self.publishQosSpinBox.setValue(0)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
849 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
850 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
851
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
852 @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
853 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
854 """
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
855 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
856
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
857 @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
858 @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
859 """
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
860 self.publishPayloadEdit.setEnabled(not bool(path))
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
861
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
862 @pyqtSlot(QPoint)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
863 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
864 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
865 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
866
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
867 @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
868 @type QPoint
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
869 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
870 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
871
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
872 @pyqtSlot()
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
873 def on_brokerStatusButton_clicked(self):
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
874 """
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
875 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
876 """
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
877 if self.__brokerStatusTopicSubscribed:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
878 # unsubscribe status topic
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
879 rc, _ = self.__client.unsubscribe(
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
880 MqttMonitorWidget.BrokerStatusTopic)
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
881 if rc == 0:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
882 # successfully sent
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
883 self.__setBrokerStatusSubscribed(False)
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
884 else:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
885 # subscribe status topic
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
886 rc, _ = self.__client.subscribe(
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
887 MqttMonitorWidget.BrokerStatusTopic)
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
888 if rc == 0:
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
889 # successfully sent
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
890 self.__setBrokerStatusSubscribed(True)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
891
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
892 @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
893 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
894 """
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 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
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 @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
898 @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
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 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
901 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
902 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
903
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 @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
905 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
906 """
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 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
908 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
909 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
910 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 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
912 "",
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 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
914 "",
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
915 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
916
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 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
918 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
919 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
920
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 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
922 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
923 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
924 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
925 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
926 if QFileInfo(fn).exists():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
927 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
928 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
929 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
930 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
931 " 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
932 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
933 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
934 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
935
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 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
937 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
938 with open(fn, "w") as f:
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
939 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
940 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
941 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
942 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
943 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
944 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
945 """</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
946 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
947
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 @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
949 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
950 """
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 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
952
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
953 @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
954 @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
955 """
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
956 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
957 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
958 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
959
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
960 @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
961 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
962 """
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
963 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
964 """
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
965 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
966 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
967 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
968 "",
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
969 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
970 "",
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
971 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
972
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
973 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
974 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
975 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
976
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
977 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
978 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
979 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
980 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
981 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
982 if QFileInfo(fn).exists():
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
983 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
984 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
985 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
986 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
987 " 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
988 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
989 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
990 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
991
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
992 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
993 try:
82
4d36daabe993 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
994 with open(fn, "w") as f:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
995 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
996 except EnvironmentError as err:
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
997 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
998 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
999 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
1000 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
1001 """</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
1002 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
1003
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1004 #######################################################################
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1005 ## Utility methods
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1006 #######################################################################
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1007
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1008 def __setBrokerStatusSubscribed(self, subscribed):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1009 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1010 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
1011 topics.
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1012
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1013 @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
1014 @type bool
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1015 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1016 self.__brokerStatusTopicSubscribed = subscribed
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1017 if subscribed:
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1018 self.brokerStatusButton.setText(self.tr("Unsubscribe"))
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1019 self.brokerStatusButton.setToolTip(
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1020 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
1021 else:
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1022 self.brokerStatusButton.setText(self.tr("Subscribe"))
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1023 self.brokerStatusButton.setToolTip(
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1024 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
1025
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
1026 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
1027 """
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
1028 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
1029 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
1030
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
1031 @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
1032 @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
1033 @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
1034 @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
1035 """
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
1036 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
1037 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
1038 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
1039 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
1040 brokerList.insert(0, hostAndPort)
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1041 # limit the most recently used entries
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1042 maxBrokers = self.__plugin.getPreferences("RecentBrokersNumber")
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1043 brokerList = brokerList[:maxBrokers]
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
1044 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
1045
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
1046 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
1047
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
1048 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
1049 """
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
1050 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
1051 """
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
1052 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
1053
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
1054 # 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
1055 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
1056 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
1057
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
1058 # step 2a: populate the broker name list
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1059 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
1060 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
1061 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
1062 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
1063 self.brokerComboBox.setCurrentIndex(index)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1064
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
1065 # step 2b: populate the broker ports list
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1066 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
1067 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
1068 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
1069 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
1070 self.brokerPortComboBox.addItems(
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1071 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
1072 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
1073 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
1074
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
1075 # 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
1076 self.__setConnectButtonState()
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1077
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1078 def __populateProfileComboBox(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1079 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1080 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
1081 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1082 profilesDict = self.__plugin.getPreferences("BrokerProfiles")
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1083 mostRecentProfile = self.__plugin.getPreferences("MostRecentProfile")
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1084
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1085 self.profileComboBox.clear()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1086 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
1087 if mostRecentProfile:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1088 index = self.profileComboBox.findText(mostRecentProfile)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1089 if index >= 0:
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1090 self.profileComboBox.setCurrentIndex(index)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1091
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1092 self.__setConnectButtonState()
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1093
106
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1094 def __addTopicToRecent(self, topic):
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1095 """
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1096 Private method to add a topic to the list of recently subscribed
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1097 topics.
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1098
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1099 @param topic subscribed topic
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1100 @type str
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1101 """
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1102 topicsList = self.__plugin.getPreferences("RecentTopics")
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1103 if topic in topicsList:
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1104 topicsList.remove(topic)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1105 topicsList.insert(0, topic)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1106 # limit the most recently used entries
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1107 maxTopics = self.__plugin.getPreferences("RecentTopicsNumber")
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1108 topicsList = topicsList[:maxTopics]
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1109 self.__plugin.setPreferences("RecentTopics", topicsList)
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1110
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1111 self.__populateSubscribeTopicComboBox()
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1112
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1113 def __populateSubscribeTopicComboBox(self):
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1114 """
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1115 Private method to populate the subscribe topic combo box.
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1116 """
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1117 topicsList = self.__plugin.getPreferences("RecentTopics")
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1118
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1119 self.subscribeTopicComboBox.clear()
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1120 self.subscribeTopicComboBox.addItems(sorted(topicsList))
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1121 self.subscribeTopicComboBox.clearEditText()
84498095d511 Changed code to remember the most recently subscribed topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
1122
4
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1123 def __updateUnsubscribeTopicComboBox(self):
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1124 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1125 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
1126 """
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1127 self.unsubscribeTopicComboBox.clear()
991db89bda9c MqttMonitorWidget: added functionality to subscribe to and unsubscribe from topics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
1128 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
1129 self.unsubscribeButton.setEnabled(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1130 bool(self.__subscribedTopics))
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1131 self.unsubscribePropertiesButton.setEnabled(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1132 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
1133
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1134 def __updatePublishTopicComboBox(self, resetTopic=True):
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1135 """
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1136 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
1137
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1138 @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
1139 @type bool
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1140 """
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1141 currentTopic = self.publishTopicComboBox.currentText()
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1142 self.publishTopicComboBox.clear()
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1143 self.publishTopicComboBox.addItems(
27
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1144 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
1145 if resetTopic:
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1146 self.publishTopicComboBox.clearEditText()
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1147 else:
aeb276d76ec7 MqttMonitorWidget: improved handling of the Publish and Subscribe sections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1148 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
1149 self.publishTopicComboBox.setCurrentIndex(topicIndex)
8
95b56dcfa09b MqttMonitorWidget: implemented publish functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1150
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1151 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
1152 """
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1153 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
1154
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1155 @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
1156 @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
1157 @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
1158 @type bytes
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1159 @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
1160 @type int
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1161 @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
1162 @type bool
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1163 @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
1164 @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
1165 """
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
1166 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
1167
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
1168 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
1169 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
1170 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
1171 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
1172 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
1173
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
1174 textBlockFormat = textCursor.blockFormat()
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1175 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
1176 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
1177 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
1178 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
1179 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
1180 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
1181 textCursor.setBlockFormat(textBlockFormat)
92
2fb5c08019fd Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 86
diff changeset
1182 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
1183 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
1184
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1185 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
1186 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
1187
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
1188 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
1189 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
1190
100
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1191 if retain:
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1192 self.messagesEdit.setCurrentCharFormat(self.__messagesQosFormat)
9c29cfbd96c3 Updated the remaining on_... methods for MQTT v5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 99
diff changeset
1193 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
1194
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1195 if properties:
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1196 self.messagesEdit.setCurrentCharFormat(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1197 self.__messagesSubheaderFormat)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1198 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
1199 self.messagesEdit.setCurrentCharFormat(self.__messagesFormat)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1200 for name, value in sorted(properties.items()):
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1201 self.messagesEdit.insertPlainText(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1202 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
1203 .format(name, value)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1204 )
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1205
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1206 self.messagesEdit.setCurrentCharFormat(self.__messagesSubheaderFormat)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1207 self.messagesEdit.insertPlainText(self.tr("Message:\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
1208 payloadStr = str(payload, encoding="utf-8", errors="replace")
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1209 payloadStr = Utilities.filterAnsiSequences(payloadStr)
45
696b5d1a7b97 MqttMonitorWidget: enhanced the messages display slightly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
1210 self.messagesEdit.setCurrentCharFormat(self.__messagesFormat)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1211 if payloadStr:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1212 self.messagesEdit.insertPlainText(payloadStr)
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1213 else:
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1214 self.messagesEdit.insertPlainText(self.tr("<empty>"))
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
1215
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
1216 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
1217 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
1218 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
1219 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
1220
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1221 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
1222
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1223 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
1224 """
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1225 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
1226
7162c838cfc9 MqttMonitorWidget: added functionality to receive messages and show them in a text edit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
1227 @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
1228 @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
1229 @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
1230 @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
1231 """
6
d22f5ce3a07a MqttMonitorWidget: implemented part 1 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
1232 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
1233 topic = topic.strip()
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1234
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1235 if topic.startswith(MqttMonitorWidget.BrokerStatusTopicLoadPrefix):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1236 self.__handleBrokerLoadStatusMessage(topic, payloadStr)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1237 else:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1238 with contextlib.suppress(KeyError):
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1239 label = self.__statusLabelMapping[topic]
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1240 label.setText(payloadStr)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1241
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1242 def __handleBrokerLoadStatusMessage(self, topic, payloadStr):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1243 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1244 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
1245
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1246 @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
1247 @type str
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1248 @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
1249 received message
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1250 @type str
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1251 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1252 subtopic, topicElement = topic.rsplit("/", 1)
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1253 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
1254
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1255 with contextlib.suppress(KeyError):
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1256 label = self.__statusLabelMapping[subtopic]
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1257 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
1258 self.__statusLoadValues[subtopic]["1min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1259 self.__statusLoadValues[subtopic]["5min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1260 self.__statusLoadValues[subtopic]["15min"],
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1261 ))
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1262
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1263 def __clearBrokerStatusLabels(self):
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1264 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1265 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
1266 """
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1267 for statusLabelKey in self.__statusLabelMapping:
86
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1268 label = (
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1269 "- / - / -"
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1270 if statusLabelKey.startswith(
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1271 MqttMonitorWidget.BrokerStatusTopicLoadPrefix) else
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1272 "-"
620022b14cb4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 85
diff changeset
1273 )
11
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1274 self.__statusLabelMapping[statusLabelKey].setText(label)
90d3ebed4cc0 Finished implementing the connection options dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
1275
7
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1276 def __loadDefaultDictFactory(self):
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1277 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1278 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
1279
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1280 @return default dictionary entry
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1281 @rtype dict
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1282 """
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1283 return {
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1284 "1min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1285 "5min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1286 "15min": "-",
63e046d95702 MqttMonitorWidget: implemented part 2 of the status tab.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1287 }
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1288
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1289 def __setConnectionMode(self, profileMode):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1290 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1291 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
1292
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1293 @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
1294 @type bool
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1295 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1296 self.__connectionModeProfile = profileMode
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1297 if profileMode:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1298 self.modeButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1299 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1300 "profiles-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1301 ))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1302 else:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1303 self.modeButton.setIcon(UI.PixmapCache.getIcon(
67
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1304 os.path.join("MqttMonitor", "icons",
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1305 "quickopen-{0}".format(self.__iconSuffix))
a19699c0e71f Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
1306 ))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1307
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1308 self.profileComboBox.setVisible(profileMode)
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1309 self.brokerConnectionWidget.setVisible(not profileMode)
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1310 self.__setConnectButtonState()
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1311
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1312 def __setConnectButtonState(self):
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1313 """
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1314 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
1315 """
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1316 if self.__connectionModeProfile:
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1317 self.connectButton.setEnabled(
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1318 bool(self.profileComboBox.currentText()))
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1319 else:
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1320 self.connectButton.setEnabled(
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1321 bool(self.brokerComboBox.currentText()))
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1322
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1323 def __directConnectToBroker(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1324 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1325 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
1326 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1327 host = self.brokerComboBox.currentText()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1328 port = self.brokerPortComboBox.currentText().strip()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1329 try:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1330 port = int(port)
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1331 except ValueError:
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1332 # use standard port at 1883
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1333 port = 1883
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1334 if host:
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1335 self.brokerStatusLabel.setText(
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1336 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
1337 host, port))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1338 self.brokerStatusLabel.show()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1339
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1340 self.__addBrokerToRecent(host, port)
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1341 self.connectButton.setEnabled(False)
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1342
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1343 if self.clearWillButton.isChecked():
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1344 clearWill = True
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1345 self.clearWillButton.setChecked(False)
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1346 else:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1347 clearWill = False
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1348
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1349 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
1350 self.__client = self.__createClient()
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1351 self.__client.connectToServer(
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1352 host, port=port, clearWill=clearWill)
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1353 else:
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1354 self.__client = self.__createClient(
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1355 clientId=self.__connectionOptions["ClientId"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1356 cleanSession=self.__connectionOptions["CleanSession"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1357 protocol=self.__connectionOptions["Protocol"]
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1358 )
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1359 self.__client.connectToServerWithOptions(
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1360 host, port=port, options=self.__connectionOptions,
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1361 clearWill=clearWill)
18
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1362
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1363 def __profileConnectToBroker(self):
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1364 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1365 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
1366 """
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1367 profileName = self.profileComboBox.currentText()
bbfe5866b6aa MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
1368 if profileName:
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1369 self.__plugin.setPreferences("MostRecentProfile", profileName)
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1370
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1371 profilesDict = self.__plugin.getPreferences("BrokerProfiles")
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1372 connectionProfile = copy.deepcopy(profilesDict[profileName])
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1373 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
1374 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
1375 try:
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1376 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
1377 except KeyError:
105
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
1378 protocol = MqttProtocols(
36ec7431ad04 Made the default MQTT protocol a configuration item.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
1379 self.__plugin.getPreferences("DefaultProtocol"))
19
889a7c3c0e63 MqttConnectionProfilesDialog: continued implementing the connections profile dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
1380
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1381 self.brokerStatusLabel.setText(
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1382 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
1383 host, port))
30
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1384 self.brokerStatusLabel.show()
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1385
17ef10819773 Some smaller improvements and added some TODOs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
1386 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
1387
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1388 if self.clearWillButton.isChecked():
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1389 clearWill = True
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1390 self.clearWillButton.setChecked(False)
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1391 else:
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1392 clearWill = False
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1393
98
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1394 self.__client = self.__createClient(
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1395 clientId=connectionProfile["ClientId"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1396 cleanSession=connectionProfile["CleanSession"],
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1397 protocol=protocol
85d56e77e9df Corrected the connection code for MQTTv5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
1398 )
97
21f9c010dc42 Added the MQTT protocol version to the list of connection parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
1399 self.__client.connectToServerWithOptions(
104
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1400 host, port=port, options=connectionProfile,
9a4c9b7f078c Added support for 'Last Will' user properties and a button to clear the last will.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
1401 clearWill=clearWill)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1402
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1403 def __showProperties(self, typeStr, properties):
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1404 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1405 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
1406 pane.
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1407
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1408 @param typeStr message type
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1409 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1410 @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
1411 @type dict
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1412 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1413 textCursor = self.propertiesEdit.textCursor()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1414 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
1415 textCursor.movePosition(QTextCursor.MoveOperation.End)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1416 self.propertiesEdit.setTextCursor(textCursor)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1417
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1418 textBlockFormat = textCursor.blockFormat()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1419 if self.__isPropertiesAlternate:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1420 textBlockFormat.setBackground(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1421 self.propertiesEdit.palette().alternateBase())
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1422 else:
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1423 textBlockFormat.setBackground(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1424 self.propertiesEdit.palette().base())
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1425 textCursor.setBlockFormat(textBlockFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1426 textCursor.movePosition(QTextCursor.MoveOperation.End)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1427 self.propertiesEdit.setTextCursor(textCursor)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1428
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1429 self.propertiesEdit.setCurrentCharFormat(self.__propertiesTopicFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1430 self.propertiesEdit.insertPlainText(typeStr + "\n")
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1431
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1432 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
1433 self.propertiesEdit.setCurrentCharFormat(
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1434 self.__propertiesNameFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1435 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
1436 self.propertiesEdit.setCurrentCharFormat(self.__propertiesFormat)
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1437 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
1438
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1439 self.propertiesEdit.ensureCursorVisible()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1440
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1441 self.__isPropertiesAlternate = not self.__isPropertiesAlternate
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1442
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1443 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
1444 """
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1445 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
1446
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1447 @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
1448 'unsubscribe', 'publish')
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1449 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1450 @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
1451 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1452 @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
1453 @type str
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1454 """
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1455 from .MqttUserPropertiesEditor import MqttUserPropertiesEditorDialog
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1456
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1457 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
1458 properties = self.__plugin.getPreferences(preferencesKey)
103
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1459 dlg = MqttUserPropertiesEditorDialog(
5fe4f179975f Continued implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
1460 header, properties.get(key, []), self)
102
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1461 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
1462 properties[key] = dlg.getProperties()
70b8858199f5 Started implementing support for MQTT v5 user properties.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 101
diff changeset
1463 self.__plugin.setPreferences(preferencesKey, properties)

eric ide

mercurial