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.QtStateMachine.
sip-version = "6.14.0"
sip-abi-version = "13.8"
module-tags = ["Qt_6_10_0", "Linux"]
module-disabled-features = ["PyQt_OpenGL_ES2"]

View File

@@ -0,0 +1,58 @@
// QtStateMachinemod.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.QtStateMachine, keyword_arguments="Optional", use_limited_api=True)
%Import QtCore/QtCoremod.sip
%Import QtGui/QtGuimod.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 qabstractstate.sip
%Include qabstracttransition.sip
%Include qeventtransition.sip
%Include qfinalstate.sip
%Include qhistorystate.sip
%Include qkeyeventtransition.sip
%Include qmouseeventtransition.sip
%Include qsignaltransition.sip
%Include qstate.sip
%Include qstatemachine.sip

View File

@@ -0,0 +1,45 @@
// qabstractstate.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QAbstractState : public QObject
{
%TypeHeaderCode
#include <qabstractstate.h>
%End
public:
virtual ~QAbstractState();
QState *parentState() const;
QStateMachine *machine() const;
bool active() const;
signals:
void activeChanged(bool active);
void entered();
void exited();
protected:
QAbstractState(QState *parent /TransferThis/ = 0);
virtual void onEntry(QEvent *event) = 0;
virtual void onExit(QEvent *event) = 0;
virtual bool event(QEvent *e);
};

View File

@@ -0,0 +1,97 @@
// qabstracttransition.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QAbstractTransition : public QObject
{
%TypeHeaderCode
#include <qabstracttransition.h>
%End
public:
enum TransitionType
{
ExternalTransition,
InternalTransition,
};
QAbstractTransition(QState *sourceState /TransferThis/ = 0);
virtual ~QAbstractTransition();
QState *sourceState() const;
QAbstractState *targetState() const;
void setTargetState(QAbstractState *target /KeepReference=0/);
QList<QAbstractState *> targetStates() const;
void setTargetStates(const QList<QAbstractState *> &targets /KeepReference=0/);
QAbstractTransition::TransitionType transitionType() const;
void setTransitionType(QAbstractTransition::TransitionType type);
QStateMachine *machine() const;
void addAnimation(QAbstractAnimation *animation /GetWrapper/);
%MethodCode
// We want to keep a reference to the animation but this is in addition to the
// existing ones and does not replace them - so we can't use /KeepReference/.
sipCpp->addAnimation(a0);
// Use the user object as a list of the references.
PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf);
if (!user)
{
user = PyList_New(0);
sipSetUserObject((sipSimpleWrapper *)sipSelf, user);
}
if (user)
PyList_Append(user, a0Wrapper);
%End
void removeAnimation(QAbstractAnimation *animation /GetWrapper/);
%MethodCode
// Discard the extra animation reference that we took in addAnimation().
sipCpp->removeAnimation(a0);
// Use the user object as a list of the references.
PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf);
if (user)
{
Py_ssize_t i = 0;
// Note that we deal with an object appearing in the list more than once.
while (i < PyList_Size(user))
if (PyList_GetItem(user, i) == a0Wrapper)
PyList_SetSlice(user, i, i + 1, NULL);
else
++i;
}
%End
QList<QAbstractAnimation *> animations() const;
signals:
void triggered();
void targetStateChanged();
void targetStatesChanged();
protected:
virtual bool eventTest(QEvent *event) = 0;
virtual void onTransition(QEvent *event) = 0;
virtual bool event(QEvent *e);
};

View File

@@ -0,0 +1,42 @@
// qeventtransition.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QEventTransition : public QAbstractTransition
{
%TypeHeaderCode
#include <qeventtransition.h>
%End
public:
QEventTransition(QState *sourceState /TransferThis/ = 0);
QEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, QState *sourceState /TransferThis/ = 0);
virtual ~QEventTransition();
QObject *eventSource() const;
void setEventSource(QObject *object /KeepReference=10/);
QEvent::Type eventType() const;
void setEventType(QEvent::Type type);
protected:
virtual bool eventTest(QEvent *event);
virtual void onTransition(QEvent *event);
virtual bool event(QEvent *e);
};

View File

@@ -0,0 +1,37 @@
// qfinalstate.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QFinalState : public QAbstractState
{
%TypeHeaderCode
#include <qfinalstate.h>
%End
public:
QFinalState(QState *parent /TransferThis/ = 0);
virtual ~QFinalState();
protected:
virtual void onEntry(QEvent *event);
virtual void onExit(QEvent *event);
virtual bool event(QEvent *e);
};

View File

@@ -0,0 +1,55 @@
// qhistorystate.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QHistoryState : public QAbstractState
{
%TypeHeaderCode
#include <qhistorystate.h>
%End
public:
enum HistoryType
{
ShallowHistory,
DeepHistory,
};
QHistoryState(QState *parent /TransferThis/ = 0);
QHistoryState(QHistoryState::HistoryType type, QState *parent /TransferThis/ = 0);
virtual ~QHistoryState();
QAbstractTransition *defaultTransition() const;
void setDefaultTransition(QAbstractTransition *transition);
QAbstractState *defaultState() const;
void setDefaultState(QAbstractState *state);
QHistoryState::HistoryType historyType() const;
void setHistoryType(QHistoryState::HistoryType type);
signals:
void defaultTransitionChanged();
void defaultStateChanged();
void historyTypeChanged();
protected:
virtual void onEntry(QEvent *event);
virtual void onExit(QEvent *event);
virtual bool event(QEvent *e);
};

View File

@@ -0,0 +1,41 @@
// qkeyeventtransition.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QKeyEventTransition : public QEventTransition
{
%TypeHeaderCode
#include <qkeyeventtransition.h>
%End
public:
QKeyEventTransition(QState *sourceState /TransferThis/ = 0);
QKeyEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, int key, QState *sourceState /TransferThis/ = 0);
virtual ~QKeyEventTransition();
int key() const;
void setKey(int key);
Qt::KeyboardModifiers modifierMask() const;
void setModifierMask(Qt::KeyboardModifiers modifiers);
protected:
virtual void onTransition(QEvent *event);
virtual bool eventTest(QEvent *event);
};

View File

@@ -0,0 +1,43 @@
// qmouseeventtransition.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QMouseEventTransition : public QEventTransition
{
%TypeHeaderCode
#include <qmouseeventtransition.h>
%End
public:
QMouseEventTransition(QState *sourceState /TransferThis/ = 0);
QMouseEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, Qt::MouseButton button, QState *sourceState /TransferThis/ = 0);
virtual ~QMouseEventTransition();
Qt::MouseButton button() const;
void setButton(Qt::MouseButton button);
Qt::KeyboardModifiers modifierMask() const;
void setModifierMask(Qt::KeyboardModifiers modifiers);
QPainterPath hitTestPath() const;
void setHitTestPath(const QPainterPath &path);
protected:
virtual void onTransition(QEvent *event);
virtual bool eventTest(QEvent *event);
};

View File

@@ -0,0 +1,62 @@
// qsignaltransition.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QSignalTransition : public QAbstractTransition
{
%TypeHeaderCode
#include <qsignaltransition.h>
%End
public:
QSignalTransition(QState *sourceState /TransferThis/ = 0);
QSignalTransition(SIP_PYOBJECT signal /TypeHint="pyqtBoundSignal"/, QState *sourceState /TransferThis/ = 0) /NoDerived/;
%MethodCode
QObject *sender;
QByteArray signal_signature;
if ((sipError = pyqt6_qtstatemachine_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone)
{
sipCpp = new sipQSignalTransition(a1);
sipCpp->setSenderObject(sender);
sipCpp->setSignal(signal_signature);
}
else if (sipError == sipErrorContinue)
{
sipError = sipBadCallableArg(0, a0);
}
%End
virtual ~QSignalTransition();
const QObject *senderObject() const;
void setSenderObject(const QObject *sender);
QByteArray signal() const;
void setSignal(const QByteArray &signal);
protected:
virtual bool eventTest(QEvent *event);
virtual void onTransition(QEvent *event);
virtual bool event(QEvent *e);
signals:
void senderObjectChanged();
void signalChanged();
};

View File

@@ -0,0 +1,100 @@
// qstate.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QState : public QAbstractState
{
%TypeHeaderCode
#include <qstate.h>
%End
public:
enum ChildMode
{
ExclusiveStates,
ParallelStates,
};
enum RestorePolicy
{
DontRestoreProperties,
RestoreProperties,
};
QState(QState *parent /TransferThis/ = 0);
QState(QState::ChildMode childMode, QState *parent /TransferThis/ = 0);
virtual ~QState();
QAbstractState *errorState() const;
void setErrorState(QAbstractState *state /KeepReference/);
void addTransition(QAbstractTransition *transition /Transfer/);
QSignalTransition *addTransition(SIP_PYOBJECT signal /TypeHint="pyqtBoundSignal"/, QAbstractState *target);
%MethodCode
QObject *sender;
QByteArray signal_signature;
if ((sipError = pyqt6_qtstatemachine_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone)
{
sipRes = sipCpp->addTransition(sender, signal_signature.constData(), a1);
}
else
{
sipError = sipBadCallableArg(0, a0);
}
%End
QAbstractTransition *addTransition(QAbstractState *target /Transfer/);
void removeTransition(QAbstractTransition *transition /TransferBack/);
QList<QAbstractTransition *> transitions() const;
QAbstractState *initialState() const;
void setInitialState(QAbstractState *state /KeepReference/);
QState::ChildMode childMode() const;
void setChildMode(QState::ChildMode mode);
void assignProperty(QObject *object, const char *name, const QVariant &value);
signals:
void finished();
void propertiesAssigned();
void childModeChanged();
void initialStateChanged();
void errorStateChanged();
protected:
virtual void onEntry(QEvent *event);
virtual void onExit(QEvent *event);
virtual bool event(QEvent *e);
};
%ModuleHeaderCode
// Imports from QtCore.
typedef sipErrorState (*pyqt6_qtstatemachine_get_pyqtsignal_parts_t)(PyObject *, QObject **, QByteArray &);
extern pyqt6_qtstatemachine_get_pyqtsignal_parts_t pyqt6_qtstatemachine_get_pyqtsignal_parts;
%End
%ModuleCode
// Imports from QtCore.
pyqt6_qtstatemachine_get_pyqtsignal_parts_t pyqt6_qtstatemachine_get_pyqtsignal_parts;
%End
%PostInitialisationCode
// Imports from QtCore.
pyqt6_qtstatemachine_get_pyqtsignal_parts = (pyqt6_qtstatemachine_get_pyqtsignal_parts_t)sipImportSymbol("pyqt6_get_pyqtsignal_parts");
Q_ASSERT(pyqt6_qtstatemachine_get_pyqtsignal_parts);
%End

View File

@@ -0,0 +1,144 @@
// qstatemachine.sip generated by MetaSIP
//
// This file is part of the QtStateMachine 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.
class QStateMachine : public QState
{
%TypeHeaderCode
#include <qstatemachine.h>
%End
public:
class SignalEvent : public QEvent /NoDefaultCtors/
{
%TypeHeaderCode
#include <qstatemachine.h>
%End
public:
virtual ~SignalEvent();
QObject *sender() const;
int signalIndex() const;
QList<QVariant> arguments() const;
};
class WrappedEvent : public QEvent /NoDefaultCtors/
{
%TypeHeaderCode
#include <qstatemachine.h>
%End
public:
virtual ~WrappedEvent();
QObject *object() const;
QEvent *event() const;
};
enum EventPriority
{
NormalPriority,
HighPriority,
};
enum Error
{
NoError,
NoInitialStateError,
NoDefaultStateInHistoryStateError,
NoCommonAncestorForTransitionError,
StateMachineChildModeSetToParallelError,
};
explicit QStateMachine(QObject *parent /TransferThis/ = 0);
QStateMachine(QState::ChildMode childMode, QObject *parent /TransferThis/ = 0);
virtual ~QStateMachine();
void addState(QAbstractState *state /Transfer/);
void removeState(QAbstractState *state /TransferBack/);
QStateMachine::Error error() const;
QString errorString() const;
void clearError();
bool isRunning() const;
bool isAnimated() const;
void setAnimated(bool enabled);
void addDefaultAnimation(QAbstractAnimation *animation /GetWrapper/);
%MethodCode
// We want to keep a reference to the animation but this is in addition to the
// existing ones and does not replace them - so we can't use /KeepReference/.
sipCpp->addDefaultAnimation(a0);
// Use the user object as a list of the references.
PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf);
if (!user)
{
user = PyList_New(0);
sipSetUserObject((sipSimpleWrapper *)sipSelf, user);
}
if (user)
PyList_Append(user, a0Wrapper);
%End
QList<QAbstractAnimation *> defaultAnimations() const;
void removeDefaultAnimation(QAbstractAnimation *animation /GetWrapper/);
%MethodCode
// Discard the extra animation reference that we took in addDefaultAnimation().
sipCpp->removeDefaultAnimation(a0);
// Use the user object as a list of the references.
PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf);
if (user)
{
Py_ssize_t i = 0;
// Note that we deal with an object appearing in the list more than once.
while (i < PyList_Size(user))
if (PyList_GetItem(user, i) == a0Wrapper)
PyList_SetSlice(user, i, i + 1, NULL);
else
++i;
}
%End
QState::RestorePolicy globalRestorePolicy() const;
void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy);
void postEvent(QEvent *event /Transfer/, QStateMachine::EventPriority priority = QStateMachine::NormalPriority);
int postDelayedEvent(QEvent *event /Transfer/, int delay);
bool cancelDelayedEvent(int id);
QSet<QAbstractState *> configuration() const;
virtual bool eventFilter(QObject *watched, QEvent *event);
public slots:
void start();
void stop();
void setRunning(bool running);
signals:
void started();
void stopped();
void runningChanged(bool running);
protected:
virtual void onEntry(QEvent *event);
virtual void onExit(QEvent *event);
virtual bool event(QEvent *e);
};