summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/tts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/tts.cpp')
-rw-r--r--rbutil/rbutilqt/tts.cpp159
1 files changed, 11 insertions, 148 deletions
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp
index be2a20a31e..da15497c14 100644
--- a/rbutil/rbutilqt/tts.cpp
+++ b/rbutil/rbutilqt/tts.cpp
@@ -19,7 +19,7 @@
19 19
20#include "tts.h" 20#include "tts.h"
21 21
22#include "browsedirtree.h" 22
23 23
24static QMap<QString,QString> ttsList; 24static QMap<QString,QString> ttsList;
25static QMap<QString,TTSBase*> ttsCache; 25static QMap<QString,TTSBase*> ttsCache;
@@ -82,7 +82,7 @@ QStringList getTTSList()
82/********************************************************************* 82/*********************************************************************
83* TTS Base 83* TTS Base
84**********************************************************************/ 84**********************************************************************/
85TTSBase::TTSBase(QWidget *parent): QDialog(parent) 85TTSBase::TTSBase(): QObject()
86{ 86{
87 87
88} 88}
@@ -90,7 +90,7 @@ TTSBase::TTSBase(QWidget *parent): QDialog(parent)
90/********************************************************************* 90/*********************************************************************
91* General TTS Exes 91* General TTS Exes
92**********************************************************************/ 92**********************************************************************/
93TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) 93TTSExes::TTSExes(QString name) : TTSBase()
94{ 94{
95 m_name = name; 95 m_name = name;
96 96
@@ -98,10 +98,6 @@ TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent)
98 m_TemplateMap["flite"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; 98 m_TemplateMap["flite"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\"";
99 m_TemplateMap["swift"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; 99 m_TemplateMap["swift"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\"";
100 100
101 ui.setupUi(this);
102 this->hide();
103 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
104 connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse()));
105} 101}
106 102
107bool TTSExes::start(QString *errStr) 103bool TTSExes::start(QString *errStr)
@@ -137,68 +133,11 @@ bool TTSExes::voice(QString text,QString wavfile)
137 133
138} 134}
139 135
140
141void TTSExes::reset()
142{
143 ui.ttspath->setText("");
144 ui.ttsoptions->setText("");
145}
146
147void TTSExes::showCfg() 136void TTSExes::showCfg()
148{ 137{
149 // try to get config from settings 138 TTSExesGui gui;
150 QString exepath =settings->ttsPath(m_name); 139 gui.setCfg(settings);
151 ui.ttsoptions->setText(settings->ttsOptions(m_name)); 140 gui.showCfg(m_name);
152
153 if(exepath == "")
154 {
155
156 //try autodetect tts
157#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
158 QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts);
159#elif defined(Q_OS_WIN)
160 QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts);
161#endif
162 qDebug() << path;
163 for(int i = 0; i < path.size(); i++)
164 {
165 QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name;
166#if defined(Q_OS_WIN)
167 executable += ".exe";
168 QStringList ex = executable.split("\"", QString::SkipEmptyParts);
169 executable = ex.join("");
170#endif
171 qDebug() << executable;
172 if(QFileInfo(executable).isExecutable())
173 {
174 exepath= QDir::toNativeSeparators(executable);
175 break;
176 }
177 }
178
179 }
180
181 ui.ttspath->setText(exepath);
182
183 //show dialog
184 this->exec();
185
186}
187
188void TTSExes::accept(void)
189{
190 //save settings in user config
191 settings->setTTSPath(m_name,ui.ttspath->text());
192 settings->setTTSOptions(m_name,ui.ttsoptions->text());
193 // sync settings
194 settings->sync();
195
196 this->close();
197}
198
199void TTSExes::reject(void)
200{
201 this->close();
202} 141}
203 142
204bool TTSExes::configOk() 143bool TTSExes::configOk()
@@ -211,36 +150,14 @@ bool TTSExes::configOk()
211 return false; 150 return false;
212} 151}
213 152
214void TTSExes::browse()
215{
216 BrowseDirtree browser(this);
217 browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
218
219 if(QFileInfo(ui.ttspath->text()).isDir())
220 {
221 browser.setDir(ui.ttspath->text());
222 }
223 if(browser.exec() == QDialog::Accepted)
224 {
225 qDebug() << browser.getSelected();
226 QString exe = browser.getSelected();
227 if(!QFileInfo(exe).isExecutable())
228 return;
229 ui.ttspath->setText(exe);
230 }
231}
232
233/********************************************************************* 153/*********************************************************************
234* TTS Sapi 154* TTS Sapi
235**********************************************************************/ 155**********************************************************************/
236TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) 156TTSSapi::TTSSapi() : TTSBase()
237{ 157{
238 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; 158 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
239 defaultLanguage ="english"; 159 defaultLanguage ="english";
240 ui.setupUi(this); 160
241 this->hide();
242 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
243 connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
244} 161}
245 162
246 163
@@ -329,14 +246,7 @@ QStringList TTSSapi::getVoiceList(QString language)
329 return result; 246 return result;
330} 247}
331 248
332void TTSSapi::updateVoices(QString language)
333{
334 QStringList Voices = getVoiceList(language);
335 ui.voicecombo->clear();
336 ui.voicecombo->addItems(Voices);
337
338 249
339}
340 250
341bool TTSSapi::voice(QString text,QString wavfile) 251bool TTSSapi::voice(QString text,QString wavfile)
342{ 252{
@@ -363,58 +273,11 @@ bool TTSSapi::stop()
363} 273}
364 274
365 275
366void TTSSapi::reset()
367{
368 ui.ttsoptions->setText("");
369 ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(defaultLanguage));
370}
371
372void TTSSapi::showCfg() 276void TTSSapi::showCfg()
373{ 277{
374 // try to get config from settings 278 TTSSapiGui gui(this);
375 ui.ttsoptions->setText(settings->ttsOptions("sapi")); 279 gui.setCfg(settings);
376 QString selLang = settings->ttsLang("sapi"); 280 gui.showCfg();
377 QString selVoice = settings->ttsVoice("sapi");
378 ui.speed->setValue(settings->ttsSpeed("sapi"));
379
380
381 // fill in language combobox
382 QStringList languages = settings->allLanguages();
383
384 languages.sort();
385 ui.languagecombo->clear();
386 ui.languagecombo->addItems(languages);
387
388 // set saved lang
389 ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang));
390
391 // fill in voice combobox
392 updateVoices(selLang);
393
394 // set saved lang
395 ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice));
396
397 //show dialog
398 this->exec();
399
400}
401
402void TTSSapi::accept(void)
403{
404 //save settings in user config
405 settings->setTTSOptions("sapi",ui.ttsoptions->text());
406 settings->setTTSLang("sapi",ui.languagecombo->currentText());
407 settings->setTTSVoice("sapi",ui.voicecombo->currentText());
408 settings->setTTSSpeed("sapi",ui.speed->value());
409 // sync settings
410 settings->sync();
411
412 this->close();
413}
414
415void TTSSapi::reject(void)
416{
417 this->close();
418} 281}
419 282
420bool TTSSapi::configOk() 283bool TTSSapi::configOk()