Removed support for Python2. release-2.0.0

Tue, 23 Jun 2020 19:26:33 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 23 Jun 2020 19:26:33 +0200
changeset 78
a22328182bc2
parent 77
a580238d85de
child 79
e129ae18c834

Removed support for Python2.

ChangeLog file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionOptionsDialog.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionProfilesDialog.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.MqttMonitor.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/index.html file | annotate | diff | comparison | revisions
MqttMonitor/MqttClient.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttConnectionOptionsDialog.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttConnectionProfilesDialog.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttMonitorWidget.py file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_de.qm file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_de.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_empty.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_en.qm file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_en.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_es.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_ru.ts file | annotate | diff | comparison | revisions
PluginMqttMonitor.e4p file | annotate | diff | comparison | revisions
PluginMqttMonitor.py file | annotate | diff | comparison | revisions
PluginMqttMonitor.zip file | annotate | diff | comparison | revisions
--- a/ChangeLog	Thu May 28 17:36:58 2020 +0200
+++ b/ChangeLog	Tue Jun 23 19:26:33 2020 +0200
@@ -1,5 +1,8 @@
 ChangeLog
 ---------
+Version 2.0.0:
+- removed support for Python2
+
 Version 1.2.3
 - updated Russian translations
 
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html	Tue Jun 23 19:26:33 2020 +0200
@@ -18,69 +18,89 @@
 
 </style>
 </head>
-<body><a NAME="top" ID="top"></a>
+<body>
+<a NAME="top" ID="top"></a>
 <h1>Plugin_Mqtt_Monitor.MqttMonitor.MqttClient</h1>
+
 <p>
 Module implementing a PyQt wrapper around the paho MQTT client.
 </p>
 <h3>Global Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Classes</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttClient">MqttClient</a></td>
 <td>Class implementing a PyQt wrapper around the paho MQTT client.</td>
 </tr>
 </table>
 <h3>Functions</h3>
+
 <table>
+
 <tr>
 <td><a href="#mqttConnackMessage">mqttConnackMessage</a></td>
 <td>Module function to get the string associated with a CONNACK result.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#mqttErrorMessage">mqttErrorMessage</a></td>
 <td>Module function to get the error string associated with an MQTT error number.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#mqttLogLevelString">mqttLogLevelString</a></td>
 <td>Module function to get the log level string associated with a log level.</td>
 </tr>
 </table>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="MqttClient" ID="MqttClient"></a>
 <h2>MqttClient</h2>
+
 <p>
     Class implementing a PyQt wrapper around the paho MQTT client.
-</p><h3>Signals</h3>
+</p>
+<h3>Signals</h3>
 <dl>
+
 <dt>connectTimeout()</dt>
 <dd>
 emitted to indicate, that a connection attempt
         timed out
-</dd><dt>onConnect(flags, rc)</dt>
+</dd>
+<dt>onConnect(flags, rc)</dt>
 <dd>
 emitted after the client has connected to the
         broker
-</dd><dt>onDisconnected(rc)</dt>
+</dd>
+<dt>onDisconnected(rc)</dt>
 <dd>
 emitted after the client has disconnected from
         the broker
-</dd><dt>onLog(level, message)</dt>
+</dd>
+<dt>onLog(level, message)</dt>
 <dd>
 emitted to send client log data
-</dd><dt>onMessage(topic, payload, qos, retain)</dt>
+</dd>
+<dt>onMessage(topic, payload, qos, retain)</dt>
 <dd>
 emitted after a message has
         been received by the client
-</dd><dt>onPublish(mid)</dt>
+</dd>
+<dt>onPublish(mid)</dt>
 <dd>
 emitted after a message has been published
-</dd><dt>onSubscribe(mid, grantedQos)</dt>
+</dd>
+<dt>onSubscribe(mid, grantedQos)</dt>
 <dd>
 emitted after the client has
         subscribed to some topics
-</dd><dt>onUnsubscribe(mid)</dt>
+</dd>
+<dt>onUnsubscribe(mid)</dt>
 <dd>
 emitted after the client has unsubscribed from
         some topics
@@ -89,172 +109,228 @@
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
+
 <table>
 <tr><td>DefaultConnectTimeout</td></tr><tr><td>LogDebug</td></tr><tr><td>LogDisabled</td></tr><tr><td>LogError</td></tr><tr><td>LogInfo</td></tr><tr><td>LogLevelMap</td></tr><tr><td>LogNotice</td></tr><tr><td>LogWarning</td></tr>
 </table>
 <h3>Class Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Methods</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttClient.__init__">MqttClient</a></td>
 <td>Constructor</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.__connectTimeout">__connectTimeout</a></td>
 <td>Private slot handling a failed connection attempt.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.__initCallbacks">__initCallbacks</a></td>
 <td>Private method to initialize the MQTT callback methods.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.clearLastWill">clearLastWill</a></td>
 <td>Public method to remove a will that was previously configured with setLastWill().</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.connectToServer">connectToServer</a></td>
 <td>Public method to connect to a remote MQTT broker.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.connectToServerWithOptions">connectToServerWithOptions</a></td>
 <td>Public method to connect to a remote MQTT broker.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.defaultConnectionOptions">defaultConnectionOptions</a></td>
 <td>Public method to get a connection options dictionary with default values.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.disconnectFromServer">disconnectFromServer</a></td>
 <td>Public method to disconnect the client from the remote broker.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.publish">publish</a></td>
 <td>Public method to publish to a topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.reconnectToServer">reconnectToServer</a></td>
 <td>Public method to reconnect the client with the same parameters.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.reinitialise">reinitialise</a></td>
 <td>Public method to reinitialize the client with given data.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setConnectionTimeout">setConnectionTimeout</a></td>
 <td>Public method to set the connection timeout value.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setLastWill">setLastWill</a></td>
 <td>Public method to set the last will of the client.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setMaxInflightMessages">setMaxInflightMessages</a></td>
 <td>Public method to set the maximum number of messages with QoS > 0 that can be part way through their network flow at once.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setMaxQueuedMessages">setMaxQueuedMessages</a></td>
 <td>Public method to set the maximum number of messages with QoS > 0 that can be pending in the outgoing message queue.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setTLS">setTLS</a></td>
 <td>Public method to enable secure connections and set the TLS parameters.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setUserCredentials">setUserCredentials</a></td>
 <td>Public method to set the user name and optionally the password.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.setUserData">setUserData</a></td>
 <td>Public method to set the user data.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.startLoop">startLoop</a></td>
 <td>Public method to start the MQTT client loop.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.stopLoop">stopLoop</a></td>
 <td>Public method to stop the MQTT client loop.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.subscribe">subscribe</a></td>
 <td>Public method to subscribe to topics with quality of service.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttClient.unsubscribe">unsubscribe</a></td>
 <td>Public method to unsubscribe topics.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
+
 <a NAME="MqttClient.__init__" ID="MqttClient.__init__"></a>
 <h4>MqttClient (Constructor)</h4>
 <b>MqttClient</b>(<i>clientId="", cleanSession=True, userdata=None, protocol=mqtt.MQTTv311, transport="tcp", parent=None</i>)
+
 <p>
         Constructor
-</p><dl>
+</p>
+<dl>
+
 <dt><i>clientId</i> (str)</dt>
 <dd>
 ID to be used for the client
-</dd><dt><i>cleanSession</i> (bool)</dt>
+</dd>
+<dt><i>cleanSession</i> (bool)</dt>
 <dd>
 flag indicating to start a clean session
-</dd><dt><i>userdata</i> (any)</dt>
+</dd>
+<dt><i>userdata</i> (any)</dt>
 <dd>
 user data
-</dd><dt><i>protocol</i> (int, one of mqtt.MQTTv31 or mqtt.MQTTv311)</dt>
+</dd>
+<dt><i>protocol</i> (int, one of mqtt.MQTTv31 or mqtt.MQTTv311)</dt>
 <dd>
 version of the MQTT protocol to use
-</dd><dt><i>transport</i> (str, one of "tcp" or "websockets")</dt>
+</dd>
+<dt><i>transport</i> (str, one of "tcp" or "websockets")</dt>
 <dd>
 transport to be used
-</dd><dt><i>parent</i> (QObject)</dt>
+</dd>
+<dt><i>parent</i> (QObject)</dt>
 <dd>
 reference to the parent object
 </dd>
-</dl><a NAME="MqttClient.__connectTimeout" ID="MqttClient.__connectTimeout"></a>
+</dl>
+<a NAME="MqttClient.__connectTimeout" ID="MqttClient.__connectTimeout"></a>
 <h4>MqttClient.__connectTimeout</h4>
 <b>__connectTimeout</b>(<i></i>)
+
 <p>
         Private slot handling a failed connection attempt.
-</p><a NAME="MqttClient.__initCallbacks" ID="MqttClient.__initCallbacks"></a>
+</p>
+<a NAME="MqttClient.__initCallbacks" ID="MqttClient.__initCallbacks"></a>
 <h4>MqttClient.__initCallbacks</h4>
 <b>__initCallbacks</b>(<i></i>)
+
 <p>
         Private method to initialize the MQTT callback methods.
-</p><a NAME="MqttClient.clearLastWill" ID="MqttClient.clearLastWill"></a>
+</p>
+<a NAME="MqttClient.clearLastWill" ID="MqttClient.clearLastWill"></a>
 <h4>MqttClient.clearLastWill</h4>
 <b>clearLastWill</b>(<i></i>)
+
 <p>
         Public method to remove a will that was previously configured with
         setLastWill().
-</p><a NAME="MqttClient.connectToServer" ID="MqttClient.connectToServer"></a>
+</p>
+<a NAME="MqttClient.connectToServer" ID="MqttClient.connectToServer"></a>
 <h4>MqttClient.connectToServer</h4>
 <b>connectToServer</b>(<i>host, port=1883, keepalive=60, bindAddress="", reinit=True</i>)
+
 <p>
         Public method to connect to a remote MQTT broker.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>host</i> (str)</dt>
 <dd>
 host name or IP address of the remote broker
-</dd><dt><i>port</i> (int)</dt>
+</dd>
+<dt><i>port</i> (int)</dt>
 <dd>
 network port of the server host to connect to (default:
             1883, using TLS: 8883)
-</dd><dt><i>keepalive</i> (int)</dt>
+</dd>
+<dt><i>keepalive</i> (int)</dt>
 <dd>
 maximum period in seconds allowed between
             communications with the broker
-</dd><dt><i>bindAddress</i> (str)</dt>
+</dd>
+<dt><i>bindAddress</i> (str)</dt>
 <dd>
 IP address of a local network interface to bind
             this client to
-</dd><dt><i>reinit</i> (bool)</dt>
+</dd>
+<dt><i>reinit</i> (bool)</dt>
 <dd>
 flag indicating to reinitialize the MQTT client before
             trying to connect with the given parameters
 </dd>
-</dl><a NAME="MqttClient.connectToServerWithOptions" ID="MqttClient.connectToServerWithOptions"></a>
+</dl>
+<a NAME="MqttClient.connectToServerWithOptions" ID="MqttClient.connectToServerWithOptions"></a>
 <h4>MqttClient.connectToServerWithOptions</h4>
 <b>connectToServerWithOptions</b>(<i>host, port=1883, bindAddress="", options=None</i>)
+
 <p>
         Public method to connect to a remote MQTT broker.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>host</i> (str)</dt>
 <dd>
 host name or IP address of the remote broker
-</dd><dt><i>port</i> (int)</dt>
+</dd>
+<dt><i>port</i> (int)</dt>
 <dd>
 network port of the server host to connect to (default:
             1883, using TLS: 8883)
-</dd><dt><i>bindAddress</i> (str)</dt>
+</dd>
+<dt><i>bindAddress</i> (str)</dt>
 <dd>
 IP address of a local network interface to bind
             this client to
-</dd><dt><i>options</i> (dict)</dt>
+</dd>
+<dt><i>options</i> (dict)</dt>
 <dd>
 dictionary containing the connection options. This
             dictionary should contain the keys "ClientId", "Keepalive",
@@ -262,13 +338,16 @@
             "WillQos", "WillRetain", "TlsEnable", "TlsCaCert", "TlsClientCert",
             "TlsClientKey", "ConnectionTimeout"
 </dd>
-</dl><a NAME="MqttClient.defaultConnectionOptions" ID="MqttClient.defaultConnectionOptions"></a>
+</dl>
+<a NAME="MqttClient.defaultConnectionOptions" ID="MqttClient.defaultConnectionOptions"></a>
 <h4>MqttClient.defaultConnectionOptions</h4>
 <b>defaultConnectionOptions</b>(<i></i>)
+
 <p>
         Public method to get a connection options dictionary with default
         values.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 dictionary containing the default connection options. It has
@@ -277,293 +356,385 @@
             "TlsEnable", "TlsCaCert", "TlsClientCert", "TlsClientKey",
             "ConnectionTimeout".
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 dict
 </dd>
-</dl><a NAME="MqttClient.disconnectFromServer" ID="MqttClient.disconnectFromServer"></a>
+</dl>
+<a NAME="MqttClient.disconnectFromServer" ID="MqttClient.disconnectFromServer"></a>
 <h4>MqttClient.disconnectFromServer</h4>
 <b>disconnectFromServer</b>(<i></i>)
+
 <p>
         Public method to disconnect the client from the remote broker.
-</p><a NAME="MqttClient.publish" ID="MqttClient.publish"></a>
+</p>
+<a NAME="MqttClient.publish" ID="MqttClient.publish"></a>
 <h4>MqttClient.publish</h4>
 <b>publish</b>(<i>topic, payload=None, qos=0, retain=False</i>)
+
 <p>
         Public method to publish to a topic.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic to publish to
-</dd><dt><i>payload</i> (str, bytes, int or float)</dt>
+</dd>
+<dt><i>payload</i> (str, bytes, int or float)</dt>
 <dd>
 data to be published
-</dd><dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
+</dd>
+<dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
 <dd>
 quality of service
-</dd><dt><i>retain</i> (bool)</dt>
+</dd>
+<dt><i>retain</i> (bool)</dt>
 <dd>
 flag indicating to set as the "last known good"/retained
             message for the topic
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 message info object
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 mqtt.MQTTMessageInfo
 </dd>
-</dl><a NAME="MqttClient.reconnectToServer" ID="MqttClient.reconnectToServer"></a>
+</dl>
+<a NAME="MqttClient.reconnectToServer" ID="MqttClient.reconnectToServer"></a>
 <h4>MqttClient.reconnectToServer</h4>
 <b>reconnectToServer</b>(<i></i>)
+
 <p>
         Public method to reconnect the client with the same parameters.
-</p><a NAME="MqttClient.reinitialise" ID="MqttClient.reinitialise"></a>
+</p>
+<a NAME="MqttClient.reinitialise" ID="MqttClient.reinitialise"></a>
 <h4>MqttClient.reinitialise</h4>
 <b>reinitialise</b>(<i>clientId="", cleanSession=True, userdata=None</i>)
+
 <p>
         Public method to reinitialize the client with given data.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>clientId</i> (str)</dt>
 <dd>
 ID to be used for the client
-</dd><dt><i>cleanSession</i> (bool)</dt>
+</dd>
+<dt><i>cleanSession</i> (bool)</dt>
 <dd>
 flag indicating to start a clean session
-</dd><dt><i>userdata</i> (any)</dt>
+</dd>
+<dt><i>userdata</i> (any)</dt>
 <dd>
 user data
 </dd>
-</dl><a NAME="MqttClient.setConnectionTimeout" ID="MqttClient.setConnectionTimeout"></a>
+</dl>
+<a NAME="MqttClient.setConnectionTimeout" ID="MqttClient.setConnectionTimeout"></a>
 <h4>MqttClient.setConnectionTimeout</h4>
 <b>setConnectionTimeout</b>(<i>timeout</i>)
+
 <p>
         Public method to set the connection timeout value.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>timeout</i> (int)</dt>
 <dd>
 timeout value to be set in seconds
 </dd>
-</dl><a NAME="MqttClient.setLastWill" ID="MqttClient.setLastWill"></a>
+</dl>
+<a NAME="MqttClient.setLastWill" ID="MqttClient.setLastWill"></a>
 <h4>MqttClient.setLastWill</h4>
 <b>setLastWill</b>(<i>topic, payload=None, qos=0, retain=False</i>)
+
 <p>
         Public method to set the last will of the client.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic the will message should be published on
-</dd><dt><i>payload</i> (str, bytes, int or float)</dt>
+</dd>
+<dt><i>payload</i> (str, bytes, int or float)</dt>
 <dd>
 message to send as a will
-</dd><dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
+</dd>
+<dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
 <dd>
 quality of service level to use for the will
-</dd><dt><i>retain</i> (bool)</dt>
+</dd>
+<dt><i>retain</i> (bool)</dt>
 <dd>
 flag indicating to set as the "last known good"/retained
             message for the will topic
 </dd>
-</dl><a NAME="MqttClient.setMaxInflightMessages" ID="MqttClient.setMaxInflightMessages"></a>
+</dl>
+<a NAME="MqttClient.setMaxInflightMessages" ID="MqttClient.setMaxInflightMessages"></a>
 <h4>MqttClient.setMaxInflightMessages</h4>
 <b>setMaxInflightMessages</b>(<i>inflight=20</i>)
+
 <p>
         Public method to set the maximum number of messages with QoS > 0 that
         can be part way through their network flow at once.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>inflight</i> (int)</dt>
 <dd>
 maximum number of messages in flight
 </dd>
-</dl><a NAME="MqttClient.setMaxQueuedMessages" ID="MqttClient.setMaxQueuedMessages"></a>
+</dl>
+<a NAME="MqttClient.setMaxQueuedMessages" ID="MqttClient.setMaxQueuedMessages"></a>
 <h4>MqttClient.setMaxQueuedMessages</h4>
 <b>setMaxQueuedMessages</b>(<i>queueSize=0</i>)
+
 <p>
         Public method to set the maximum number of messages with QoS > 0 that
         can be pending in the outgoing message queue.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>queueSize</i> (int)</dt>
 <dd>
 maximum number of queued messages (0 = unlimited)
 </dd>
-</dl><a NAME="MqttClient.setTLS" ID="MqttClient.setTLS"></a>
+</dl>
+<a NAME="MqttClient.setTLS" ID="MqttClient.setTLS"></a>
 <h4>MqttClient.setTLS</h4>
 <b>setTLS</b>(<i>caCerts=None, certFile=None, keyFile=None</i>)
+
 <p>
         Public method to enable secure connections and set the TLS parameters.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>caCerts</i> (str)</dt>
 <dd>
 path to the Certificate Authority certificates file
-</dd><dt><i>certFile</i> (str)</dt>
+</dd>
+<dt><i>certFile</i> (str)</dt>
 <dd>
 PEM encoded client certificate file
-</dd><dt><i>keyFile</i> (str)</dt>
+</dd>
+<dt><i>keyFile</i> (str)</dt>
 <dd>
 PEM encoded private key file
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 tuple containing a success flag and the error string of the
             paho-mqtt library
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 tuple of (bool, str)
 </dd>
-</dl><a NAME="MqttClient.setUserCredentials" ID="MqttClient.setUserCredentials"></a>
+</dl>
+<a NAME="MqttClient.setUserCredentials" ID="MqttClient.setUserCredentials"></a>
 <h4>MqttClient.setUserCredentials</h4>
 <b>setUserCredentials</b>(<i>username, password=None</i>)
+
 <p>
         Public method to set the user name and optionally the password.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>username</i> (str)</dt>
 <dd>
 user name to be set
-</dd><dt><i>password</i> (str)</dt>
+</dd>
+<dt><i>password</i> (str)</dt>
 <dd>
 optional password
 </dd>
-</dl><a NAME="MqttClient.setUserData" ID="MqttClient.setUserData"></a>
+</dl>
+<a NAME="MqttClient.setUserData" ID="MqttClient.setUserData"></a>
 <h4>MqttClient.setUserData</h4>
 <b>setUserData</b>(<i>userdata</i>)
+
 <p>
         Public method to set the user data.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>userdata</i> (any)</dt>
 <dd>
 user data
 </dd>
-</dl><a NAME="MqttClient.startLoop" ID="MqttClient.startLoop"></a>
+</dl>
+<a NAME="MqttClient.startLoop" ID="MqttClient.startLoop"></a>
 <h4>MqttClient.startLoop</h4>
 <b>startLoop</b>(<i></i>)
+
 <p>
         Public method to start the MQTT client loop.
-</p><a NAME="MqttClient.stopLoop" ID="MqttClient.stopLoop"></a>
+</p>
+<a NAME="MqttClient.stopLoop" ID="MqttClient.stopLoop"></a>
 <h4>MqttClient.stopLoop</h4>
 <b>stopLoop</b>(<i></i>)
+
 <p>
         Public method to stop the MQTT client loop.
-</p><a NAME="MqttClient.subscribe" ID="MqttClient.subscribe"></a>
+</p>
+<a NAME="MqttClient.subscribe" ID="MqttClient.subscribe"></a>
 <h4>MqttClient.subscribe</h4>
 <b>subscribe</b>(<i>topic, qos=0</i>)
+
 <p>
         Public method to subscribe to topics with quality of service.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str or tuple of (str, int) or list of tuple of (str, int))</dt>
 <dd>
 single topic to subscribe to or a tuple with a topic
             and a QoS or a list of tuples with a topic and a QoS each
-</dd><dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
+</dd>
+<dt><i>qos</i> (int, one of 0, 1 or 2)</dt>
 <dd>
 quality of service
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 tuple containing the result code and the message ID
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 tuple of (int, int)
 </dd>
-</dl><a NAME="MqttClient.unsubscribe" ID="MqttClient.unsubscribe"></a>
+</dl>
+<a NAME="MqttClient.unsubscribe" ID="MqttClient.unsubscribe"></a>
 <h4>MqttClient.unsubscribe</h4>
 <b>unsubscribe</b>(<i>topic</i>)
+
 <p>
         Public method to unsubscribe topics.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str or list of str)</dt>
 <dd>
 topic or list of topics to unsubscribe
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 tuple containing the result code and the message ID
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 tuple of (int, int)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="mqttConnackMessage" ID="mqttConnackMessage"></a>
 <h2>mqttConnackMessage</h2>
 <b>mqttConnackMessage</b>(<i>connackCode</i>)
+
 <p>
     Module function to get the string associated with a CONNACK result.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>connackCode</i> (int)</dt>
 <dd>
 result code of the connection request
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 textual representation for the result code
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 str
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="mqttErrorMessage" ID="mqttErrorMessage"></a>
 <h2>mqttErrorMessage</h2>
 <b>mqttErrorMessage</b>(<i>mqttErrno</i>)
+
 <p>
     Module function to get the error string associated with an MQTT error
     number.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>mqttErrno</i> (int)</dt>
 <dd>
 result code of a MQTT request
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 textual representation of the result code
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 str
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="mqttLogLevelString" ID="mqttLogLevelString"></a>
 <h2>mqttLogLevelString</h2>
 <b>mqttLogLevelString</b>(<i>mqttLogLevel, isMqttLogLevel=True</i>)
+
 <p>
     Module function to get the log level string associated with a log level.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>mqttLogLevel</i> (int)</dt>
 <dd>
 log level of the paho-mqtt client
-</dd><dt><i>isMqttLogLevel</i> (bool)</dt>
+</dd>
+<dt><i>isMqttLogLevel</i> (bool)</dt>
 <dd>
 flag indicating a MQTT log level is given (if
         False it is the MqttClient variant, i.e. Debug being lowest)
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 textual representation of the log level
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 str
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionOptionsDialog.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionOptionsDialog.html	Tue Jun 23 19:26:33 2020 +0200
@@ -18,103 +18,134 @@
 
 </style>
 </head>
-<body><a NAME="top" ID="top"></a>
+<body>
+<a NAME="top" ID="top"></a>
 <h1>Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionOptionsDialog</h1>
+
 <p>
 Module implementing a dialog to enter MQTT connection options.
 </p>
 <h3>Global Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Classes</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttConnectionOptionsDialog">MqttConnectionOptionsDialog</a></td>
 <td>Class implementing a dialog to enter MQTT connection options.</td>
 </tr>
 </table>
 <h3>Functions</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="MqttConnectionOptionsDialog" ID="MqttConnectionOptionsDialog"></a>
 <h2>MqttConnectionOptionsDialog</h2>
+
 <p>
     Class implementing a dialog to enter MQTT connection options.
 </p>
 <h3>Derived from</h3>
 QDialog, Ui_MqttConnectionOptionsDialog
 <h3>Class Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Class Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Methods</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttConnectionOptionsDialog.__init__">MqttConnectionOptionsDialog</a></td>
 <td>Constructor</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.__populateDefaults">__populateDefaults</a></td>
 <td>Private method to populate the dialog.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.__updateOkButton">__updateOkButton</a></td>
 <td>Private method to update the enabled state of the OK button.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.getConnectionOptions">getConnectionOptions</a></td>
 <td>Public method get the entered connection options.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
 <td>Private slot to handle the press of a button box button.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked">on_cleanSessionCheckBox_clicked</a></td>
 <td>Private slot to handle a change of the clean session selection.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.on_clientIdEdit_textChanged">on_clientIdEdit_textChanged</a></td>
 <td>Private slot handling a change of the client ID string.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionOptionsDialog.on_generateIdButton_clicked">on_generateIdButton_clicked</a></td>
 <td>Private slot to generate a client ID.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
+
 <a NAME="MqttConnectionOptionsDialog.__init__" ID="MqttConnectionOptionsDialog.__init__"></a>
 <h4>MqttConnectionOptionsDialog (Constructor)</h4>
 <b>MqttConnectionOptionsDialog</b>(<i>client, options=None, parent=None</i>)
+
 <p>
         Constructor
-</p><dl>
+</p>
+<dl>
+
 <dt><i>client</i> (MqttClient)</dt>
 <dd>
 reference to the MQTT client object
-</dd><dt><i>options</i> (dict)</dt>
+</dd>
+<dt><i>options</i> (dict)</dt>
 <dd>
 dictionary containing the connection options to
             populate the dialog with. It must have the keys "ClientId",
             "Keepalive", "CleanSession", "Username", "Password", "WillTopic",
             "WillMessage", "WillQos", "WillRetain", "TlsEnable", "TlsCaCert",
             "ConnectionTimeout".
-</dd><dt><i>parent</i> (QWidget)</dt>
+</dd>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
 reference to the parent widget
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.__populateDefaults" ID="MqttConnectionOptionsDialog.__populateDefaults"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.__populateDefaults" ID="MqttConnectionOptionsDialog.__populateDefaults"></a>
 <h4>MqttConnectionOptionsDialog.__populateDefaults</h4>
 <b>__populateDefaults</b>(<i>options=None</i>)
+
 <p>
         Private method to populate the dialog.
-</p><p>
+</p>
+<p>
         If no options dictionary is given, the dialog will be populated with
         default values.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>options</i> (dict)</dt>
 <dd>
 dictionary containing the connection options to populate
@@ -123,17 +154,22 @@
             "WillQos", "WillRetain", "TlsEnable", "TlsCaCert",
             "ConnectionTimeout".
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.__updateOkButton" ID="MqttConnectionOptionsDialog.__updateOkButton"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.__updateOkButton" ID="MqttConnectionOptionsDialog.__updateOkButton"></a>
 <h4>MqttConnectionOptionsDialog.__updateOkButton</h4>
 <b>__updateOkButton</b>(<i></i>)
+
 <p>
         Private method to update the enabled state of the OK button.
-</p><a NAME="MqttConnectionOptionsDialog.getConnectionOptions" ID="MqttConnectionOptionsDialog.getConnectionOptions"></a>
+</p>
+<a NAME="MqttConnectionOptionsDialog.getConnectionOptions" ID="MqttConnectionOptionsDialog.getConnectionOptions"></a>
 <h4>MqttConnectionOptionsDialog.getConnectionOptions</h4>
 <b>getConnectionOptions</b>(<i></i>)
+
 <p>
         Public method get the entered connection options.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 dictionary containing the connection options. It has the keys
@@ -141,44 +177,59 @@
             "WillTopic", "WillMessage", "WillQos", "WillRetain", "TlsEnable",
             "TlsCaCert", "ConnectionTimeout".
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 tuple of (int, dict)
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.on_buttonBox_clicked" ID="MqttConnectionOptionsDialog.on_buttonBox_clicked"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.on_buttonBox_clicked" ID="MqttConnectionOptionsDialog.on_buttonBox_clicked"></a>
 <h4>MqttConnectionOptionsDialog.on_buttonBox_clicked</h4>
 <b>on_buttonBox_clicked</b>(<i>button</i>)
+
 <p>
         Private slot to handle the press of a button box button.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>button</i> (QAbstractButton)</dt>
 <dd>
 button that has been pressed
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked" ID="MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked" ID="MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked"></a>
 <h4>MqttConnectionOptionsDialog.on_cleanSessionCheckBox_clicked</h4>
 <b>on_cleanSessionCheckBox_clicked</b>(<i>checked</i>)
+
 <p>
         Private slot to handle a change of the clean session selection.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 current state of the clean session selection
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.on_clientIdEdit_textChanged" ID="MqttConnectionOptionsDialog.on_clientIdEdit_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.on_clientIdEdit_textChanged" ID="MqttConnectionOptionsDialog.on_clientIdEdit_textChanged"></a>
 <h4>MqttConnectionOptionsDialog.on_clientIdEdit_textChanged</h4>
 <b>on_clientIdEdit_textChanged</b>(<i>clientId</i>)
+
 <p>
         Private slot handling a change of the client ID string.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>clientId</i> (str)</dt>
 <dd>
 client ID
 </dd>
-</dl><a NAME="MqttConnectionOptionsDialog.on_generateIdButton_clicked" ID="MqttConnectionOptionsDialog.on_generateIdButton_clicked"></a>
+</dl>
+<a NAME="MqttConnectionOptionsDialog.on_generateIdButton_clicked" ID="MqttConnectionOptionsDialog.on_generateIdButton_clicked"></a>
 <h4>MqttConnectionOptionsDialog.on_generateIdButton_clicked</h4>
 <b>on_generateIdButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to generate a client ID.
 </p>
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionProfilesDialog.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionProfilesDialog.html	Tue Jun 23 19:26:33 2020 +0200
@@ -18,153 +18,201 @@
 
 </style>
 </head>
-<body><a NAME="top" ID="top"></a>
+<body>
+<a NAME="top" ID="top"></a>
 <h1>Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionProfilesDialog</h1>
+
 <p>
 Module implementing a dialog to edit the MQTT connection profiles.
 </p>
 <h3>Global Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Classes</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttConnectionProfilesDialog">MqttConnectionProfilesDialog</a></td>
 <td>Class implementing a dialog to edit the MQTT connection profiles.</td>
 </tr>
 </table>
 <h3>Functions</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="MqttConnectionProfilesDialog" ID="MqttConnectionProfilesDialog"></a>
 <h2>MqttConnectionProfilesDialog</h2>
+
 <p>
     Class implementing a dialog to edit the MQTT connection profiles.
 </p>
 <h3>Derived from</h3>
 QDialog, Ui_MqttConnectionProfilesDialog
 <h3>Class Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Class Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Methods</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttConnectionProfilesDialog.__init__">MqttConnectionProfilesDialog</a></td>
 <td>Constructor</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__applyProfile">__applyProfile</a></td>
 <td>Private method to apply the entered data to the list of profiles.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__clearProfile">__clearProfile</a></td>
 <td>Private method to clear the profile data entry fields.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__defaultProfile">__defaultProfile</a></td>
 <td>Private method to populate non-existing profile items.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__isChangedProfile">__isChangedProfile</a></td>
 <td>Private method to check, if the currently shown profile contains some changed data.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__populateProfile">__populateProfile</a></td>
 <td>Private method to populate the profile data entry fields.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__populateProfileDefault">__populateProfileDefault</a></td>
 <td>Private method to populate the profile data entry fields with default profile values.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__populateProfilesList">__populateProfilesList</a></td>
 <td>Private method to populate the list of defined profiles.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__resetProfile">__resetProfile</a></td>
 <td>Private method to reset the profile data entry fields to their stored values.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.__updateApplyButton">__updateApplyButton</a></td>
 <td>Private method to set the state of the Apply button.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.accept">accept</a></td>
 <td>Public slot to accept the dialog.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.getProfiles">getProfiles</a></td>
 <td>Public method to return a dictionary of profiles.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged">on_brokerAddressEdit_textChanged</a></td>
 <td>Private slot handling a change of the broker address.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked">on_cleanSessionCheckBox_clicked</a></td>
 <td>Private slot to handle a change of the clean session selection.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_clientIdEdit_textChanged">on_clientIdEdit_textChanged</a></td>
 <td>Private slot handling a change of the client ID string.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_copyButton_clicked">on_copyButton_clicked</a></td>
 <td>Private slot to copy the selected profile entry.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_generateIdButton_clicked">on_generateIdButton_clicked</a></td>
 <td>Private slot to generate a client ID.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_minusButton_clicked">on_minusButton_clicked</a></td>
 <td>Private slot to delete the selected entry.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_plusButton_clicked">on_plusButton_clicked</a></td>
 <td>Private slot to add a new empty profile entry.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_profileButtonBox_clicked">on_profileButtonBox_clicked</a></td>
 <td>Private slot handling presses of the profile buttons.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_profileEdit_textChanged">on_profileEdit_textChanged</a></td>
 <td>Private slot to handle changes of the profile name.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_profilesList_currentItemChanged">on_profilesList_currentItemChanged</a></td>
 <td>Private slot to handle a change of the current profile.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled">on_tlsCertsFileButton_toggled</a></td>
 <td>Private slot handling the selection of using a non-default certificates file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged">on_tlsCertsFilePicker_textChanged</a></td>
 <td>Private slot handling a change of the TLS CA certificates file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled">on_tlsDefaultCertsButton_toggled</a></td>
 <td>Private slot handling the selection of using the default certificates file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsGroupBox_toggled">on_tlsGroupBox_toggled</a></td>
 <td>Private slot handling the selection of TLS mode.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled">on_tlsSelfSignedCertsButton_toggled</a></td>
 <td>Private slot handling the selection of using self signed client certificate and key files.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged">on_tlsSelfSignedCertsFilePicker_textChanged</a></td>
 <td>Private slot handling a change of the TLS CA certificates file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged">on_tlsSelfSignedClientCertFilePicker_textChanged</a></td>
 <td>Private slot handling a change of the TLS client certificate file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged">on_tlsSelfSignedClientKeyFilePicker_textChanged</a></td>
 <td>Private slot handling a change of the TLS client key file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttConnectionProfilesDialog.reject">reject</a></td>
 <td>Public slot to reject the dialog changes.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
+
 <a NAME="MqttConnectionProfilesDialog.__init__" ID="MqttConnectionProfilesDialog.__init__"></a>
 <h4>MqttConnectionProfilesDialog (Constructor)</h4>
 <b>MqttConnectionProfilesDialog</b>(<i>client, profiles, parent=None</i>)
+
 <p>
         Constructor
-</p><dl>
+</p>
+<dl>
+
 <dt><i>client</i> (MqttClient)</dt>
 <dd>
 reference to the MQTT client object
-</dd><dt><i>profiles</i> (dict)</dt>
+</dd>
+<dt><i>profiles</i> (dict)</dt>
 <dd>
 dictionary containing dictionaries containing the
             connection parameters. Each entry must have the keys
@@ -172,109 +220,143 @@
             "Keepalive", "CleanSession", "Username", "Password", "WillTopic",
             "WillMessage", "WillQos", "WillRetain", "TlsEnable", "TlsCaCert",
             "TlsClientCert", "TlsClientKey", "ConnectionTimeout".
-</dd><dt><i>parent</i> (QWidget)</dt>
+</dd>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
 reference to the parent widget
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__applyProfile" ID="MqttConnectionProfilesDialog.__applyProfile"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__applyProfile" ID="MqttConnectionProfilesDialog.__applyProfile"></a>
 <h4>MqttConnectionProfilesDialog.__applyProfile</h4>
 <b>__applyProfile</b>(<i></i>)
+
 <p>
         Private method to apply the entered data to the list of profiles.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 name of the applied profile
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 str
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__clearProfile" ID="MqttConnectionProfilesDialog.__clearProfile"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__clearProfile" ID="MqttConnectionProfilesDialog.__clearProfile"></a>
 <h4>MqttConnectionProfilesDialog.__clearProfile</h4>
 <b>__clearProfile</b>(<i></i>)
+
 <p>
         Private method to clear the profile data entry fields.
-</p><a NAME="MqttConnectionProfilesDialog.__defaultProfile" ID="MqttConnectionProfilesDialog.__defaultProfile"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.__defaultProfile" ID="MqttConnectionProfilesDialog.__defaultProfile"></a>
 <h4>MqttConnectionProfilesDialog.__defaultProfile</h4>
 <b>__defaultProfile</b>(<i></i>)
+
 <p>
         Private method to populate non-existing profile items.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 default dictionary entry
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 dict
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__isChangedProfile" ID="MqttConnectionProfilesDialog.__isChangedProfile"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__isChangedProfile" ID="MqttConnectionProfilesDialog.__isChangedProfile"></a>
 <h4>MqttConnectionProfilesDialog.__isChangedProfile</h4>
 <b>__isChangedProfile</b>(<i></i>)
+
 <p>
         Private method to check, if the currently shown profile contains some
         changed data.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 flag indicating changed data
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 bool
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__populateProfile" ID="MqttConnectionProfilesDialog.__populateProfile"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__populateProfile" ID="MqttConnectionProfilesDialog.__populateProfile"></a>
 <h4>MqttConnectionProfilesDialog.__populateProfile</h4>
 <b>__populateProfile</b>(<i>profileName</i>)
+
 <p>
         Private method to populate the profile data entry fields.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>profileName</i> (str)</dt>
 <dd>
 name of the profile to get data from
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__populateProfileDefault" ID="MqttConnectionProfilesDialog.__populateProfileDefault"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__populateProfileDefault" ID="MqttConnectionProfilesDialog.__populateProfileDefault"></a>
 <h4>MqttConnectionProfilesDialog.__populateProfileDefault</h4>
 <b>__populateProfileDefault</b>(<i></i>)
+
 <p>
         Private method to populate the profile data entry fields with default
         profile values.
-</p><a NAME="MqttConnectionProfilesDialog.__populateProfilesList" ID="MqttConnectionProfilesDialog.__populateProfilesList"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.__populateProfilesList" ID="MqttConnectionProfilesDialog.__populateProfilesList"></a>
 <h4>MqttConnectionProfilesDialog.__populateProfilesList</h4>
 <b>__populateProfilesList</b>(<i>currentProfile=""</i>)
+
 <p>
         Private method to populate the list of defined profiles.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>currentProfile</i> (str)</dt>
 <dd>
 name of the current profile
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.__resetProfile" ID="MqttConnectionProfilesDialog.__resetProfile"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.__resetProfile" ID="MqttConnectionProfilesDialog.__resetProfile"></a>
 <h4>MqttConnectionProfilesDialog.__resetProfile</h4>
 <b>__resetProfile</b>(<i></i>)
+
 <p>
         Private method to reset the profile data entry fields to their stored
         values.
-</p><a NAME="MqttConnectionProfilesDialog.__updateApplyButton" ID="MqttConnectionProfilesDialog.__updateApplyButton"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.__updateApplyButton" ID="MqttConnectionProfilesDialog.__updateApplyButton"></a>
 <h4>MqttConnectionProfilesDialog.__updateApplyButton</h4>
 <b>__updateApplyButton</b>(<i></i>)
+
 <p>
         Private method to set the state of the Apply button.
-</p><a NAME="MqttConnectionProfilesDialog.accept" ID="MqttConnectionProfilesDialog.accept"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.accept" ID="MqttConnectionProfilesDialog.accept"></a>
 <h4>MqttConnectionProfilesDialog.accept</h4>
 <b>accept</b>(<i></i>)
+
 <p>
         Public slot to accept the dialog.
-</p><a NAME="MqttConnectionProfilesDialog.getProfiles" ID="MqttConnectionProfilesDialog.getProfiles"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.getProfiles" ID="MqttConnectionProfilesDialog.getProfiles"></a>
 <h4>MqttConnectionProfilesDialog.getProfiles</h4>
 <b>getProfiles</b>(<i></i>)
+
 <p>
         Public method to return a dictionary of profiles.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 dictionary containing dictionaries containing the defined
@@ -284,180 +366,248 @@
             "TlsEnable", "TlsCaCert", "TlsClientCert", "TlsClientKey",
             "ConnectionTimeout".
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 dict
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged" ID="MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged" ID="MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_brokerAddressEdit_textChanged</h4>
 <b>on_brokerAddressEdit_textChanged</b>(<i>address</i>)
+
 <p>
         Private slot handling a change of the broker address.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>address</i> (str)</dt>
 <dd>
 broker address
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked" ID="MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked" ID="MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_cleanSessionCheckBox_clicked</h4>
 <b>on_cleanSessionCheckBox_clicked</b>(<i>checked</i>)
+
 <p>
         Private slot to handle a change of the clean session selection.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 current state of the clean session selection
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_clientIdEdit_textChanged" ID="MqttConnectionProfilesDialog.on_clientIdEdit_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_clientIdEdit_textChanged" ID="MqttConnectionProfilesDialog.on_clientIdEdit_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_clientIdEdit_textChanged</h4>
 <b>on_clientIdEdit_textChanged</b>(<i>clientId</i>)
+
 <p>
         Private slot handling a change of the client ID string.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>clientId</i> (str)</dt>
 <dd>
 client ID
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_copyButton_clicked" ID="MqttConnectionProfilesDialog.on_copyButton_clicked"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_copyButton_clicked" ID="MqttConnectionProfilesDialog.on_copyButton_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_copyButton_clicked</h4>
 <b>on_copyButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to copy the selected profile entry.
-</p><a NAME="MqttConnectionProfilesDialog.on_generateIdButton_clicked" ID="MqttConnectionProfilesDialog.on_generateIdButton_clicked"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.on_generateIdButton_clicked" ID="MqttConnectionProfilesDialog.on_generateIdButton_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_generateIdButton_clicked</h4>
 <b>on_generateIdButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to generate a client ID.
-</p><a NAME="MqttConnectionProfilesDialog.on_minusButton_clicked" ID="MqttConnectionProfilesDialog.on_minusButton_clicked"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.on_minusButton_clicked" ID="MqttConnectionProfilesDialog.on_minusButton_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_minusButton_clicked</h4>
 <b>on_minusButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to delete the selected entry.
-</p><a NAME="MqttConnectionProfilesDialog.on_plusButton_clicked" ID="MqttConnectionProfilesDialog.on_plusButton_clicked"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.on_plusButton_clicked" ID="MqttConnectionProfilesDialog.on_plusButton_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_plusButton_clicked</h4>
 <b>on_plusButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to add a new empty profile entry.
-</p><a NAME="MqttConnectionProfilesDialog.on_profileButtonBox_clicked" ID="MqttConnectionProfilesDialog.on_profileButtonBox_clicked"></a>
+</p>
+<a NAME="MqttConnectionProfilesDialog.on_profileButtonBox_clicked" ID="MqttConnectionProfilesDialog.on_profileButtonBox_clicked"></a>
 <h4>MqttConnectionProfilesDialog.on_profileButtonBox_clicked</h4>
 <b>on_profileButtonBox_clicked</b>(<i>button</i>)
+
 <p>
         Private slot handling presses of the profile buttons.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>button</i> (QAbstractButton)</dt>
 <dd>
 reference to the pressed button
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_profileEdit_textChanged" ID="MqttConnectionProfilesDialog.on_profileEdit_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_profileEdit_textChanged" ID="MqttConnectionProfilesDialog.on_profileEdit_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_profileEdit_textChanged</h4>
 <b>on_profileEdit_textChanged</b>(<i>name</i>)
+
 <p>
         Private slot to handle changes of the profile name.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>name</i> (str)</dt>
 <dd>
 name of the profile
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_profilesList_currentItemChanged" ID="MqttConnectionProfilesDialog.on_profilesList_currentItemChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_profilesList_currentItemChanged" ID="MqttConnectionProfilesDialog.on_profilesList_currentItemChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_profilesList_currentItemChanged</h4>
 <b>on_profilesList_currentItemChanged</b>(<i>current, previous</i>)
+
 <p>
         Private slot to handle a change of the current profile.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>current</i> (QListWidgetItem)</dt>
 <dd>
 new current item
-</dd><dt><i>previous</i> (QListWidgetItem)</dt>
+</dd>
+<dt><i>previous</i> (QListWidgetItem)</dt>
 <dd>
 previous current item
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsCertsFileButton_toggled</h4>
 <b>on_tlsCertsFileButton_toggled</b>(<i>checked</i>)
+
 <p>
         Private slot handling the selection of using a non-default
         certificates file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 state of the selection
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsCertsFilePicker_textChanged</h4>
 <b>on_tlsCertsFilePicker_textChanged</b>(<i>path</i>)
+
 <p>
         Private slot handling a change of the TLS CA certificates file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>path</i> (str)</dt>
 <dd>
 file path
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsDefaultCertsButton_toggled</h4>
 <b>on_tlsDefaultCertsButton_toggled</b>(<i>checked</i>)
+
 <p>
         Private slot handling the selection of using the default
         certificates file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 state of the selection
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsGroupBox_toggled" ID="MqttConnectionProfilesDialog.on_tlsGroupBox_toggled"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsGroupBox_toggled" ID="MqttConnectionProfilesDialog.on_tlsGroupBox_toggled"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsGroupBox_toggled</h4>
 <b>on_tlsGroupBox_toggled</b>(<i>checked</i>)
+
 <p>
         Private slot handling the selection of TLS mode.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 state of the selection
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsSelfSignedCertsButton_toggled</h4>
 <b>on_tlsSelfSignedCertsButton_toggled</b>(<i>checked</i>)
+
 <p>
         Private slot handling the selection of using self signed
         client certificate and key files.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>checked</i> (bool)</dt>
 <dd>
 state of the selection
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsSelfSignedCertsFilePicker_textChanged</h4>
 <b>on_tlsSelfSignedCertsFilePicker_textChanged</b>(<i>path</i>)
+
 <p>
         Private slot handling a change of the TLS CA certificates file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>path</i> (str)</dt>
 <dd>
 file path
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsSelfSignedClientCertFilePicker_textChanged</h4>
 <b>on_tlsSelfSignedClientCertFilePicker_textChanged</b>(<i>path</i>)
+
 <p>
         Private slot handling a change of the TLS client certificate file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>path</i> (str)</dt>
 <dd>
 file path
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged" ID="MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged"></a>
 <h4>MqttConnectionProfilesDialog.on_tlsSelfSignedClientKeyFilePicker_textChanged</h4>
 <b>on_tlsSelfSignedClientKeyFilePicker_textChanged</b>(<i>path</i>)
+
 <p>
         Private slot handling a change of the TLS client key file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>path</i> (str)</dt>
 <dd>
 file path
 </dd>
-</dl><a NAME="MqttConnectionProfilesDialog.reject" ID="MqttConnectionProfilesDialog.reject"></a>
+</dl>
+<a NAME="MqttConnectionProfilesDialog.reject" ID="MqttConnectionProfilesDialog.reject"></a>
 <h4>MqttConnectionProfilesDialog.reject</h4>
 <b>reject</b>(<i></i>)
+
 <p>
         Public slot to reject the dialog changes.
 </p>
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html	Tue Jun 23 19:26:33 2020 +0200
@@ -18,571 +18,781 @@
 
 </style>
 </head>
-<body><a NAME="top" ID="top"></a>
+<body>
+<a NAME="top" ID="top"></a>
 <h1>Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget</h1>
+
 <p>
 Module implementing the MQTT Monitor widget.
 </p>
 <h3>Global Attributes</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Classes</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttMonitorWidget">MqttMonitorWidget</a></td>
 <td>Class implementing the MQTT Monitor widget.</td>
 </tr>
 </table>
 <h3>Functions</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="MqttMonitorWidget" ID="MqttMonitorWidget"></a>
 <h2>MqttMonitorWidget</h2>
+
 <p>
     Class implementing the MQTT Monitor widget.
 </p>
 <h3>Derived from</h3>
 QWidget, Ui_MqttMonitorWidget
 <h3>Class Attributes</h3>
+
 <table>
 <tr><td>BrokerStatusTopic</td></tr><tr><td>BrokerStatusTopicLoadPrefix</td></tr><tr><td>BrokerStatusTopicPrefix</td></tr>
 </table>
 <h3>Class Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Methods</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttMonitorWidget.__init__">MqttMonitorWidget</a></td>
 <td>Constructor</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__addBrokerToRecent">__addBrokerToRecent</a></td>
 <td>Private method to add a host name to the list of recently connected brokers.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__appendMessage">__appendMessage</a></td>
 <td>Private method to append a received message to the output.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__brokerConnected">__brokerConnected</a></td>
 <td>Private slot to handle being connected to a broker.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__brokerDisconnected">__brokerDisconnected</a></td>
 <td>Private slot to handle a disconnection from the broker.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__clearBrokerStatusLabels">__clearBrokerStatusLabels</a></td>
 <td>Private method to clear the broker status labels.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__clientLog">__clientLog</a></td>
 <td>Private slot to handle the receipt of a log message.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__connectTimeout">__connectTimeout</a></td>
 <td>Private slot handling a timeout during a connection attempt.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__directConnectToBroker">__directConnectToBroker</a></td>
 <td>Private method to connect to the broker with entered data.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__flashBrokerStatusLabel">__flashBrokerStatusLabel</a></td>
 <td>Private slot to show the broker status label with some text for 5 seconds.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__handleBrokerLoadStatusMessage">__handleBrokerLoadStatusMessage</a></td>
 <td>Private method to append a received message to the output.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__handleBrokerStatusMessage">__handleBrokerStatusMessage</a></td>
 <td>Private method to append a received message to the output.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__loadDefaultDictFactory">__loadDefaultDictFactory</a></td>
 <td>Private method to populate non-existing load items.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__messagePublished">__messagePublished</a></td>
 <td>Private slot to handle a message being published.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__messageReceived">__messageReceived</a></td>
 <td>Private slot to handle the receipt of a message.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__populateBrokerComboBoxes">__populateBrokerComboBoxes</a></td>
 <td>Private method to populate the broker name and port combo boxes.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__populateProfileComboBox">__populateProfileComboBox</a></td>
 <td>Private method to populate the profiles selection box.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__profileConnectToBroker">__profileConnectToBroker</a></td>
 <td>Private method to connect to the broker with selected profile.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__setBrokerStatusSubscribed">__setBrokerStatusSubscribed</a></td>
 <td>Private method to set the subscription status for the broker status topics.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__setConnectButtonState">__setConnectButtonState</a></td>
 <td>Private method to set the enabled state of the connect button.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__setConnectionMode">__setConnectionMode</a></td>
 <td>Private method to set the connection mode.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__topicSubscribed">__topicSubscribed</a></td>
 <td>Private slot to handle being subscribed to topics.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__topicUnsubscribed">__topicUnsubscribed</a></td>
 <td>Private slot to handle being unsubcribed from a topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__updatePublishTopicComboBox">__updatePublishTopicComboBox</a></td>
 <td>Private method to update the publish topic combo box.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.__updateUnsubscribeTopicComboBox">__updateUnsubscribeTopicComboBox</a></td>
 <td>Private method to update the unsubcribe topic combo box.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_brokerComboBox_editTextChanged">on_brokerComboBox_editTextChanged</a></td>
 <td>Private slot to handling entering or selecting a broker host name.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked">on_brokerConnectionOptionsButton_clicked</a></td>
 <td>Private slot to show a dialog to modify connection options or a dialog to edit connection profiles.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_brokerStatusButton_clicked">on_brokerStatusButton_clicked</a></td>
 <td>Private slot to subscribe or unsubscribe the broker status topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_connectButton_clicked">on_connectButton_clicked</a></td>
 <td>Private slot to handle a connect or disconnect request.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_logEdit_blockCountChanged">on_logEdit_blockCountChanged</a></td>
 <td>Private slot handling changes of received messages.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_messagesEdit_blockCountChanged">on_messagesEdit_blockCountChanged</a></td>
 <td>Private slot handling changes of received messages.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_modeButton_clicked">on_modeButton_clicked</a></td>
 <td>Private slot to switch between connection profiles and direct connection mode.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_profileComboBox_currentIndexChanged">on_profileComboBox_currentIndexChanged</a></td>
 <td>Private slot handling the change of the selected profile.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_publishButton_clicked">on_publishButton_clicked</a></td>
 <td>Private slot to publish the entered message.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_publishClearButton_clicked">on_publishClearButton_clicked</a></td>
 <td>Private slot to clear the publish data fields.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_publishPayloadFilePicker_textChanged">on_publishPayloadFilePicker_textChanged</a></td>
 <td>Private slot handling a change of path of the payload file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_publishTopicComboBox_editTextChanged">on_publishTopicComboBox_editTextChanged</a></td>
 <td>Private slot to handle changes of the publish topic name.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_saveLogMessagesButton_clicked">on_saveLogMessagesButton_clicked</a></td>
 <td>Private slot to save the log messages.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_saveMessagesButton_clicked">on_saveMessagesButton_clicked</a></td>
 <td>Private slot to save the received messages.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_subscribeButton_clicked">on_subscribeButton_clicked</a></td>
 <td>Private slot to subscribe to the entered topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_subscribeTopicEdit_returnPressed">on_subscribeTopicEdit_returnPressed</a></td>
 <td>Private slot handling the user pressing the return button to subscribe a topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_subscribeTopicEdit_textChanged">on_subscribeTopicEdit_textChanged</a></td>
 <td>Private slot to handle a change of the entered topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_unsubscribeButton_clicked">on_unsubscribeButton_clicked</a></td>
 <td>Private slot to unsubscribe from the selected topic.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged">on_unsubscribeTopicComboBox_currentIndexChanged</a></td>
 <td>Private slot to handle the selection of a topic to unsubscribe from.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
+
 <a NAME="MqttMonitorWidget.__init__" ID="MqttMonitorWidget.__init__"></a>
 <h4>MqttMonitorWidget (Constructor)</h4>
-<b>MqttMonitorWidget</b>(<i>plugin, parent=None</i>)
+<b>MqttMonitorWidget</b>(<i>plugin, iconSuffix, parent=None</i>)
+
 <p>
         Constructor
-</p><dl>
+</p>
+<dl>
+
 <dt><i>plugin</i> (MqttMonitorPlugin)</dt>
 <dd>
 reference to the plug-in object
-</dd><dt><i>parent</i> (QWidget)</dt>
+</dd>
+<dt><i>iconSuffix</i> (str)</dt>
+<dd>
+suffix for the icons
+</dd>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
 reference to the parent widget
 </dd>
-</dl><a NAME="MqttMonitorWidget.__addBrokerToRecent" ID="MqttMonitorWidget.__addBrokerToRecent"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__addBrokerToRecent" ID="MqttMonitorWidget.__addBrokerToRecent"></a>
 <h4>MqttMonitorWidget.__addBrokerToRecent</h4>
 <b>__addBrokerToRecent</b>(<i>host, port</i>)
+
 <p>
         Private method to add a host name to the list of recently connected
         brokers.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>host</i> (str)</dt>
 <dd>
 host name of broker
-</dd><dt><i>port</i> (int)</dt>
+</dd>
+<dt><i>port</i> (int)</dt>
 <dd>
 port number of the connection
 </dd>
-</dl><a NAME="MqttMonitorWidget.__appendMessage" ID="MqttMonitorWidget.__appendMessage"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__appendMessage" ID="MqttMonitorWidget.__appendMessage"></a>
 <h4>MqttMonitorWidget.__appendMessage</h4>
 <b>__appendMessage</b>(<i>topic, payload, qos</i>)
+
 <p>
         Private method to append a received message to the output.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic of the received message
-</dd><dt><i>payload</i> (bytes)</dt>
+</dd>
+<dt><i>payload</i> (bytes)</dt>
 <dd>
 payload of the received message
-</dd><dt><i>qos</i> (int)</dt>
+</dd>
+<dt><i>qos</i> (int)</dt>
 <dd>
 quality of service indicator (0, 1, 2)
 </dd>
-</dl><a NAME="MqttMonitorWidget.__brokerConnected" ID="MqttMonitorWidget.__brokerConnected"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__brokerConnected" ID="MqttMonitorWidget.__brokerConnected"></a>
 <h4>MqttMonitorWidget.__brokerConnected</h4>
 <b>__brokerConnected</b>(<i>flags, rc</i>)
+
 <p>
         Private slot to handle being connected to a broker.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>flags</i> (dict)</dt>
 <dd>
 flags set for the connection
-</dd><dt><i>rc</i> (int)</dt>
+</dd>
+<dt><i>rc</i> (int)</dt>
 <dd>
 CONNACK result code
 </dd>
-</dl><a NAME="MqttMonitorWidget.__brokerDisconnected" ID="MqttMonitorWidget.__brokerDisconnected"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__brokerDisconnected" ID="MqttMonitorWidget.__brokerDisconnected"></a>
 <h4>MqttMonitorWidget.__brokerDisconnected</h4>
 <b>__brokerDisconnected</b>(<i>rc</i>)
+
 <p>
         Private slot to handle a disconnection from the broker.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>rc</i> (int)</dt>
 <dd>
 MQTT error result code
 </dd>
-</dl><a NAME="MqttMonitorWidget.__clearBrokerStatusLabels" ID="MqttMonitorWidget.__clearBrokerStatusLabels"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__clearBrokerStatusLabels" ID="MqttMonitorWidget.__clearBrokerStatusLabels"></a>
 <h4>MqttMonitorWidget.__clearBrokerStatusLabels</h4>
 <b>__clearBrokerStatusLabels</b>(<i></i>)
+
 <p>
         Private method to clear the broker status labels.
-</p><a NAME="MqttMonitorWidget.__clientLog" ID="MqttMonitorWidget.__clientLog"></a>
+</p>
+<a NAME="MqttMonitorWidget.__clientLog" ID="MqttMonitorWidget.__clientLog"></a>
 <h4>MqttMonitorWidget.__clientLog</h4>
 <b>__clientLog</b>(<i>level, message</i>)
+
 <p>
         Private slot to handle the receipt of a log message.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>level</i> (int)</dt>
 <dd>
 log level
-</dd><dt><i>message</i> (str)</dt>
+</dd>
+<dt><i>message</i> (str)</dt>
 <dd>
 log message
 </dd>
-</dl><a NAME="MqttMonitorWidget.__connectTimeout" ID="MqttMonitorWidget.__connectTimeout"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__connectTimeout" ID="MqttMonitorWidget.__connectTimeout"></a>
 <h4>MqttMonitorWidget.__connectTimeout</h4>
 <b>__connectTimeout</b>(<i></i>)
+
 <p>
         Private slot handling a timeout during a connection attempt.
-</p><a NAME="MqttMonitorWidget.__directConnectToBroker" ID="MqttMonitorWidget.__directConnectToBroker"></a>
+</p>
+<a NAME="MqttMonitorWidget.__directConnectToBroker" ID="MqttMonitorWidget.__directConnectToBroker"></a>
 <h4>MqttMonitorWidget.__directConnectToBroker</h4>
 <b>__directConnectToBroker</b>(<i></i>)
+
 <p>
         Private method to connect to the broker with entered data.
-</p><a NAME="MqttMonitorWidget.__flashBrokerStatusLabel" ID="MqttMonitorWidget.__flashBrokerStatusLabel"></a>
+</p>
+<a NAME="MqttMonitorWidget.__flashBrokerStatusLabel" ID="MqttMonitorWidget.__flashBrokerStatusLabel"></a>
 <h4>MqttMonitorWidget.__flashBrokerStatusLabel</h4>
 <b>__flashBrokerStatusLabel</b>(<i>message</i>)
+
 <p>
         Private slot to show the broker status label with some text for
         5 seconds.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>message</i> (str)</dt>
 <dd>
 message to be shown
 </dd>
-</dl><a NAME="MqttMonitorWidget.__handleBrokerLoadStatusMessage" ID="MqttMonitorWidget.__handleBrokerLoadStatusMessage"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__handleBrokerLoadStatusMessage" ID="MqttMonitorWidget.__handleBrokerLoadStatusMessage"></a>
 <h4>MqttMonitorWidget.__handleBrokerLoadStatusMessage</h4>
 <b>__handleBrokerLoadStatusMessage</b>(<i>topic, payloadStr</i>)
+
 <p>
         Private method to append a received message to the output.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic of the received message
-</dd><dt><i>payloadStr</i> (str)</dt>
+</dd>
+<dt><i>payloadStr</i> (str)</dt>
 <dd>
 string representation of the payload of the
             received message
 </dd>
-</dl><a NAME="MqttMonitorWidget.__handleBrokerStatusMessage" ID="MqttMonitorWidget.__handleBrokerStatusMessage"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__handleBrokerStatusMessage" ID="MqttMonitorWidget.__handleBrokerStatusMessage"></a>
 <h4>MqttMonitorWidget.__handleBrokerStatusMessage</h4>
 <b>__handleBrokerStatusMessage</b>(<i>topic, payload</i>)
+
 <p>
         Private method to append a received message to the output.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic of the received message
-</dd><dt><i>payload</i> (bytes)</dt>
+</dd>
+<dt><i>payload</i> (bytes)</dt>
 <dd>
 payload of the received message
 </dd>
-</dl><a NAME="MqttMonitorWidget.__loadDefaultDictFactory" ID="MqttMonitorWidget.__loadDefaultDictFactory"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__loadDefaultDictFactory" ID="MqttMonitorWidget.__loadDefaultDictFactory"></a>
 <h4>MqttMonitorWidget.__loadDefaultDictFactory</h4>
 <b>__loadDefaultDictFactory</b>(<i></i>)
+
 <p>
         Private method to populate non-existing load items.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 default dictionary entry
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 dict
 </dd>
-</dl><a NAME="MqttMonitorWidget.__messagePublished" ID="MqttMonitorWidget.__messagePublished"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__messagePublished" ID="MqttMonitorWidget.__messagePublished"></a>
 <h4>MqttMonitorWidget.__messagePublished</h4>
 <b>__messagePublished</b>(<i>mid</i>)
+
 <p>
         Private slot to handle a message being published.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>mid</i> (int)</dt>
 <dd>
 ID of the published message
 </dd>
-</dl><a NAME="MqttMonitorWidget.__messageReceived" ID="MqttMonitorWidget.__messageReceived"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__messageReceived" ID="MqttMonitorWidget.__messageReceived"></a>
 <h4>MqttMonitorWidget.__messageReceived</h4>
 <b>__messageReceived</b>(<i>topic, payload, qos, retain</i>)
+
 <p>
         Private slot to handle the receipt of a message.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic of the message
-</dd><dt><i>payload</i> (bytes)</dt>
+</dd>
+<dt><i>payload</i> (bytes)</dt>
 <dd>
 payload (i.e. data) of the message
-</dd><dt><i>qos</i> (int)</dt>
+</dd>
+<dt><i>qos</i> (int)</dt>
 <dd>
 quality of service indicator
-</dd><dt><i>retain</i> (bool)</dt>
+</dd>
+<dt><i>retain</i> (bool)</dt>
 <dd>
 flag indicating a retained message
 </dd>
-</dl><a NAME="MqttMonitorWidget.__populateBrokerComboBoxes" ID="MqttMonitorWidget.__populateBrokerComboBoxes"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__populateBrokerComboBoxes" ID="MqttMonitorWidget.__populateBrokerComboBoxes"></a>
 <h4>MqttMonitorWidget.__populateBrokerComboBoxes</h4>
 <b>__populateBrokerComboBoxes</b>(<i></i>)
+
 <p>
         Private method to populate the broker name and port combo boxes.
-</p><a NAME="MqttMonitorWidget.__populateProfileComboBox" ID="MqttMonitorWidget.__populateProfileComboBox"></a>
+</p>
+<a NAME="MqttMonitorWidget.__populateProfileComboBox" ID="MqttMonitorWidget.__populateProfileComboBox"></a>
 <h4>MqttMonitorWidget.__populateProfileComboBox</h4>
 <b>__populateProfileComboBox</b>(<i></i>)
+
 <p>
         Private method to populate the profiles selection box.
-</p><a NAME="MqttMonitorWidget.__profileConnectToBroker" ID="MqttMonitorWidget.__profileConnectToBroker"></a>
+</p>
+<a NAME="MqttMonitorWidget.__profileConnectToBroker" ID="MqttMonitorWidget.__profileConnectToBroker"></a>
 <h4>MqttMonitorWidget.__profileConnectToBroker</h4>
 <b>__profileConnectToBroker</b>(<i></i>)
+
 <p>
         Private method to connect to the broker with selected profile.
-</p><a NAME="MqttMonitorWidget.__setBrokerStatusSubscribed" ID="MqttMonitorWidget.__setBrokerStatusSubscribed"></a>
+</p>
+<a NAME="MqttMonitorWidget.__setBrokerStatusSubscribed" ID="MqttMonitorWidget.__setBrokerStatusSubscribed"></a>
 <h4>MqttMonitorWidget.__setBrokerStatusSubscribed</h4>
 <b>__setBrokerStatusSubscribed</b>(<i>subscribed</i>)
+
 <p>
         Private method to set the subscription status for the broker status
         topics.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>subscribed</i> (bool)</dt>
 <dd>
 subscription status for the broker status topics
 </dd>
-</dl><a NAME="MqttMonitorWidget.__setConnectButtonState" ID="MqttMonitorWidget.__setConnectButtonState"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__setConnectButtonState" ID="MqttMonitorWidget.__setConnectButtonState"></a>
 <h4>MqttMonitorWidget.__setConnectButtonState</h4>
 <b>__setConnectButtonState</b>(<i></i>)
+
 <p>
         Private method to set the enabled state of the connect button.
-</p><a NAME="MqttMonitorWidget.__setConnectionMode" ID="MqttMonitorWidget.__setConnectionMode"></a>
+</p>
+<a NAME="MqttMonitorWidget.__setConnectionMode" ID="MqttMonitorWidget.__setConnectionMode"></a>
 <h4>MqttMonitorWidget.__setConnectionMode</h4>
 <b>__setConnectionMode</b>(<i>profileMode</i>)
+
 <p>
         Private method to set the connection mode.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>profileMode</i> (bool)</dt>
 <dd>
 flag indicating the profile connection mode
 </dd>
-</dl><a NAME="MqttMonitorWidget.__topicSubscribed" ID="MqttMonitorWidget.__topicSubscribed"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__topicSubscribed" ID="MqttMonitorWidget.__topicSubscribed"></a>
 <h4>MqttMonitorWidget.__topicSubscribed</h4>
 <b>__topicSubscribed</b>(<i>mid, grantedQos</i>)
+
 <p>
         Private slot to handle being subscribed to topics.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>mid</i> (int)</dt>
 <dd>
 ID of the subscribe request
-</dd><dt><i>grantedQos</i> (tuple of int)</dt>
+</dd>
+<dt><i>grantedQos</i> (tuple of int)</dt>
 <dd>
 tuple of granted quality of service
 </dd>
-</dl><a NAME="MqttMonitorWidget.__topicUnsubscribed" ID="MqttMonitorWidget.__topicUnsubscribed"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__topicUnsubscribed" ID="MqttMonitorWidget.__topicUnsubscribed"></a>
 <h4>MqttMonitorWidget.__topicUnsubscribed</h4>
 <b>__topicUnsubscribed</b>(<i>mid</i>)
+
 <p>
         Private slot to handle being unsubcribed from a topic.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>mid</i> (int)</dt>
 <dd>
 ID of the unsubscribe request
 </dd>
-</dl><a NAME="MqttMonitorWidget.__updatePublishTopicComboBox" ID="MqttMonitorWidget.__updatePublishTopicComboBox"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__updatePublishTopicComboBox" ID="MqttMonitorWidget.__updatePublishTopicComboBox"></a>
 <h4>MqttMonitorWidget.__updatePublishTopicComboBox</h4>
 <b>__updatePublishTopicComboBox</b>(<i>resetTopic=True</i>)
+
 <p>
         Private method to update the publish topic combo box.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>resetTopic</i> (bool)</dt>
 <dd>
 flag indicating to reset the topic
 </dd>
-</dl><a NAME="MqttMonitorWidget.__updateUnsubscribeTopicComboBox" ID="MqttMonitorWidget.__updateUnsubscribeTopicComboBox"></a>
+</dl>
+<a NAME="MqttMonitorWidget.__updateUnsubscribeTopicComboBox" ID="MqttMonitorWidget.__updateUnsubscribeTopicComboBox"></a>
 <h4>MqttMonitorWidget.__updateUnsubscribeTopicComboBox</h4>
 <b>__updateUnsubscribeTopicComboBox</b>(<i></i>)
+
 <p>
         Private method to update the unsubcribe topic combo box.
-</p><a NAME="MqttMonitorWidget.on_brokerComboBox_editTextChanged" ID="MqttMonitorWidget.on_brokerComboBox_editTextChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_brokerComboBox_editTextChanged" ID="MqttMonitorWidget.on_brokerComboBox_editTextChanged"></a>
 <h4>MqttMonitorWidget.on_brokerComboBox_editTextChanged</h4>
 <b>on_brokerComboBox_editTextChanged</b>(<i>host</i>)
+
 <p>
         Private slot to handling entering or selecting a broker host name.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>host</i> (str)</dt>
 <dd>
 host name of the broker
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked" ID="MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked" ID="MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked"></a>
 <h4>MqttMonitorWidget.on_brokerConnectionOptionsButton_clicked</h4>
 <b>on_brokerConnectionOptionsButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to show a dialog to modify connection options or a
         dialog to edit connection profiles.
-</p><a NAME="MqttMonitorWidget.on_brokerStatusButton_clicked" ID="MqttMonitorWidget.on_brokerStatusButton_clicked"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_brokerStatusButton_clicked" ID="MqttMonitorWidget.on_brokerStatusButton_clicked"></a>
 <h4>MqttMonitorWidget.on_brokerStatusButton_clicked</h4>
 <b>on_brokerStatusButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to subscribe or unsubscribe the broker status topic.
-</p><a NAME="MqttMonitorWidget.on_connectButton_clicked" ID="MqttMonitorWidget.on_connectButton_clicked"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_connectButton_clicked" ID="MqttMonitorWidget.on_connectButton_clicked"></a>
 <h4>MqttMonitorWidget.on_connectButton_clicked</h4>
 <b>on_connectButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to handle a connect or disconnect request.
-</p><a NAME="MqttMonitorWidget.on_logEdit_blockCountChanged" ID="MqttMonitorWidget.on_logEdit_blockCountChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_logEdit_blockCountChanged" ID="MqttMonitorWidget.on_logEdit_blockCountChanged"></a>
 <h4>MqttMonitorWidget.on_logEdit_blockCountChanged</h4>
 <b>on_logEdit_blockCountChanged</b>(<i>newBlockCount</i>)
+
 <p>
         Private slot handling changes of received messages.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>newBlockCount</i> (int)</dt>
 <dd>
 (ignored)
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_messagesEdit_blockCountChanged" ID="MqttMonitorWidget.on_messagesEdit_blockCountChanged"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_messagesEdit_blockCountChanged" ID="MqttMonitorWidget.on_messagesEdit_blockCountChanged"></a>
 <h4>MqttMonitorWidget.on_messagesEdit_blockCountChanged</h4>
 <b>on_messagesEdit_blockCountChanged</b>(<i>newBlockCount</i>)
+
 <p>
         Private slot handling changes of received messages.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>newBlockCount</i> (int)</dt>
 <dd>
 (ignored)
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_modeButton_clicked" ID="MqttMonitorWidget.on_modeButton_clicked"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_modeButton_clicked" ID="MqttMonitorWidget.on_modeButton_clicked"></a>
 <h4>MqttMonitorWidget.on_modeButton_clicked</h4>
 <b>on_modeButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to switch between connection profiles and direct
         connection mode.
-</p><a NAME="MqttMonitorWidget.on_profileComboBox_currentIndexChanged" ID="MqttMonitorWidget.on_profileComboBox_currentIndexChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_profileComboBox_currentIndexChanged" ID="MqttMonitorWidget.on_profileComboBox_currentIndexChanged"></a>
 <h4>MqttMonitorWidget.on_profileComboBox_currentIndexChanged</h4>
 <b>on_profileComboBox_currentIndexChanged</b>(<i>profileName</i>)
+
 <p>
         Private slot handling the change of the selected profile.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>profileName</i> (str)</dt>
 <dd>
 name of the selected profile
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_publishButton_clicked" ID="MqttMonitorWidget.on_publishButton_clicked"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_publishButton_clicked" ID="MqttMonitorWidget.on_publishButton_clicked"></a>
 <h4>MqttMonitorWidget.on_publishButton_clicked</h4>
 <b>on_publishButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to publish the entered message.
-</p><a NAME="MqttMonitorWidget.on_publishClearButton_clicked" ID="MqttMonitorWidget.on_publishClearButton_clicked"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_publishClearButton_clicked" ID="MqttMonitorWidget.on_publishClearButton_clicked"></a>
 <h4>MqttMonitorWidget.on_publishClearButton_clicked</h4>
 <b>on_publishClearButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to clear the publish data fields.
-</p><a NAME="MqttMonitorWidget.on_publishPayloadFilePicker_textChanged" ID="MqttMonitorWidget.on_publishPayloadFilePicker_textChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_publishPayloadFilePicker_textChanged" ID="MqttMonitorWidget.on_publishPayloadFilePicker_textChanged"></a>
 <h4>MqttMonitorWidget.on_publishPayloadFilePicker_textChanged</h4>
 <b>on_publishPayloadFilePicker_textChanged</b>(<i>path</i>)
+
 <p>
         Private slot handling a change of path of the payload file.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>path</i> (str)</dt>
 <dd>
 path of the payload file
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_publishTopicComboBox_editTextChanged" ID="MqttMonitorWidget.on_publishTopicComboBox_editTextChanged"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_publishTopicComboBox_editTextChanged" ID="MqttMonitorWidget.on_publishTopicComboBox_editTextChanged"></a>
 <h4>MqttMonitorWidget.on_publishTopicComboBox_editTextChanged</h4>
 <b>on_publishTopicComboBox_editTextChanged</b>(<i>topic</i>)
+
 <p>
         Private slot to handle changes of the publish topic name.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic text
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_saveLogMessagesButton_clicked" ID="MqttMonitorWidget.on_saveLogMessagesButton_clicked"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_saveLogMessagesButton_clicked" ID="MqttMonitorWidget.on_saveLogMessagesButton_clicked"></a>
 <h4>MqttMonitorWidget.on_saveLogMessagesButton_clicked</h4>
 <b>on_saveLogMessagesButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to save the log messages.
-</p><a NAME="MqttMonitorWidget.on_saveMessagesButton_clicked" ID="MqttMonitorWidget.on_saveMessagesButton_clicked"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_saveMessagesButton_clicked" ID="MqttMonitorWidget.on_saveMessagesButton_clicked"></a>
 <h4>MqttMonitorWidget.on_saveMessagesButton_clicked</h4>
 <b>on_saveMessagesButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to save the received messages.
-</p><a NAME="MqttMonitorWidget.on_subscribeButton_clicked" ID="MqttMonitorWidget.on_subscribeButton_clicked"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_subscribeButton_clicked" ID="MqttMonitorWidget.on_subscribeButton_clicked"></a>
 <h4>MqttMonitorWidget.on_subscribeButton_clicked</h4>
 <b>on_subscribeButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to subscribe to the entered topic.
-</p><a NAME="MqttMonitorWidget.on_subscribeTopicEdit_returnPressed" ID="MqttMonitorWidget.on_subscribeTopicEdit_returnPressed"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_subscribeTopicEdit_returnPressed" ID="MqttMonitorWidget.on_subscribeTopicEdit_returnPressed"></a>
 <h4>MqttMonitorWidget.on_subscribeTopicEdit_returnPressed</h4>
 <b>on_subscribeTopicEdit_returnPressed</b>(<i></i>)
+
 <p>
         Private slot handling the user pressing the return button to subscribe
         a topic.
-</p><a NAME="MqttMonitorWidget.on_subscribeTopicEdit_textChanged" ID="MqttMonitorWidget.on_subscribeTopicEdit_textChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_subscribeTopicEdit_textChanged" ID="MqttMonitorWidget.on_subscribeTopicEdit_textChanged"></a>
 <h4>MqttMonitorWidget.on_subscribeTopicEdit_textChanged</h4>
 <b>on_subscribeTopicEdit_textChanged</b>(<i>topic</i>)
+
 <p>
         Private slot to handle a change of the entered topic.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 entered topic text
 </dd>
-</dl><a NAME="MqttMonitorWidget.on_unsubscribeButton_clicked" ID="MqttMonitorWidget.on_unsubscribeButton_clicked"></a>
+</dl>
+<a NAME="MqttMonitorWidget.on_unsubscribeButton_clicked" ID="MqttMonitorWidget.on_unsubscribeButton_clicked"></a>
 <h4>MqttMonitorWidget.on_unsubscribeButton_clicked</h4>
 <b>on_unsubscribeButton_clicked</b>(<i></i>)
+
 <p>
         Private slot to unsubscribe from the selected topic.
-</p><a NAME="MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged" ID="MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged"></a>
+</p>
+<a NAME="MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged" ID="MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged"></a>
 <h4>MqttMonitorWidget.on_unsubscribeTopicComboBox_currentIndexChanged</h4>
 <b>on_unsubscribeTopicComboBox_currentIndexChanged</b>(<i>topic</i>)
+
 <p>
         Private slot to handle the selection of a topic to unsubscribe from.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>topic</i> (str)</dt>
 <dd>
 topic text
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html	Tue Jun 23 19:26:33 2020 +0200
@@ -18,178 +18,232 @@
 
 </style>
 </head>
-<body><a NAME="top" ID="top"></a>
+<body>
+<a NAME="top" ID="top"></a>
 <h1>Plugin_Mqtt_Monitor.PluginMqttMonitor</h1>
+
 <p>
 Module implementing the MQTT Monitor plug-in.
 </p>
 <h3>Global Attributes</h3>
+
 <table>
-<tr><td>author</td></tr><tr><td>autoactivate</td></tr><tr><td>className</td></tr><tr><td>deactivateable</td></tr><tr><td>error</td></tr><tr><td>longDescription</td></tr><tr><td>name</td></tr><tr><td>needsRestart</td></tr><tr><td>packageName</td></tr><tr><td>pyqtApi</td></tr><tr><td>python2Compatible</td></tr><tr><td>shortDescription</td></tr><tr><td>version</td></tr>
+<tr><td>author</td></tr><tr><td>autoactivate</td></tr><tr><td>className</td></tr><tr><td>deactivateable</td></tr><tr><td>error</td></tr><tr><td>longDescription</td></tr><tr><td>name</td></tr><tr><td>needsRestart</td></tr><tr><td>packageName</td></tr><tr><td>pyqtApi</td></tr><tr><td>shortDescription</td></tr><tr><td>version</td></tr>
 </table>
 <h3>Classes</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttMonitorPlugin">MqttMonitorPlugin</a></td>
 <td>Class implementing the MQTT Monitor plug-in.</td>
 </tr>
 </table>
 <h3>Functions</h3>
+
 <table>
+
 <tr>
 <td><a href="#exeDisplayData">exeDisplayData</a></td>
 <td>Module function to support the display of some executable info.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#prepareUninstall">prepareUninstall</a></td>
 <td>Module function to prepare for an uninstallation.</td>
 </tr>
 </table>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="MqttMonitorPlugin" ID="MqttMonitorPlugin"></a>
 <h2>MqttMonitorPlugin</h2>
+
 <p>
     Class implementing the MQTT Monitor plug-in.
 </p>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
+
 <table>
 <tr><td>PreferencesKey</td></tr>
 </table>
 <h3>Class Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
 <h3>Methods</h3>
+
 <table>
+
 <tr>
 <td><a href="#MqttMonitorPlugin.__init__">MqttMonitorPlugin</a></td>
 <td>Constructor</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.__activateWidget">__activateWidget</a></td>
 <td>Private slot to handle the activation of the MQTT Monitor.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.__initialize">__initialize</a></td>
 <td>Private slot to (re)initialize the plugin.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.__loadTranslator">__loadTranslator</a></td>
 <td>Private method to load the translation file.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.activate">activate</a></td>
 <td>Public method to activate this plug-in.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.deactivate">deactivate</a></td>
 <td>Public method to deactivate this plug-in.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.getPreferences">getPreferences</a></td>
 <td>Public method to retrieve the various settings.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="#MqttMonitorPlugin.setPreferences">setPreferences</a></td>
 <td>Public method to store the various settings.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
+
 <table>
 <tr><td>None</td></tr>
 </table>
+
 <a NAME="MqttMonitorPlugin.__init__" ID="MqttMonitorPlugin.__init__"></a>
 <h4>MqttMonitorPlugin (Constructor)</h4>
 <b>MqttMonitorPlugin</b>(<i>ui</i>)
+
 <p>
         Constructor
-</p><dl>
+</p>
+<dl>
+
 <dt><i>ui</i> (UI.UserInterface)</dt>
 <dd>
 reference to the user interface object
 </dd>
-</dl><a NAME="MqttMonitorPlugin.__activateWidget" ID="MqttMonitorPlugin.__activateWidget"></a>
+</dl>
+<a NAME="MqttMonitorPlugin.__activateWidget" ID="MqttMonitorPlugin.__activateWidget"></a>
 <h4>MqttMonitorPlugin.__activateWidget</h4>
 <b>__activateWidget</b>(<i></i>)
+
 <p>
         Private slot to handle the activation of the MQTT Monitor.
-</p><a NAME="MqttMonitorPlugin.__initialize" ID="MqttMonitorPlugin.__initialize"></a>
+</p>
+<a NAME="MqttMonitorPlugin.__initialize" ID="MqttMonitorPlugin.__initialize"></a>
 <h4>MqttMonitorPlugin.__initialize</h4>
 <b>__initialize</b>(<i></i>)
+
 <p>
         Private slot to (re)initialize the plugin.
-</p><a NAME="MqttMonitorPlugin.__loadTranslator" ID="MqttMonitorPlugin.__loadTranslator"></a>
+</p>
+<a NAME="MqttMonitorPlugin.__loadTranslator" ID="MqttMonitorPlugin.__loadTranslator"></a>
 <h4>MqttMonitorPlugin.__loadTranslator</h4>
 <b>__loadTranslator</b>(<i></i>)
+
 <p>
         Private method to load the translation file.
-</p><a NAME="MqttMonitorPlugin.activate" ID="MqttMonitorPlugin.activate"></a>
+</p>
+<a NAME="MqttMonitorPlugin.activate" ID="MqttMonitorPlugin.activate"></a>
 <h4>MqttMonitorPlugin.activate</h4>
 <b>activate</b>(<i></i>)
+
 <p>
         Public method to activate this plug-in.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 tuple of None and activation status
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 bool
 </dd>
-</dl><a NAME="MqttMonitorPlugin.deactivate" ID="MqttMonitorPlugin.deactivate"></a>
+</dl>
+<a NAME="MqttMonitorPlugin.deactivate" ID="MqttMonitorPlugin.deactivate"></a>
 <h4>MqttMonitorPlugin.deactivate</h4>
 <b>deactivate</b>(<i></i>)
+
 <p>
         Public method to deactivate this plug-in.
-</p><a NAME="MqttMonitorPlugin.getPreferences" ID="MqttMonitorPlugin.getPreferences"></a>
+</p>
+<a NAME="MqttMonitorPlugin.getPreferences" ID="MqttMonitorPlugin.getPreferences"></a>
 <h4>MqttMonitorPlugin.getPreferences</h4>
 <b>getPreferences</b>(<i>key</i>)
+
 <p>
         Public method to retrieve the various settings.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>key</i></dt>
 <dd>
 the key of the value to get
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Returns:</dt>
 <dd>
 the requested setting
 </dd>
-</dl><a NAME="MqttMonitorPlugin.setPreferences" ID="MqttMonitorPlugin.setPreferences"></a>
+</dl>
+<a NAME="MqttMonitorPlugin.setPreferences" ID="MqttMonitorPlugin.setPreferences"></a>
 <h4>MqttMonitorPlugin.setPreferences</h4>
 <b>setPreferences</b>(<i>key, value</i>)
+
 <p>
         Public method to store the various settings.
-</p><dl>
+</p>
+<dl>
+
 <dt><i>key</i></dt>
 <dd>
 the key of the setting to be set (string)
-</dd><dt><i>value</i></dt>
+</dd>
+<dt><i>value</i></dt>
 <dd>
 the value to be set
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="exeDisplayData" ID="exeDisplayData"></a>
 <h2>exeDisplayData</h2>
 <b>exeDisplayData</b>(<i></i>)
+
 <p>
     Module function to support the display of some executable info.
-</p><dl>
+</p>
+<dl>
 <dt>Returns:</dt>
 <dd>
 dictionary containing the data to query the presence of
         the executable
 </dd>
-</dl><dl>
+</dl>
+<dl>
 <dt>Return Type:</dt>
 <dd>
 dict
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
+<hr />
+<hr />
 <a NAME="prepareUninstall" ID="prepareUninstall"></a>
 <h2>prepareUninstall</h2>
 <b>prepareUninstall</b>(<i></i>)
+
 <p>
     Module function to prepare for an uninstallation.
 </p>
--- a/MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.MqttMonitor.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.MqttMonitor.html	Tue Jun 23 19:26:33 2020 +0200
@@ -20,6 +20,7 @@
 </head>
 <body>
 <h1>Plugin_Mqtt_Monitor.MqttMonitor</h1>
+
 <p>
 Package containing the MQTT Monitor modules and data files.
 </p>
@@ -27,16 +28,20 @@
 
 <h3>Modules</h3>
 <table>
+
 <tr>
 <td><a href="Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html">MqttClient</a></td>
 <td>Module implementing a PyQt wrapper around the paho MQTT client.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionOptionsDialog.html">MqttConnectionOptionsDialog</a></td>
 <td>Module implementing a dialog to enter MQTT connection options.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="Plugin_Mqtt_Monitor.MqttMonitor.MqttConnectionProfilesDialog.html">MqttConnectionProfilesDialog</a></td>
 <td>Module implementing a dialog to edit the MQTT connection profiles.</td>
-</tr><tr>
+</tr>
+<tr>
 <td><a href="Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html">MqttMonitorWidget</a></td>
 <td>Module implementing the MQTT Monitor widget.</td>
 </tr>
--- a/MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/index-Plugin_Mqtt_Monitor.html	Tue Jun 23 19:26:33 2020 +0200
@@ -20,12 +20,14 @@
 </head>
 <body>
 <h1>Plugin_Mqtt_Monitor</h1>
+
 <p>
 Package implementing the MQTT Monitor plug-in.
 </p>
 
 <h3>Packages</h3>
 <table>
+
 <tr>
 <td><a href="index-Plugin_Mqtt_Monitor.MqttMonitor.html">MqttMonitor</a></td>
 <td>Package containing the MQTT Monitor modules and data files.</td>
@@ -34,6 +36,7 @@
 
 <h3>Modules</h3>
 <table>
+
 <tr>
 <td><a href="Plugin_Mqtt_Monitor.PluginMqttMonitor.html">PluginMqttMonitor</a></td>
 <td>Module implementing the MQTT Monitor plug-in.</td>
--- a/MqttMonitor/Documentation/source/index.html	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/Documentation/source/index.html	Tue Jun 23 19:26:33 2020 +0200
@@ -24,6 +24,7 @@
 
 <h3>Packages</h3>
 <table>
+
 <tr>
 <td><a href="index-Plugin_Mqtt_Monitor.html">Plugin_Mqtt_Monitor</a></td>
 <td>Package implementing the MQTT Monitor plug-in.</td>
--- a/MqttMonitor/MqttClient.py	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/MqttClient.py	Tue Jun 23 19:26:33 2020 +0200
@@ -7,14 +7,9 @@
 Module implementing a PyQt wrapper around the paho MQTT client.
 """
 
-from __future__ import unicode_literals
-try:
-    str = unicode       # __IGNORE_EXCEPTION__
-except NameError:
-    pass
-
-from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QCoreApplication, \
-    QTimer
+from PyQt5.QtCore import (
+    pyqtSignal, pyqtSlot, QObject, QCoreApplication, QTimer
+)
 
 import paho.mqtt.client as mqtt
 
@@ -106,23 +101,23 @@
         """
         Private method to initialize the MQTT callback methods.
         """
-        self.__mqttClient.on_connect = \
+        self.__mqttClient.on_connect = (
             lambda client, userdata, flags, rc: self.onConnect.emit(
-                flags, rc)
-        self.__mqttClient.on_disconnect = \
-            lambda client, userdata, rc: self.onDisconnected.emit(rc)
-        self.__mqttClient.on_log = \
-            lambda client, userdata, level, buf: self.onLog.emit(level, buf)
-        self.__mqttClient.on_message = \
+                flags, rc))
+        self.__mqttClient.on_disconnect = (
+            lambda client, userdata, rc: self.onDisconnected.emit(rc))
+        self.__mqttClient.on_log = (
+            lambda client, userdata, level, buf: self.onLog.emit(level, buf))
+        self.__mqttClient.on_message = (
             lambda client, userdata, message: self.onMessage.emit(
-                message.topic, message.payload, message.qos, message.retain)
-        self.__mqttClient.on_publish = \
-            lambda client, userdata, mid: self.onPublish.emit(mid)
-        self.__mqttClient.on_subscribe = \
+                message.topic, message.payload, message.qos, message.retain))
+        self.__mqttClient.on_publish = (
+            lambda client, userdata, mid: self.onPublish.emit(mid))
+        self.__mqttClient.on_subscribe = (
             lambda client, userdata, mid, grantedQos: self.onSubscribe.emit(
-                mid, grantedQos)
-        self.__mqttClient.on_unsubscribe = \
-            lambda client, userdata, mid: self.onUnsubscribe.emit(mid)
+                mid, grantedQos))
+        self.__mqttClient.on_unsubscribe = (
+            lambda client, userdata, mid: self.onUnsubscribe.emit(mid))
     
     @pyqtSlot()
     def __connectTimeout(self):
@@ -342,8 +337,10 @@
             
             # step 4: set TLS parameters
             if parametersDict["TlsEnable"]:
-                if parametersDict["TlsCaCert"] and \
-                        parametersDict["TlsClientCert"]:
+                if (
+                    parametersDict["TlsCaCert"] and
+                    parametersDict["TlsClientCert"]
+                ):
                     # use self signed client certificate
                     self.setTLS(caCerts=parametersDict["TlsCaCert"],
                                 certFile=parametersDict["TlsClientCert"],
--- a/MqttMonitor/MqttConnectionOptionsDialog.py	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/MqttConnectionOptionsDialog.py	Tue Jun 23 19:26:33 2020 +0200
@@ -7,8 +7,6 @@
 Module implementing a dialog to enter MQTT connection options.
 """
 
-from __future__ import unicode_literals
-
 from PyQt5.QtCore import pyqtSlot, QUuid
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QAbstractButton
 
@@ -56,8 +54,10 @@
         """
         Private method to update the enabled state of the OK button.
         """
-        if self.clientIdEdit.text() == "" and \
-                not self.cleanSessionCheckBox.isChecked():
+        if (
+            self.clientIdEdit.text() == "" and
+            not self.cleanSessionCheckBox.isChecked()
+        ):
             enable = False
             E5MessageBox.critical(
                 self,
--- a/MqttMonitor/MqttConnectionProfilesDialog.py	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/MqttConnectionProfilesDialog.py	Tue Jun 23 19:26:33 2020 +0200
@@ -7,13 +7,13 @@
 Module implementing a dialog to edit the MQTT connection profiles.
 """
 
-from __future__ import unicode_literals
-
 import collections
 
 from PyQt5.QtCore import pyqtSlot, Qt, QUuid
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QAbstractButton, \
-    QListWidgetItem, QInputDialog, QLineEdit
+from PyQt5.QtWidgets import (
+    QDialog, QDialogButtonBox, QAbstractButton, QListWidgetItem, QInputDialog,
+    QLineEdit
+)
 
 from E5Gui import E5MessageBox
 from E5Gui.E5PathPicker import E5PathPickerModes
@@ -268,12 +268,12 @@
             if self.tlsCertsFileButton.isChecked():
                 profile["TlsCaCert"] = self.tlsCertsFilePicker.text()
             elif self.tlsSelfSignedCertsButton.isChecked():
-                profile["TlsCaCert"] = \
-                    self.tlsSelfSignedCertsFilePicker.text()
-                profile["TlsClientCert"] = \
-                    self.tlsSelfSignedClientCertFilePicker.text()
-                profile["TlsClientKey"] = \
-                    self.tlsSelfSignedClientKeyFilePicker.text()
+                profile["TlsCaCert"] = (
+                    self.tlsSelfSignedCertsFilePicker.text())
+                profile["TlsClientCert"] = (
+                    self.tlsSelfSignedClientCertFilePicker.text())
+                profile["TlsClientKey"] = (
+                    self.tlsSelfSignedClientKeyFilePicker.text())
         
         self.__profiles[profileName] = profile
         self.__profilesChanged = True
@@ -473,8 +473,10 @@
         
         # condition 2: if client ID is empty, clean session must be selected
         if not self.__populatingProfile:
-            if self.clientIdEdit.text() == "" and \
-                    not self.cleanSessionCheckBox.isChecked():
+            if (
+                self.clientIdEdit.text() == "" and
+                not self.cleanSessionCheckBox.isChecked()
+            ):
                 enable = False
                 E5MessageBox.critical(
                     self,
--- a/MqttMonitor/MqttMonitorWidget.py	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/MqttMonitorWidget.py	Tue Jun 23 19:26:33 2020 +0200
@@ -7,12 +7,6 @@
 Module implementing the MQTT Monitor widget.
 """
 
-from __future__ import unicode_literals
-try:
-    str = unicode       # __IGNORE_EXCEPTION__
-except NameError:
-    pass
-
 import os
 import collections
 import copy
@@ -26,8 +20,9 @@
 
 from .Ui_MqttMonitorWidget import Ui_MqttMonitorWidget
 
-from .MqttClient import MqttClient, mqttConnackMessage, mqttErrorMessage, \
-    mqttLogLevelString
+from .MqttClient import (
+    MqttClient, mqttConnackMessage, mqttErrorMessage, mqttLogLevelString
+)
 
 import UI.PixmapCache
 import Utilities
@@ -445,8 +440,9 @@
         dialog to edit connection profiles.
         """
         if self.__connectionModeProfile:
-            from .MqttConnectionProfilesDialog import \
+            from .MqttConnectionProfilesDialog import (
                 MqttConnectionProfilesDialog
+            )
             dlg = MqttConnectionProfilesDialog(
                 self.__client, self.__plugin.getPreferences("BrokerProfiles"),
                 parent=self)
@@ -455,8 +451,9 @@
                 self.__plugin.setPreferences("BrokerProfiles", profilesDict)
                 self.__populateProfileComboBox()
         else:
-            from .MqttConnectionOptionsDialog import \
+            from .MqttConnectionOptionsDialog import (
                 MqttConnectionOptionsDialog
+            )
             dlg = MqttConnectionOptionsDialog(
                 self.__client, self.__connectionOptions, parent=self)
             if dlg.exec_() == QDialog.Accepted:
@@ -560,8 +557,11 @@
         qos = self.publishQosSpinBox.value()
         retain = self.publishRetainCheckBox.isChecked()
         payloadFile = self.publishPayloadFilePicker.text()
-        if bool(payloadFile) and os.path.exists(payloadFile) and \
-           os.path.getsize(payloadFile) <= 268435455:
+        if (
+            bool(payloadFile) and
+            os.path.exists(payloadFile) and
+            os.path.getsize(payloadFile) <= 268435455
+        ):
             # payload size limit is 268,435,455 bytes
             try:
                 f = open(payloadFile, "rb")
Binary file MqttMonitor/i18n/mqttmonitor_de.qm has changed
--- a/MqttMonitor/i18n/mqttmonitor_de.ts	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/i18n/mqttmonitor_de.ts	Tue Jun 23 19:26:33 2020 +0200
@@ -191,7 +191,7 @@
         <translation>Gib den vollständigen Pfad zur CA Zertifikatsdatei ein; leer lassen, um den Plattformstandard zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="48"/>
+        <location filename="../MqttConnectionOptionsDialog.py" line="46"/>
         <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
         <translation>Zertifikatdateien (*.crt *.pem);;Alle Dateien (*)</translation>
     </message>
@@ -379,7 +379,7 @@
         <translation>Auswählen, um SSL/TLS Verbindungen zu aktivieren</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>SSL/TLS Enabled</source>
         <translation>SSL/TLS aktiviert</translation>
     </message>
@@ -454,12 +454,12 @@
         <translation>Schlüsseldateien (*.key *.pem);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>Changed Connection Profile</source>
         <translation>Verbindungsprofil geändert</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>The current profile has unsaved changes. Shall these be saved?</source>
         <translation>Das aktuelle Profil hat ungesicherte Änderungen. Sollen diese gesichert werden?</translation>
     </message>
@@ -499,37 +499,37 @@
         <translation>&lt;p&gt;Soll das Verbindungsprofil &lt;b&gt;{0}&lt;/b&gt; wirklich gelöscht werden?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>Invalid Connection Parameters</source>
         <translation>Ungültige Verbindungsparameter</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>An empty Client ID requires a clean session.</source>
         <translation>Eine leere Client ID setzt eine neue Session voraus.</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
         <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde aktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, unverschlüsselten Port (Port 1883) eingestellt. Soll dies geändert werden?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>SSL/TLS Disabled</source>
         <translation>SSL/TLS deaktiviert</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
         <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde deaktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, verschlüsselten Port (Port 8883) eingestellt. Soll dies geändert werden?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>Changed Connection Profiles</source>
         <translation>Verbindungsprofile geändert</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>The list of connection profiles has unsaved changes.</source>
         <translation>Die Liste der Verbindungsprofile hat ungesicherte Änderungen.</translation>
     </message>
@@ -653,50 +653,50 @@
 <context>
     <name>MqttMonitorPlugin</name>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="63"/>
-        <source>package not available</source>
-        <translation>Paket nicht verfügbar</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="68"/>
+        <location filename="../../PluginMqttMonitor.py" line="64"/>
         <source>MQTT</source>
         <translation>MQTT</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="69"/>
+        <location filename="../../PluginMqttMonitor.py" line="65"/>
         <source>paho-mqtt</source>
         <translation>paho-mqtt</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="129"/>
+        <location filename="../../PluginMqttMonitor.py" line="123"/>
         <source>The &apos;paho-mqtt&apos; package is not available.</source>
         <translation>Das &apos;paho-mqtt&apos; Paket ist nicht verfügbar.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>MQTT Monitor</source>
         <translation>MQTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>M&amp;QTT Monitor</source>
         <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>Alt+Shift+Q</source>
         <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="147"/>
+        <location filename="../../PluginMqttMonitor.py" line="154"/>
         <source>Switch the input focus to the MQTT Monitor window.</source>
         <translation>Schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="149"/>
+        <location filename="../../PluginMqttMonitor.py" line="156"/>
         <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
         <translation>&lt;b&gt;MQTT Monitor aktivieren&lt;/b&gt;&lt;p&gt;Dies schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../../PluginMqttMonitor.py" line="59"/>
+        <source>(package not available)</source>
+        <translation>(Paket nicht verfügbar)</translation>
+    </message>
 </context>
 <context>
     <name>MqttMonitorWidget</name>
@@ -736,7 +736,7 @@
         <translation>Pub/Sub</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="760"/>
+        <location filename="../MqttMonitorWidget.py" line="766"/>
         <source>Subscribe</source>
         <translation>Abonnieren</translation>
     </message>
@@ -766,7 +766,7 @@
         <translation>Drücken, um das eingegebene Thema zu abonieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="756"/>
+        <location filename="../MqttMonitorWidget.py" line="762"/>
         <source>Unsubscribe</source>
         <translation>Abo kündigen</translation>
     </message>
@@ -826,7 +826,7 @@
         <translation>Status</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="761"/>
+        <location filename="../MqttMonitorWidget.py" line="767"/>
         <source>Press to activate the status display</source>
         <translation>Drücken, um die Statusanzeige zu aktivieren</translation>
     </message>
@@ -991,22 +991,22 @@
         <translation>Sockets</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="261"/>
+        <location filename="../MqttMonitorWidget.py" line="262"/>
         <source>Connection to Broker shut down cleanly.</source>
         <translation>Die Verbindung zum Broker wurde ordnungsgemäß beendet.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscribe to Topic</source>
         <translation>Thema abonnieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
         <translation>Abonnements zum Statusthema &apos;$SYS&apos; werden auf der Registerkarte &apos;Status&apos; ausgeführt.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="757"/>
+        <location filename="../MqttMonitorWidget.py" line="763"/>
         <source>Press to deactivate the status display</source>
         <translation>Drücken, um die Statusanzeige zu deaktivieren</translation>
     </message>
@@ -1056,17 +1056,17 @@
         <translation>Drücken, um die Liste der empfangenen Protokollmeldungen zu löschen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="242"/>
+        <location filename="../MqttMonitorWidget.py" line="243"/>
         <source>Connection timed out</source>
         <translation>Zeitlimit für Verbindung überschritten</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="316"/>
+        <location filename="../MqttMonitorWidget.py" line="317"/>
         <source>{0}: {1}</source>
         <translation>{0}: {1}</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1050"/>
+        <location filename="../MqttMonitorWidget.py" line="1059"/>
         <source>Connecting to {0}:{1} ...</source>
         <translation>Verbinde zu {0}:{1} ...</translation>
     </message>
@@ -1116,52 +1116,52 @@
         <translation>Empfangenen Protokollmeldungen folgen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="66"/>
+        <location filename="../MqttMonitorWidget.py" line="65"/>
         <source>All Files (*)</source>
         <translation>Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>Read Payload from File</source>
         <translation>Nutzdaten aus Datei lesen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden. Abbruch...&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="678"/>
+        <location filename="../MqttMonitorWidget.py" line="684"/>
         <source>Save Messages</source>
         <translation>Meldungen speichern</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="645"/>
+        <location filename="../MqttMonitorWidget.py" line="651"/>
         <source>Messages Files (*.txt);;All Files (*)</source>
         <translation>Meldungsdateien (*.txt);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="720"/>
+        <location filename="../MqttMonitorWidget.py" line="726"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>Save Log Messages</source>
         <translation>Protokollmeldungen speichern</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="702"/>
+        <location filename="../MqttMonitorWidget.py" line="708"/>
         <source>Log Files (*.log);;All Files (*)</source>
         <translation>Protokolldateien (*.log);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="897"/>
+        <location filename="../MqttMonitorWidget.py" line="902"/>
         <source>QoS: {0}
 </source>
         <translation>QoS: {0}
--- a/MqttMonitor/i18n/mqttmonitor_empty.ts	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/i18n/mqttmonitor_empty.ts	Tue Jun 23 19:26:33 2020 +0200
@@ -191,7 +191,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="48"/>
+        <location filename="../MqttConnectionOptionsDialog.py" line="46"/>
         <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -379,7 +379,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>SSL/TLS Enabled</source>
         <translation type="unfinished"></translation>
     </message>
@@ -454,12 +454,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>Changed Connection Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>The current profile has unsaved changes. Shall these be saved?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -499,37 +499,37 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>Invalid Connection Parameters</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>An empty Client ID requires a clean session.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>SSL/TLS Disabled</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>Changed Connection Profiles</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>The list of connection profiles has unsaved changes.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -653,50 +653,50 @@
 <context>
     <name>MqttMonitorPlugin</name>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="63"/>
-        <source>package not available</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="68"/>
+        <location filename="../../PluginMqttMonitor.py" line="64"/>
         <source>MQTT</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="69"/>
+        <location filename="../../PluginMqttMonitor.py" line="65"/>
         <source>paho-mqtt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="129"/>
+        <location filename="../../PluginMqttMonitor.py" line="123"/>
         <source>The &apos;paho-mqtt&apos; package is not available.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>MQTT Monitor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>M&amp;QTT Monitor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>Alt+Shift+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="147"/>
+        <location filename="../../PluginMqttMonitor.py" line="154"/>
         <source>Switch the input focus to the MQTT Monitor window.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="149"/>
+        <location filename="../../PluginMqttMonitor.py" line="156"/>
         <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../PluginMqttMonitor.py" line="59"/>
+        <source>(package not available)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MqttMonitorWidget</name>
@@ -736,7 +736,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="760"/>
+        <location filename="../MqttMonitorWidget.py" line="766"/>
         <source>Subscribe</source>
         <translation type="unfinished"></translation>
     </message>
@@ -766,7 +766,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="756"/>
+        <location filename="../MqttMonitorWidget.py" line="762"/>
         <source>Unsubscribe</source>
         <translation type="unfinished"></translation>
     </message>
@@ -826,7 +826,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="761"/>
+        <location filename="../MqttMonitorWidget.py" line="767"/>
         <source>Press to activate the status display</source>
         <translation type="unfinished"></translation>
     </message>
@@ -991,22 +991,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="261"/>
+        <location filename="../MqttMonitorWidget.py" line="262"/>
         <source>Connection to Broker shut down cleanly.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscribe to Topic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="757"/>
+        <location filename="../MqttMonitorWidget.py" line="763"/>
         <source>Press to deactivate the status display</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1056,17 +1056,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="242"/>
+        <location filename="../MqttMonitorWidget.py" line="243"/>
         <source>Connection timed out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="316"/>
+        <location filename="../MqttMonitorWidget.py" line="317"/>
         <source>{0}: {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1050"/>
+        <location filename="../MqttMonitorWidget.py" line="1059"/>
         <source>Connecting to {0}:{1} ...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1116,52 +1116,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="66"/>
+        <location filename="../MqttMonitorWidget.py" line="65"/>
         <source>All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>Read Payload from File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="678"/>
+        <location filename="../MqttMonitorWidget.py" line="684"/>
         <source>Save Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="645"/>
+        <location filename="../MqttMonitorWidget.py" line="651"/>
         <source>Messages Files (*.txt);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="720"/>
+        <location filename="../MqttMonitorWidget.py" line="726"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>Save Log Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="702"/>
+        <location filename="../MqttMonitorWidget.py" line="708"/>
         <source>Log Files (*.log);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="897"/>
+        <location filename="../MqttMonitorWidget.py" line="902"/>
         <source>QoS: {0}
 </source>
         <translation type="unfinished"></translation>
Binary file MqttMonitor/i18n/mqttmonitor_en.qm has changed
--- a/MqttMonitor/i18n/mqttmonitor_en.ts	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/i18n/mqttmonitor_en.ts	Tue Jun 23 19:26:33 2020 +0200
@@ -191,7 +191,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="48"/>
+        <location filename="../MqttConnectionOptionsDialog.py" line="46"/>
         <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -379,7 +379,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>SSL/TLS Enabled</source>
         <translation type="unfinished"></translation>
     </message>
@@ -454,12 +454,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>Changed Connection Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>The current profile has unsaved changes. Shall these be saved?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -499,37 +499,37 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>Invalid Connection Parameters</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>An empty Client ID requires a clean session.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>SSL/TLS Disabled</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>Changed Connection Profiles</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>The list of connection profiles has unsaved changes.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -653,50 +653,50 @@
 <context>
     <name>MqttMonitorPlugin</name>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="63"/>
-        <source>package not available</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="68"/>
+        <location filename="../../PluginMqttMonitor.py" line="64"/>
         <source>MQTT</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="69"/>
+        <location filename="../../PluginMqttMonitor.py" line="65"/>
         <source>paho-mqtt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="129"/>
+        <location filename="../../PluginMqttMonitor.py" line="123"/>
         <source>The &apos;paho-mqtt&apos; package is not available.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>MQTT Monitor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>M&amp;QTT Monitor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>Alt+Shift+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="147"/>
+        <location filename="../../PluginMqttMonitor.py" line="154"/>
         <source>Switch the input focus to the MQTT Monitor window.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="149"/>
+        <location filename="../../PluginMqttMonitor.py" line="156"/>
         <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../PluginMqttMonitor.py" line="59"/>
+        <source>(package not available)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MqttMonitorWidget</name>
@@ -736,7 +736,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="760"/>
+        <location filename="../MqttMonitorWidget.py" line="766"/>
         <source>Subscribe</source>
         <translation type="unfinished"></translation>
     </message>
@@ -766,7 +766,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="756"/>
+        <location filename="../MqttMonitorWidget.py" line="762"/>
         <source>Unsubscribe</source>
         <translation type="unfinished"></translation>
     </message>
@@ -826,7 +826,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="761"/>
+        <location filename="../MqttMonitorWidget.py" line="767"/>
         <source>Press to activate the status display</source>
         <translation type="unfinished"></translation>
     </message>
@@ -991,22 +991,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="261"/>
+        <location filename="../MqttMonitorWidget.py" line="262"/>
         <source>Connection to Broker shut down cleanly.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscribe to Topic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="757"/>
+        <location filename="../MqttMonitorWidget.py" line="763"/>
         <source>Press to deactivate the status display</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1056,17 +1056,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="242"/>
+        <location filename="../MqttMonitorWidget.py" line="243"/>
         <source>Connection timed out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="316"/>
+        <location filename="../MqttMonitorWidget.py" line="317"/>
         <source>{0}: {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1050"/>
+        <location filename="../MqttMonitorWidget.py" line="1059"/>
         <source>Connecting to {0}:{1} ...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1116,52 +1116,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="66"/>
+        <location filename="../MqttMonitorWidget.py" line="65"/>
         <source>All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>Read Payload from File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="678"/>
+        <location filename="../MqttMonitorWidget.py" line="684"/>
         <source>Save Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="645"/>
+        <location filename="../MqttMonitorWidget.py" line="651"/>
         <source>Messages Files (*.txt);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="720"/>
+        <location filename="../MqttMonitorWidget.py" line="726"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>Save Log Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="702"/>
+        <location filename="../MqttMonitorWidget.py" line="708"/>
         <source>Log Files (*.log);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="897"/>
+        <location filename="../MqttMonitorWidget.py" line="902"/>
         <source>QoS: {0}
 </source>
         <translation type="unfinished"></translation>
--- a/MqttMonitor/i18n/mqttmonitor_es.ts	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/i18n/mqttmonitor_es.ts	Tue Jun 23 19:26:33 2020 +0200
@@ -191,7 +191,7 @@
         <translation>Introducir la ruta completa al archivo de certificado CA; dejar en blanco para utilizar el valor por defecto de la plataforma</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="48"/>
+        <location filename="../MqttConnectionOptionsDialog.py" line="46"/>
         <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
         <translation>Archivos de Certificado (*.crt *.pem);;Todos los Archivos (*)</translation>
     </message>
@@ -379,7 +379,7 @@
         <translation>Seleccionar para habilitar conexiones SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>SSL/TLS Enabled</source>
         <translation>SSL/TLS Habilitado</translation>
     </message>
@@ -454,12 +454,12 @@
         <translation>Archivos de Clave (*.key *.pem);;Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>Changed Connection Profile</source>
         <translation>Perfil de Conexión Cambiado</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="695"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>The current profile has unsaved changes. Shall these be saved?</source>
         <translation>El perfil actual tiene cambios sin guardar. ¿Desea guardarlos?</translation>
     </message>
@@ -499,37 +499,37 @@
         <translation>&lt;p&gt;¿Realmente desea eliminar el Perfil de Conexión &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>Invalid Connection Parameters</source>
         <translation>Parámetros de Conexión No Válidos</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="480"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>An empty Client ID requires a clean session.</source>
         <translation>Un ID de Cliente vacío requiere una sesión limpia.</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="589"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
         <translation>Se ha habilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>SSL/TLS Disabled</source>
         <translation>SSL/TLS Deshabilitado</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="603"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
         <translation>Se ha deshabilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>Changed Connection Profiles</source>
         <translation>Perfiles de Conexión Cambiados</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="671"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>The list of connection profiles has unsaved changes.</source>
         <translation>La lista de perfiles de conexión tienen cambios sin guardar.</translation>
     </message>
@@ -655,48 +655,53 @@
     <message>
         <location filename="../../PluginMqttMonitor.py" line="63"/>
         <source>package not available</source>
-        <translation>package no disponible</translation>
+        <translation type="obsolete">package no disponible</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="68"/>
+        <location filename="../../PluginMqttMonitor.py" line="64"/>
         <source>MQTT</source>
         <translation>MQTT</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="69"/>
+        <location filename="../../PluginMqttMonitor.py" line="65"/>
         <source>paho-mqtt</source>
         <translation>paho-mqtt</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="129"/>
+        <location filename="../../PluginMqttMonitor.py" line="123"/>
         <source>The &apos;paho-mqtt&apos; package is not available.</source>
         <translation>El package &apos;paho-mqtt&apos; no está disponible.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>MQTT Monitor</source>
         <translation>MQTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>M&amp;QTT Monitor</source>
         <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="141"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>Alt+Shift+Q</source>
         <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="147"/>
+        <location filename="../../PluginMqttMonitor.py" line="154"/>
         <source>Switch the input focus to the MQTT Monitor window.</source>
         <translation>Cambiar el foco de input a la ventana de MQTT Monitor.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="149"/>
+        <location filename="../../PluginMqttMonitor.py" line="156"/>
         <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Activar MQTT Monitor&lt;/b&gt;&lt;p&gt;Cambia el foco de input a la ventana de MQTT Monitor.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../../PluginMqttMonitor.py" line="59"/>
+        <source>(package not available)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MqttMonitorWidget</name>
@@ -736,7 +741,7 @@
         <translation>Pub/Sub</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="760"/>
+        <location filename="../MqttMonitorWidget.py" line="766"/>
         <source>Subscribe</source>
         <translation>Subscribir</translation>
     </message>
@@ -766,7 +771,7 @@
         <translation>Pulsar para subscribir al tópico dado</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="756"/>
+        <location filename="../MqttMonitorWidget.py" line="762"/>
         <source>Unsubscribe</source>
         <translation>Retirar subscripción</translation>
     </message>
@@ -826,7 +831,7 @@
         <translation>Estado</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="761"/>
+        <location filename="../MqttMonitorWidget.py" line="767"/>
         <source>Press to activate the status display</source>
         <translation>Pulsar para activar la visualización de status</translation>
     </message>
@@ -991,22 +996,22 @@
         <translation>Sockets</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="261"/>
+        <location filename="../MqttMonitorWidget.py" line="262"/>
         <source>Connection to Broker shut down cleanly.</source>
         <translation>Conexión a Broker detenida limpiamente.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscribe to Topic</source>
         <translation>Subscribir a Tema</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="509"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
         <translation>Las subscripciones al tema de Status &apos;$SYS&apos; se deben hacer en la pestaña de &apos;Status&apos;.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="757"/>
+        <location filename="../MqttMonitorWidget.py" line="763"/>
         <source>Press to deactivate the status display</source>
         <translation>Pulsar para activar la visualización de status</translation>
     </message>
@@ -1056,17 +1061,17 @@
         <translation>Pulsar para limpiar la lista de mensajes de log recibidos</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="242"/>
+        <location filename="../MqttMonitorWidget.py" line="243"/>
         <source>Connection timed out</source>
         <translation>Se ha agotado el tiempo de conexión</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="316"/>
+        <location filename="../MqttMonitorWidget.py" line="317"/>
         <source>{0}: {1}</source>
         <translation>{0}: {1}</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1050"/>
+        <location filename="../MqttMonitorWidget.py" line="1059"/>
         <source>Connecting to {0}:{1} ...</source>
         <translation>Connectando a {0}:{1} ...</translation>
     </message>
@@ -1116,52 +1121,52 @@
         <translation>Seguir mensajes de log recibidos</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="66"/>
+        <location filename="../MqttMonitorWidget.py" line="65"/>
         <source>All Files (*)</source>
         <translation>Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>Read Payload from File</source>
         <translation>Leer Payload desde Archivo</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="565"/>
+        <location filename="../MqttMonitorWidget.py" line="571"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido leer. Abortando...&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="678"/>
+        <location filename="../MqttMonitorWidget.py" line="684"/>
         <source>Save Messages</source>
         <translation>Guardar Mensajes</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="645"/>
+        <location filename="../MqttMonitorWidget.py" line="651"/>
         <source>Messages Files (*.txt);;All Files (*)</source>
         <translation>Archivos de Mensaje (*.txt);;Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="720"/>
+        <location filename="../MqttMonitorWidget.py" line="726"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Sobreescribirlo?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido guardar.&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="735"/>
+        <location filename="../MqttMonitorWidget.py" line="741"/>
         <source>Save Log Messages</source>
         <translation>Guardar Mensajes de Log</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="702"/>
+        <location filename="../MqttMonitorWidget.py" line="708"/>
         <source>Log Files (*.log);;All Files (*)</source>
         <translation>Archivos de Log (*.log);;Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="897"/>
+        <location filename="../MqttMonitorWidget.py" line="902"/>
         <source>QoS: {0}
 </source>
         <translation>QoS: {0}
--- a/MqttMonitor/i18n/mqttmonitor_ru.ts	Thu May 28 17:36:58 2020 +0200
+++ b/MqttMonitor/i18n/mqttmonitor_ru.ts	Tue Jun 23 19:26:33 2020 +0200
@@ -3,37 +3,37 @@
 <context>
     <name>MqttConnackMessage</name>
     <message>
-        <location filename="../MqttClient.py" line="470"/>
+        <location filename="../MqttClient.py" line="467"/>
         <source>Connection Accepted.</source>
         <translation>Соединение установлено.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="474"/>
+        <location filename="../MqttClient.py" line="471"/>
         <source>Connection Refused: unacceptable protocol version.</source>
         <translation>Соединение отклонено: неприемлемая версия протокола.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="478"/>
+        <location filename="../MqttClient.py" line="475"/>
         <source>Connection Refused: identifier rejected.</source>
         <translation>Соединение отклонено: идентификатор отклонен.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="482"/>
+        <location filename="../MqttClient.py" line="479"/>
         <source>Connection Refused: broker unavailable.</source>
         <translation>Соединение отклонено: брокер недоступен.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="486"/>
+        <location filename="../MqttClient.py" line="483"/>
         <source>Connection Refused: bad user name or password.</source>
         <translation>Соединение отклонено: неправильное имя пользователя или пароль.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="490"/>
+        <location filename="../MqttClient.py" line="487"/>
         <source>Connection Refused: not authorised.</source>
         <translation>Соединение отклонено: нет авторизации.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="494"/>
+        <location filename="../MqttClient.py" line="491"/>
         <source>Connection Refused: unknown reason.</source>
         <translation>Соединение отклонено: неизвестная причина.</translation>
     </message>
@@ -191,7 +191,7 @@
         <translation>Введите полный путь к файлу сертификата CA; оставьте поле пустым, чтобы использовать платформу по умолчанию</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="48"/>
+        <location filename="../MqttConnectionOptionsDialog.py" line="46"/>
         <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
         <translation>Файлы сертификатов (*.crt *.pem);;Все файлы (*)</translation>
     </message>
@@ -379,7 +379,7 @@
         <translation>Разрешить SSL/TLS соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="588"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>SSL/TLS Enabled</source>
         <translation>Разрешить SSL/TLS</translation>
     </message>
@@ -454,12 +454,12 @@
         <translation>Файлы ключей (*.key *.pem);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="694"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>Changed Connection Profile</source>
         <translation>Измененный профиль соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="694"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="696"/>
         <source>The current profile has unsaved changes. Shall these be saved?</source>
         <translation>В текущем профиле есть несохраненные изменения. Должны ли они быть сохранены?</translation>
     </message>
@@ -499,37 +499,37 @@
         <translation>&lt;p&gt;Действительно удалить профиль соединения &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="479"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>Invalid Connection Parameters</source>
         <translation>Недопустимые параметры соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="479"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="481"/>
         <source>An empty Client ID requires a clean session.</source>
         <translation>При незаданном ID клиента требуется чистый сеанс.</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="588"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="590"/>
         <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
         <translation>Разрешено соединение с использованием шифрования SSL/TLS. Однако по-прежнему задействован порт брокера без шифрования, по умолчанию порт 1883. Изменить?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="602"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>SSL/TLS Disabled</source>
         <translation>SSL/TLS запрещено</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="602"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="604"/>
         <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
         <translation>Соединение с использованием шифрования SSL/TLS запрещено. Однако по-прежнему задействован порт брокера с шифрованием, по умолчанию порт 8883. Изменить?</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="670"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>Changed Connection Profiles</source>
         <translation>Измененные профили соединений</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="670"/>
+        <location filename="../MqttConnectionProfilesDialog.py" line="672"/>
         <source>The list of connection profiles has unsaved changes.</source>
         <translation>В списке профилей соединений имеются несохраненные изменения.</translation>
     </message>
@@ -537,77 +537,77 @@
 <context>
     <name>MqttErrorMessage</name>
     <message>
-        <location filename="../MqttClient.py" line="510"/>
+        <location filename="../MqttClient.py" line="507"/>
         <source>No error.</source>
         <translation>Нет ошибки.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="514"/>
+        <location filename="../MqttClient.py" line="511"/>
         <source>Out of memory.</source>
         <translation>Недостаточно памяти.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="518"/>
+        <location filename="../MqttClient.py" line="515"/>
         <source>A network protocol error occurred when communicating with the broker.</source>
         <translation>Во время общения с брокером произошла ошибка сетевого протокола.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="523"/>
+        <location filename="../MqttClient.py" line="520"/>
         <source>Invalid function arguments provided.</source>
         <translation>Предоставлены недопустимые аргументы функции.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="527"/>
+        <location filename="../MqttClient.py" line="524"/>
         <source>The client is not currently connected.</source>
         <translation>В настоящее время клиент не подключен.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="531"/>
+        <location filename="../MqttClient.py" line="528"/>
         <source>The connection was refused.</source>
         <translation>Соединение было отклонено.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="535"/>
+        <location filename="../MqttClient.py" line="532"/>
         <source>Message not found (internal error).</source>
         <translation>Сообщение не найдено (внутренняя ошибка).</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="539"/>
+        <location filename="../MqttClient.py" line="536"/>
         <source>The connection was lost.</source>
         <translation>Соединение было потеряно.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="543"/>
+        <location filename="../MqttClient.py" line="540"/>
         <source>A TLS error occurred.</source>
         <translation>Произошла ошибка TLS.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="547"/>
+        <location filename="../MqttClient.py" line="544"/>
         <source>Payload too large.</source>
         <translation>Слишком большая полезная нагрузка.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="551"/>
+        <location filename="../MqttClient.py" line="548"/>
         <source>This feature is not supported.</source>
         <translation>Эта функция не поддерживается.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="555"/>
+        <location filename="../MqttClient.py" line="552"/>
         <source>Authorisation failed.</source>
         <translation>Ошибка авторизации.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="559"/>
+        <location filename="../MqttClient.py" line="556"/>
         <source>Access denied by ACL.</source>
         <translation>Отказано в доступе к ACL.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="571"/>
+        <location filename="../MqttClient.py" line="568"/>
         <source>Unknown error.</source>
         <translation>Неизвестная ошибка.</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="567"/>
+        <location filename="../MqttClient.py" line="564"/>
         <source>Error defined by errno.</source>
         <translation>Ошибка, определяемая errno.</translation>
     </message>
@@ -615,37 +615,37 @@
 <context>
     <name>MqttLogLevelString</name>
     <message>
-        <location filename="../MqttClient.py" line="610"/>
+        <location filename="../MqttClient.py" line="607"/>
         <source>Unknown</source>
         <translation>Unknown</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="597"/>
+        <location filename="../MqttClient.py" line="594"/>
         <source>Info</source>
         <translation>Info</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="599"/>
+        <location filename="../MqttClient.py" line="596"/>
         <source>Notice</source>
         <translation>Notice</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="601"/>
+        <location filename="../MqttClient.py" line="598"/>
         <source>Warning</source>
         <translation>Warning</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="603"/>
+        <location filename="../MqttClient.py" line="600"/>
         <source>Error</source>
         <translation>Error</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="605"/>
+        <location filename="../MqttClient.py" line="602"/>
         <source>Debug</source>
         <translation>Debug</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="607"/>
+        <location filename="../MqttClient.py" line="604"/>
         <source>Logging Disabled</source>
         <translation>Ведение журнала запрещено</translation>
     </message>
@@ -655,48 +655,53 @@
     <message>
         <location filename="../../PluginMqttMonitor.py" line="62"/>
         <source>package not available</source>
-        <translation>пакет недоступен</translation>
+        <translation type="obsolete">пакет недоступен</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="67"/>
+        <location filename="../../PluginMqttMonitor.py" line="64"/>
         <source>MQTT</source>
         <translation>MQTT - клиентская библиотека Python</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="68"/>
+        <location filename="../../PluginMqttMonitor.py" line="65"/>
         <source>paho-mqtt</source>
         <translation>paho-mqtt</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="128"/>
+        <location filename="../../PluginMqttMonitor.py" line="123"/>
         <source>The &apos;paho-mqtt&apos; package is not available.</source>
         <translation>Пакет &apos;paho-mqtt&apos; недоступен.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="153"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>MQTT Monitor</source>
         <translation>MQTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="153"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>M&amp;QTT Monitor</source>
         <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="153"/>
+        <location filename="../../PluginMqttMonitor.py" line="148"/>
         <source>Alt+Shift+Q</source>
         <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="159"/>
+        <location filename="../../PluginMqttMonitor.py" line="154"/>
         <source>Switch the input focus to the MQTT Monitor window.</source>
         <translation>Переключить фокус ввода в окно MQTT Monitor.</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="161"/>
+        <location filename="../../PluginMqttMonitor.py" line="156"/>
         <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Активировать MQTT Monitor&lt;/b&gt;&lt;p&gt;Переключение фокуса ввода в окно MQTT Monitor.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../../PluginMqttMonitor.py" line="59"/>
+        <source>(package not available)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MqttMonitorWidget</name>
@@ -1081,32 +1086,32 @@
         <translation>Следовать за получаемыми сообщениями</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="70"/>
+        <location filename="../MqttMonitorWidget.py" line="65"/>
         <source>All Files (*)</source>
         <translation>Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="248"/>
+        <location filename="../MqttMonitorWidget.py" line="243"/>
         <source>Connection timed out</source>
         <translation>Время ожидания соединения истекло</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="267"/>
+        <location filename="../MqttMonitorWidget.py" line="262"/>
         <source>Connection to Broker shut down cleanly.</source>
         <translation>Соединение с брокером закрыто. Очистка произведена.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="322"/>
+        <location filename="../MqttMonitorWidget.py" line="317"/>
         <source>{0}: {1}</source>
         <translation>{0}: {1}</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="515"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscribe to Topic</source>
         <translation>Подписаться на тему</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="515"/>
+        <location filename="../MqttMonitorWidget.py" line="512"/>
         <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
         <translation>Подписки на тему статуса «$ SYS» должны быть сделаны на вкладке «Статус».</translation>
     </message>
--- a/PluginMqttMonitor.e4p	Thu May 28 17:36:58 2020 +0200
+++ b/PluginMqttMonitor.e4p	Tue Jun 23 19:26:33 2020 +0200
@@ -249,6 +249,25 @@
         <value>
           <dict>
             <key>
+              <string>AnnotationsChecker</string>
+            </key>
+            <value>
+              <dict>
+                <key>
+                  <string>MaximumComplexity</string>
+                </key>
+                <value>
+                  <int>3</int>
+                </value>
+                <key>
+                  <string>MinimumCoverage</string>
+                </key>
+                <value>
+                  <int>75</int>
+                </value>
+              </dict>
+            </value>
+            <key>
               <string>BlankLines</string>
             </key>
             <value>
@@ -289,6 +308,19 @@
               </dict>
             </value>
             <key>
+              <string>CommentedCodeChecker</string>
+            </key>
+            <value>
+              <dict>
+                <key>
+                  <string>Aggressive</string>
+                </key>
+                <value>
+                  <bool>False</bool>
+                </value>
+              </dict>
+            </value>
+            <key>
               <string>CopyrightAuthor</string>
             </key>
             <value>
@@ -307,6 +339,12 @@
               <string>eric</string>
             </value>
             <key>
+              <string>EnabledCheckerCategories</string>
+            </key>
+            <value>
+              <string>C, D, E, M, N, S, W</string>
+            </value>
+            <key>
               <string>ExcludeFiles</string>
             </key>
             <value>
@@ -316,7 +354,7 @@
               <string>ExcludeMessages</string>
             </key>
             <value>
-              <string>C101, E265, E266, E305, E402, M201, M811, N802, N803, N807, N808, N821, W293, W504</string>
+              <string>C101,E265,E266,E305,E402,M201,M811,N802,N803,N807,N808,N821,W293,W504</string>
             </value>
             <key>
               <string>FixCodes</string>
@@ -334,7 +372,7 @@
               <string>FutureChecker</string>
             </key>
             <value>
-              <string>unicode_literals</string>
+              <string></string>
             </value>
             <key>
               <string>HangClosing</string>
@@ -367,6 +405,12 @@
               <int>10</int>
             </value>
             <key>
+              <string>MaxDocLineLength</string>
+            </key>
+            <value>
+              <int>79</int>
+            </value>
+            <key>
               <string>MaxLineLength</string>
             </key>
             <value>
@@ -385,6 +429,91 @@
               <bool>True</bool>
             </value>
             <key>
+              <string>SecurityChecker</string>
+            </key>
+            <value>
+              <dict>
+                <key>
+                  <string>CheckTypedException</string>
+                </key>
+                <value>
+                  <bool>False</bool>
+                </value>
+                <key>
+                  <string>HardcodedTmpDirectories</string>
+                </key>
+                <value>
+                  <list>
+                    <string>/tmp</string>
+                    <string>/var/tmp</string>
+                    <string>/dev/shm</string>
+                    <string>~/tmp</string>
+                  </list>
+                </value>
+                <key>
+                  <string>InsecureHashes</string>
+                </key>
+                <value>
+                  <list>
+                    <string>md4</string>
+                    <string>md5</string>
+                    <string>sha</string>
+                    <string>sha1</string>
+                  </list>
+                </value>
+                <key>
+                  <string>InsecureSslProtocolVersions</string>
+                </key>
+                <value>
+                  <list>
+                    <string>PROTOCOL_SSLv2</string>
+                    <string>SSLv2_METHOD</string>
+                    <string>SSLv23_METHOD</string>
+                    <string>PROTOCOL_SSLv3</string>
+                    <string>PROTOCOL_TLSv1</string>
+                    <string>SSLv3_METHOD</string>
+                    <string>TLSv1_METHOD</string>
+                  </list>
+                </value>
+                <key>
+                  <string>WeakKeySizeDsaHigh</string>
+                </key>
+                <value>
+                  <string>1024</string>
+                </value>
+                <key>
+                  <string>WeakKeySizeDsaMedium</string>
+                </key>
+                <value>
+                  <string>2048</string>
+                </value>
+                <key>
+                  <string>WeakKeySizeEcHigh</string>
+                </key>
+                <value>
+                  <string>160</string>
+                </value>
+                <key>
+                  <string>WeakKeySizeEcMedium</string>
+                </key>
+                <value>
+                  <string>224</string>
+                </value>
+                <key>
+                  <string>WeakKeySizeRsaHigh</string>
+                </key>
+                <value>
+                  <string>1024</string>
+                </value>
+                <key>
+                  <string>WeakKeySizeRsaMedium</string>
+                </key>
+                <value>
+                  <string>2048</string>
+                </value>
+              </dict>
+            </value>
+            <key>
               <string>ShowIgnored</string>
             </key>
             <value>
--- a/PluginMqttMonitor.py	Thu May 28 17:36:58 2020 +0200
+++ b/PluginMqttMonitor.py	Tue Jun 23 19:26:33 2020 +0200
@@ -7,8 +7,6 @@
 Module implementing the MQTT Monitor plug-in.
 """
 
-from __future__ import unicode_literals
-
 import os
 import json
 
@@ -26,7 +24,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "1.2.3"
+version = "2.0.0"
 className = "MqttMonitorPlugin"
 packageName = "MqttMonitor"
 shortDescription = "Plug-in implementing a tool to connect to a MQTT broker"
@@ -41,7 +39,6 @@
 )
 needsRestart = False
 pyqtApi = 2
-python2Compatible = True
 # End-Of-Header
 
 error = ""
@@ -62,14 +59,12 @@
         version = QCoreApplication.translate(
             "MqttMonitorPlugin", "(package not available)")
     
-    data = {
+    return {
         "programEntry": False,
         "header": QCoreApplication.translate("MqttMonitorPlugin", "MQTT"),
         "text": QCoreApplication.translate("MqttMonitorPlugin", "paho-mqtt"),
         "version": version,
     }
-    
-    return data
 
 
 def prepareUninstall():
@@ -138,7 +133,7 @@
             lightness = palette.color(QPalette.Window).lightness()
             usesDarkPalette = lightness <= 128
         if usesDarkPalette:
-           iconSuffix = "dark"
+            iconSuffix = "dark"
         else:
             iconSuffix = "light"
         
Binary file PluginMqttMonitor.zip has changed

eric ide

mercurial