Fix tray visibility and message reception issues
Some checks failed
build / build-win64 (push) Waiting to run
build / build-macos (push) Waiting to run
build / build-pip (push) Failing after 16s

- Disable sound initialization to prevent hanging
- Add missing import re in utils.py
- Fix settings loading for QSettings
- Update file paths to use PROJECT_ROOT
- Revert to working API paths and listener from commit efdc63e
This commit is contained in:
kdusek
2025-12-07 22:39:07 +01:00
parent 7b695d7b7f
commit 5138303016
4060 changed files with 579123 additions and 23 deletions

View File

@@ -0,0 +1,6 @@
# Automatically generated configuration for PyQt6.QtRemoteObjects.
sip-version = "6.14.0"
sip-abi-version = "13.8"
module-tags = ["Qt_6_10_0", "Linux"]
module-disabled-features = []

View File

@@ -0,0 +1,54 @@
// QtRemoteObjectsmod.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%Module(name=PyQt6.QtRemoteObjects, keyword_arguments="Optional", use_limited_api=True)
%Import QtCore/QtCoremod.sip
%Import QtNetwork/QtNetworkmod.sip
%Copying
Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
This file is part of PyQt6.
This file may be used under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation and appearing in
the file LICENSE included in the packaging of this file. Please review the
following information to ensure the GNU General Public License version 3.0
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
If you do not wish to use this file under the terms of the GPL version 3.0
then you may purchase a commercial license. For more information contact
info@riverbankcomputing.com.
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%End
%DefaultSupertype PyQt6.sip.simplewrapper
%Include qtremoteobjectglobal.sip
%Include qremoteobjectabstractitemmodelreplica.sip
%Include qremoteobjectdynamicreplica.sip
%Include qremoteobjectnode.sip
%Include qremoteobjectregistry.sip
%Include qremoteobjectreplica.sip

View File

@@ -0,0 +1,54 @@
// qremoteobjectabstractitemmodelreplica.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
class QAbstractItemModelReplica : public QAbstractItemModel /NoDefaultCtors/
{
%TypeHeaderCode
#include <qremoteobjectabstractitemmodelreplica.h>
%End
public:
virtual ~QAbstractItemModelReplica();
QItemSelectionModel *selectionModel() const;
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
virtual QModelIndex parent(const QModelIndex &index) const;
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
virtual Qt::ItemFlags flags(const QModelIndex &index) const;
QList<int> availableRoles() const;
virtual QHash<int, QByteArray> roleNames() const;
bool isInitialized() const;
bool hasData(const QModelIndex &index, int role) const;
size_t rootCacheSize() const;
void setRootCacheSize(size_t rootCacheSize);
signals:
void initialized();
};
%End

View File

@@ -0,0 +1,38 @@
// qremoteobjectdynamicreplica.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
class QRemoteObjectDynamicReplica : public QRemoteObjectReplica
{
%TypeHeaderCode
#include <qremoteobjectdynamicreplica.h>
%End
public:
virtual ~QRemoteObjectDynamicReplica();
private:
QRemoteObjectDynamicReplica();
};
%End

View File

@@ -0,0 +1,199 @@
// qremoteobjectnode.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
class QRemoteObjectAbstractPersistedStore : public QObject
{
%TypeHeaderCode
#include <qremoteobjectnode.h>
%End
public:
QRemoteObjectAbstractPersistedStore(QObject *parent /TransferThis/ = 0);
virtual ~QRemoteObjectAbstractPersistedStore();
virtual void saveProperties(const QString &repName, const QByteArray &repSig, const QVariantList &values) = 0;
virtual QVariantList restoreProperties(const QString &repName, const QByteArray &repSig) = 0;
};
%End
%If (Qt_6_2_0 -)
class QRemoteObjectNode : public QObject
{
%TypeHeaderCode
#include <qremoteobjectnode.h>
%End
%ConvertToSubClassCode
static struct class_graph {
const char *name;
sipTypeDef **type;
int yes, no;
} graph[] = {
{sipName_QAbstractItemModelReplica, &sipType_QAbstractItemModelReplica, -1, 1},
{sipName_QRemoteObjectAbstractPersistedStore, &sipType_QRemoteObjectAbstractPersistedStore, -1, 2},
{sipName_QRemoteObjectReplica, &sipType_QRemoteObjectReplica, 4, 3},
{sipName_QRemoteObjectNode, &sipType_QRemoteObjectNode, 6, -1},
{sipName_QRemoteObjectDynamicReplica, &sipType_QRemoteObjectDynamicReplica, -1, 5},
{sipName_QRemoteObjectRegistry, &sipType_QRemoteObjectRegistry, -1, -1},
{sipName_QRemoteObjectHostBase, &sipType_QRemoteObjectHostBase, 7, -1},
{sipName_QRemoteObjectHost, &sipType_QRemoteObjectHost, -1, 8},
{sipName_QRemoteObjectRegistryHost, &sipType_QRemoteObjectRegistryHost, -1, -1},
};
int i = 0;
sipType = NULL;
do
{
struct class_graph *cg = &graph[i];
if (cg->name != NULL && sipCpp->inherits(cg->name))
{
sipType = *cg->type;
i = cg->yes;
}
else
i = cg->no;
}
while (i >= 0);
%End
public:
enum ErrorCode
{
NoError,
RegistryNotAcquired,
RegistryAlreadyHosted,
NodeIsNoServer,
ServerAlreadyCreated,
UnintendedRegistryHosting,
OperationNotValidOnClientNode,
SourceNotRegistered,
MissingObjectName,
HostUrlInvalid,
ProtocolMismatch,
ListenFailed,
%If (Qt_6_7_0 -)
SocketAccessError,
%End
};
QRemoteObjectNode(QObject *parent /TransferThis/ = 0);
QRemoteObjectNode(const QUrl &registryAddress, QObject *parent /TransferThis/ = 0);
virtual ~QRemoteObjectNode();
bool connectToNode(const QUrl &address);
void addClientSideConnection(QIODevice *ioDevice);
virtual void setName(const QString &name);
QStringList instances(QStringView typeName) const;
QRemoteObjectDynamicReplica *acquireDynamic(const QString &name) /Factory/;
QAbstractItemModelReplica *acquireModel(const QString &name, QtRemoteObjects::InitialAction action = QtRemoteObjects::FetchRootSize, const QList<int> &rolesHint = {});
QUrl registryUrl() const;
virtual bool setRegistryUrl(const QUrl &registryAddress);
bool waitForRegistry(int timeout = 30000) /ReleaseGIL/;
const QRemoteObjectRegistry *registry() const;
QRemoteObjectAbstractPersistedStore *persistedStore() const;
void setPersistedStore(QRemoteObjectAbstractPersistedStore *persistedStore);
QRemoteObjectNode::ErrorCode lastError() const;
int heartbeatInterval() const;
void setHeartbeatInterval(int interval);
signals:
void remoteObjectAdded(const QRemoteObjectSourceLocation &);
void remoteObjectRemoved(const QRemoteObjectSourceLocation &);
void error(QRemoteObjectNode::ErrorCode errorCode);
void heartbeatIntervalChanged(int heartbeatInterval);
protected:
virtual void timerEvent(QTimerEvent *);
};
%End
%If (Qt_6_2_0 -)
class QRemoteObjectHostBase : public QRemoteObjectNode /NoDefaultCtors/
{
%TypeHeaderCode
#include <qremoteobjectnode.h>
%End
public:
enum AllowedSchemas
{
BuiltInSchemasOnly,
AllowExternalRegistration,
};
virtual ~QRemoteObjectHostBase();
virtual void setName(const QString &name);
bool enableRemoting(QObject *object, const QString &name = QString());
bool enableRemoting(QAbstractItemModel *model, const QString &name, const QList<int> roles, QItemSelectionModel *selectionModel = 0);
bool disableRemoting(QObject *remoteObject);
void addHostSideConnection(QIODevice *ioDevice);
bool proxy(const QUrl &registryUrl, const QUrl &hostUrl /TypeHintValue="QUrl()"/ = {});
bool reverseProxy();
};
%End
%If (Qt_6_2_0 -)
class QRemoteObjectHost : public QRemoteObjectHostBase
{
%TypeHeaderCode
#include <qremoteobjectnode.h>
%End
public:
QRemoteObjectHost(QObject *parent /TransferThis/ = 0);
QRemoteObjectHost(const QUrl &address, const QUrl &registryAddress = QUrl(), QRemoteObjectHostBase::AllowedSchemas allowedSchemas = QRemoteObjectHostBase::BuiltInSchemasOnly, QObject *parent /TransferThis/ = 0);
QRemoteObjectHost(const QUrl &address, QObject *parent /TransferThis/);
virtual ~QRemoteObjectHost();
virtual QUrl hostUrl() const;
virtual bool setHostUrl(const QUrl &hostAddress, QRemoteObjectHostBase::AllowedSchemas allowedSchemas = QRemoteObjectHostBase::BuiltInSchemasOnly);
signals:
void hostUrlChanged();
public:
%If (Qt_6_7_0 -)
static void setLocalServerOptions(QLocalServer::SocketOptions options);
%End
};
%End
%If (Qt_6_2_0 -)
class QRemoteObjectRegistryHost : public QRemoteObjectHostBase
{
%TypeHeaderCode
#include <qremoteobjectnode.h>
%End
public:
QRemoteObjectRegistryHost(const QUrl &registryAddress = QUrl(), QObject *parent /TransferThis/ = 0);
virtual ~QRemoteObjectRegistryHost();
virtual bool setRegistryUrl(const QUrl &registryUrl);
};
%End

View File

@@ -0,0 +1,43 @@
// qremoteobjectregistry.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
class QRemoteObjectRegistry : public QRemoteObjectReplica
{
%TypeHeaderCode
#include <qremoteobjectregistry.h>
%End
public:
virtual ~QRemoteObjectRegistry();
QRemoteObjectSourceLocations sourceLocations() const;
signals:
void remoteObjectAdded(const QRemoteObjectSourceLocation &entry);
void remoteObjectRemoved(const QRemoteObjectSourceLocation &entry);
private:
explicit QRemoteObjectRegistry(QObject *parent = 0);
};
%End

View File

@@ -0,0 +1,55 @@
// qremoteobjectreplica.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
class QRemoteObjectReplica : public QObject /NoDefaultCtors/
{
%TypeHeaderCode
#include <qremoteobjectreplica.h>
%End
public:
enum State
{
Uninitialized,
Default,
Valid,
Suspect,
SignatureMismatch,
};
virtual ~QRemoteObjectReplica();
bool isReplicaValid() const;
bool waitForSource(int timeout = 30000) /ReleaseGIL/;
bool isInitialized() const;
QRemoteObjectReplica::State state() const;
QRemoteObjectNode *node() const;
virtual void setNode(QRemoteObjectNode *node);
signals:
void initialized();
void stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState);
void notified();
};
%End

View File

@@ -0,0 +1,67 @@
// qtremoteobjectglobal.sip generated by MetaSIP
//
// This file is part of the QtRemoteObjects Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt6.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%If (Qt_6_2_0 -)
struct QRemoteObjectSourceLocationInfo
{
%TypeHeaderCode
#include <qtremoteobjectglobal.h>
%End
QRemoteObjectSourceLocationInfo();
QRemoteObjectSourceLocationInfo(const QString &typeName_, const QUrl &hostUrl_);
bool operator==(const QRemoteObjectSourceLocationInfo &other) const;
bool operator!=(const QRemoteObjectSourceLocationInfo &other) const;
QString typeName;
QUrl hostUrl;
};
%End
%If (Qt_6_2_0 -)
QDataStream &operator<<(QDataStream &stream, const QRemoteObjectSourceLocationInfo &info) /ReleaseGIL/;
%End
%If (Qt_6_2_0 -)
QDataStream &operator>>(QDataStream &stream, QRemoteObjectSourceLocationInfo &info /Constrained/) /ReleaseGIL/;
%End
%If (Qt_6_2_0 -)
typedef std::pair<QString, QRemoteObjectSourceLocationInfo> QRemoteObjectSourceLocation;
%End
%If (Qt_6_2_0 -)
typedef QHash<QString, QRemoteObjectSourceLocationInfo> QRemoteObjectSourceLocations;
%End
%If (Qt_6_2_0 -)
namespace QtRemoteObjects /PyQtNoQMetaObject/
{
%TypeHeaderCode
#include <qtremoteobjectglobal.h>
%End
enum InitialAction
{
FetchRootSize,
PrefetchData,
};
};
%End