diff --git a/rbutil/rbutilqt/base/talkgenerator.cpp b/rbutil/rbutilqt/base/talkgenerator.cpp index 16e1b15184..a2ab578ade 100644 --- a/rbutil/rbutilqt/base/talkgenerator.cpp +++ b/rbutil/rbutilqt/base/talkgenerator.cpp @@ -35,12 +35,19 @@ TalkGenerator::Status TalkGenerator::process(QList* list,int wavtrimt bool warnings = false; //tts - emit logItem(tr("Starting TTS Engine"),LOGINFO); - m_tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString()); + emit logItem(tr("Starting TTS Engine"), LOGINFO); + m_tts = TTSBase::getTTS(this, RbSettings::value(RbSettings::Tts).toString()); + if(!m_tts) + { + qDebug() << "[TalkGenerator] getting the TTS object failed!"; + emit logItem(tr("Init of TTS engine failed"), LOGERROR); + emit done(true); + return eERROR; + } if(!m_tts->start(&errStr)) { emit logItem(errStr.trimmed(),LOGERROR); - emit logItem(tr("Init of TTS engine failed"),LOGERROR); + emit logItem(tr("Init of TTS engine failed"), LOGERROR); emit done(true); return eERROR; } @@ -278,6 +285,11 @@ void TalkGenerator::setLang(QString name) QString engine = RbSettings::value(RbSettings::Tts).toString(); TTSBase* tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString()); + if(!tts) + { + qDebug() << "[TalkGenerator] getting the TTS object failed!"; + return; + } QString vendor = tts->voiceVendor(); delete tts; diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 9dee3f40c6..eef1fcf4e1 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp @@ -418,6 +418,13 @@ void Config::updateTtsState(int index) QString ttsName = ui.comboTts->itemData(index).toString(); TTSBase* tts = TTSBase::getTTS(this,ttsName); + if(!tts) + { + QMessageBox::critical(this, tr("TTS error"), + tr("The selected TTS failed to initialize. You can't use this TTS.")); + return; + } + if(tts->configOk()) { ui.configTTSstatus->setText(tr("Configuration OK")); @@ -837,9 +844,14 @@ void Config::testTts() QString errstr; int index = ui.comboTts->currentIndex(); TTSBase* tts; - - ui.testTTS->setEnabled(false); tts = TTSBase::getTTS(this,ui.comboTts->itemData(index).toString()); + if(!tts) + { + QMessageBox::critical(this, tr("TTS error"), + tr("The selected TTS failed to initialize. You can't use this TTS.")); + return; + } + ui.testTTS->setEnabled(false); if(!tts->configOk()) { QMessageBox::warning(this,tr("TTS configuration invalid"), diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp index 8bd4e8d693..5b6ef16699 100644 --- a/rbutil/rbutilqt/createvoicewindow.cpp +++ b/rbutil/rbutilqt/createvoicewindow.cpp @@ -93,6 +93,12 @@ void CreateVoiceWindow::updateSettings(void) QString ttsName = RbSettings::value(RbSettings::Tts).toString(); TTSBase* tts = TTSBase::getTTS(this,ttsName); + if(!tts) + { + QMessageBox::critical(this, tr("TTS error"), + tr("The selected TTS failed to initialize. You can't use this TTS.")); + return; + } if(tts->configOk()) ui.labelTtsProfile->setText(tr("Engine: %1") .arg(TTSBase::getTTSName(ttsName))); diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp index 95aad659ed..9a723261b8 100644 --- a/rbutil/rbutilqt/installtalkwindow.cpp +++ b/rbutil/rbutilqt/installtalkwindow.cpp @@ -130,6 +130,12 @@ void InstallTalkWindow::updateSettings(void) QString mp = RbSettings::value(RbSettings::Mountpoint).toString(); QString ttsName = RbSettings::value(RbSettings::Tts).toString(); TTSBase* tts = TTSBase::getTTS(this,ttsName); + if(!tts) + { + QMessageBox::critical(this, tr("TTS error"), + tr("The selected TTS failed to initialize. You can't use this TTS.")); + return; + } if(tts->configOk()) ui.labelTtsProfile->setText(QString("%1") .arg(TTSBase::getTTSName(ttsName)));