Fix tray visibility and message reception issues
- 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:
@@ -0,0 +1,6 @@
|
||||
# Automatically generated configuration for PyQt6.QtTextToSpeech.
|
||||
|
||||
sip-version = "6.14.0"
|
||||
sip-abi-version = "13.8"
|
||||
module-tags = ["Qt_6_10_0", "Linux"]
|
||||
module-disabled-features = []
|
||||
@@ -0,0 +1,49 @@
|
||||
// QtTextToSpeechmod.sip generated by MetaSIP
|
||||
//
|
||||
// This file is part of the QtTextToSpeech 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.QtTextToSpeech, keyword_arguments="Optional", use_limited_api=True)
|
||||
|
||||
%Import QtCore/QtCoremod.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 qtexttospeech.sip
|
||||
%Include qvoice.sip
|
||||
@@ -0,0 +1,160 @@
|
||||
// qtexttospeech.sip generated by MetaSIP
|
||||
//
|
||||
// This file is part of the QtTextToSpeech 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 QTextToSpeech : public QObject
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qtexttospeech.h>
|
||||
%End
|
||||
|
||||
%ConvertToSubClassCode
|
||||
static struct class_graph {
|
||||
const char *name;
|
||||
sipTypeDef **type;
|
||||
int yes, no;
|
||||
} graph[] = {
|
||||
{sipName_QTextToSpeech, &sipType_QTextToSpeech, -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 class BoundaryHint
|
||||
{
|
||||
Default,
|
||||
Immediate,
|
||||
Word,
|
||||
Sentence,
|
||||
%If (Qt_6_6_0 -)
|
||||
Utterance,
|
||||
%End
|
||||
};
|
||||
|
||||
enum class ErrorReason
|
||||
{
|
||||
NoError,
|
||||
Initialization,
|
||||
Configuration,
|
||||
Input,
|
||||
Playback,
|
||||
};
|
||||
|
||||
enum State
|
||||
{
|
||||
Ready,
|
||||
Speaking,
|
||||
Paused,
|
||||
Error,
|
||||
%If (Qt_6_6_0 -)
|
||||
Synthesizing,
|
||||
%End
|
||||
};
|
||||
|
||||
QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent /TransferThis/ = 0);
|
||||
explicit QTextToSpeech(QObject *parent /TransferThis/ = 0);
|
||||
QTextToSpeech(const QString &engine, QObject *parent /TransferThis/ = 0);
|
||||
virtual ~QTextToSpeech();
|
||||
bool setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap());
|
||||
QString engine() const;
|
||||
QTextToSpeech::ErrorReason errorReason() const;
|
||||
QString errorString() const;
|
||||
QTextToSpeech::State state() const;
|
||||
QList<QLocale> availableLocales() const;
|
||||
QLocale locale() const;
|
||||
QVoice voice() const;
|
||||
QList<QVoice> availableVoices() const;
|
||||
double rate() const;
|
||||
double pitch() const;
|
||||
double volume() const;
|
||||
static QStringList availableEngines();
|
||||
|
||||
public slots:
|
||||
void say(const QString &text);
|
||||
void stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default);
|
||||
void pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default);
|
||||
void resume();
|
||||
void setLocale(const QLocale &locale);
|
||||
void setRate(double rate);
|
||||
void setPitch(double pitch);
|
||||
void setVolume(double volume);
|
||||
void setVoice(const QVoice &voice);
|
||||
|
||||
signals:
|
||||
void stateChanged(QTextToSpeech::State state);
|
||||
void localeChanged(const QLocale &locale);
|
||||
void rateChanged(double rate);
|
||||
void pitchChanged(double pitch);
|
||||
void volumeChanged(double volume);
|
||||
void voiceChanged(const QVoice &voice);
|
||||
void engineChanged(const QString &engine);
|
||||
void errorOccurred(QTextToSpeech::ErrorReason error, const QString &errorString);
|
||||
|
||||
public:
|
||||
%If (Qt_6_6_0 -)
|
||||
|
||||
enum class Capability
|
||||
{
|
||||
None,
|
||||
Speak,
|
||||
PauseResume,
|
||||
WordByWordProgress,
|
||||
Synthesize,
|
||||
};
|
||||
|
||||
%End
|
||||
%If (Qt_6_6_0 -)
|
||||
typedef QFlags<QTextToSpeech::Capability> Capabilities;
|
||||
%End
|
||||
%If (Qt_6_6_0 -)
|
||||
QTextToSpeech::Capabilities engineCapabilities() const;
|
||||
%End
|
||||
|
||||
public slots:
|
||||
%If (Qt_6_6_0 -)
|
||||
qsizetype enqueue(const QString &text);
|
||||
%End
|
||||
|
||||
signals:
|
||||
%If (Qt_6_6_0 -)
|
||||
void sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length);
|
||||
%End
|
||||
%If (Qt_6_6_0 -)
|
||||
void aboutToSynthesize(qsizetype id);
|
||||
%End
|
||||
};
|
||||
@@ -0,0 +1,64 @@
|
||||
// qvoice.sip generated by MetaSIP
|
||||
//
|
||||
// This file is part of the QtTextToSpeech 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 QVoice
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qvoice.h>
|
||||
%End
|
||||
|
||||
public:
|
||||
enum Gender
|
||||
{
|
||||
Male,
|
||||
Female,
|
||||
Unknown,
|
||||
};
|
||||
|
||||
enum Age
|
||||
{
|
||||
Child,
|
||||
Teenager,
|
||||
Adult,
|
||||
Senior,
|
||||
Other,
|
||||
};
|
||||
|
||||
QVoice();
|
||||
QVoice(const QVoice &other);
|
||||
~QVoice();
|
||||
QString name() const;
|
||||
QVoice::Gender gender() const;
|
||||
QVoice::Age age() const;
|
||||
static QString genderName(QVoice::Gender gender);
|
||||
static QString ageName(QVoice::Age age);
|
||||
void swap(QVoice &other);
|
||||
QLocale locale() const;
|
||||
%If (Qt_6_6_0 -)
|
||||
QLocale::Language language() const;
|
||||
%End
|
||||
};
|
||||
|
||||
bool operator==(const QVoice &lhs, const QVoice &rhs);
|
||||
bool operator!=(const QVoice &lhs, const QVoice &rhs);
|
||||
QDataStream &operator<<(QDataStream &str, const QVoice &voice);
|
||||
QDataStream &operator>>(QDataStream &str, QVoice &voice /Constrained/);
|
||||
Reference in New Issue
Block a user