MqttMonitor/MqttMonitorWidget.py

Sat, 24 Jul 2021 16:12:05 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 24 Jul 2021 16:12:05 +0200
branch
eric7
changeset 106
84498095d511
parent 105
36ec7431ad04
child 112
b287c1d2cc78
permissions
-rw-r--r--

Changed code to remember the most recently subscribed topics.

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

eric ide

mercurial